Tatiak

22 mars 2021

Windsurf!

Loftsails Switchblade 7.3 - Patrik Sl 110 - Select S1-evo 37
Thermique timide d'environ 14 à 15 kts de W-SW
Le vent est remonté très tard en fin d'aprèm

Merci à Bernard pour la prise de vues et son montage vidéo!

Publicité
13 février 2020

Conversion Lambert 93 WGS84 UTM

Pour les spécialistes des GIS, voici un double convertisseur à double-sens:

  • WGS84 vers Lambert93
  • Lambert93 vers WGS84
  • WGS84 vers CC42àCC50
  • CC42àCC50 vers WGS84

et aussi :

  • WGS84 vers UTM
  • UTM vers WGS84

et aussi (juste pour le fun) :

  • DMS vers DD

Nb : la conversion WGS84 vers Lambert II étendu est présente mais peut être pas très fiable ...

Si ce convertisseur sous est utile, n'oubliez-pas de me laisser un commentaire!

Merci à Jacques pour la demande WGS84<=>UTM

Pierre

 

* Edit du 20/06/2022 21/06/2022 22/06/2022 : ajout de la conversion Wgs84 vers CC42 à CC50 (et inversement - maj 19h) pour Valentin. + Amélioration du code du 22/06

Téléchargement de : Lambert_Wgs84_UTM_Lb2e_CC_220622.xlsm

 

* Edit du 09/03/2021 : amélioration et accélération du code pour accepter les longues listes  à convertir (Merci à Mathilde)

Téléchargement de : Wgs84_to_Lambert93_to_Wgs84_mars2021.xlsm

Téléchargement de : Lambert93_Wgs84_UTM.xlsm

Téléchargement de : Lambert93_Wgs84_UTM_Lettre.xlsm

 

Edit du 19/03/2020 (confinement J3) : pour les 3 fichiers => correction d'un défaut mineur (signalement de Jacques)

Edit du 18/03/2020 (confinement J2) : version alternative incluant la lettre de la zone UTM (exemple : 31-U)

Edit du 17/03/2020 15h20 : version corrigée pour prendre en compte l'hémisphère Sud

19 octobre 2019

Interroger une base MySql depuis Excel (VBA) - 2/2

Suite de l'article sur le couplage Excel<=> Base MySql =>

Et pour répondre à "Dorian" voici quelques notions à connaitre pour rédiger les requêtes au "format VBA".


Pour l'exemple, imaginons une base simple avec une seule table et les quelques champs suivants:
* id : nombre entier
* nom du client : texte
* date de visite : date
* quote part : nombre réel


1/ Les guillemets :

Pour une requête classique, les noms des champs doivent être entourés de guillemets-du-7 (Alt-Gr 7 2fois puis backspace) soit par exemple pour un Select :

en Sql => SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable
en VBA => requete = "SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable"
(avec Dim requete As string)

Pour ajouter une clause WHERE avec une variable var, c'est selon le type de champs :
* champs numérique :
en Sql => SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable WHERE `Id` = var
en VBA => requete = "SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable WHERE `Id` = " & var
(avec Dim var As Integer)

* champs texte :
en Sql => SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable WHERE `nom du client` = var
en VBA => requete = "SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable WHERE `nom du client` = " & "'" & var & "'"
(avec Dim var As String) ici la valeur texte var est entourée de guillemets-simples-du-4

* Cas particulier de la variable contenant elle même un guillemets-simples-du-4 (ou apostrophe) exemple (du navigateur) var="Armel Le Cleac'h" :
Dans ce cas il sera nécessaire de doubler ce guillemets-simples-du-4 soit var="Armel Le Cleac''h" (2 guillemets-du-4, on parle ici de caractère d'échappement)
Pour systématiser le traitement, autant 'échapper' à la volée les valeurs textes avec une fonction simple (et qui ajoute aussi des ' avant et après):
exemple :

Function Esc(S As String) As String
    Esc = "'" & Replace(S, "'", "''") & "'"
End Function

ce qui conduit à écrire la requête :
en VBA => requete = "SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable WHERE `nom du client` = " & Esc(var)

Ok, donc pas de guillemet pour les valeurs numériques, c'est cool! ... oui, mais ...


2/ Les valeurs numériques (non entières) :

Le format français courant de la marque de décimale est une virgule par exemple `quote part`= 0,25
Mais pour le MySql cette valeur est stockée avec un point `quote part`= 0.25
Il est donc nécessaire de modifier à la volée la virgule par un point, par exemple avec une autre fonction simple :

Function Esc_num(S As String) As String
    If S = "" Then S = "0"
    Esc_num = Replace(S, ",", ".")
End Function

Un exemple d'appel (var étant par exemple var=sheets("Feuil1").range("A1").text) :
en VBA => requete = "SELECT `Id`, `nom du client`, `date de visite`, `quote part` FROM LaTable WHERE `quote part` = " & Esc_num(var)


3/ Les valeurs dates :

MySql stocke les valeurs date au format Iso, soit 2019-06-30 pour le 30 juin 2019
Ici encore, il est donc nécéssaire de reformater la chaine 30/06/2019 par une tite fonction simplette :

Function datefr_vers_iso(datefr As String) As String
Dim Dt As Variant
    Dt = Split(datefr, "/")
    datefr_vers_iso = "'" & Dt(2) & "-" & Dt(1) & "-" & Dt(0) & "'"
End Function

Un exemple d'appel (var étant par exemple var=sheets("Feuil1").range("A1").text contenant une date) :
en VBA => requete = "UPDATE LaTable SET `date de visite` = " & datefr_vers_iso(var) & " WHERE `Id` =" & 2

(Ce qui veux dire qu'à la lecture, il faudra une fonction inverse : Function iso_vers_datefr)


Pour finir, un p'tit rappel de quelques conventions d'usage :
* les mot clé du Sql sont à écrire en majuscule SELECT FROM WHERE DISTINCT, ...
* utiliser plutôt plusieurs lignes (pour la lisibilité), exemple :

   Requete = "SELECT `P.id`, `P.Date`, `P.Titre`, `P.Nom`, `P.Prenom` , `R.Recette` FROM Publics AS P " & _
                " INNER JOIN Ecritures AS R ON `P.Id`=`R.Id`" & _
                " WHERE LEFT(`P.Nom`,1)='" & Critere & "' " & _
                " ORDER BY `P.Titre` ASC, `P.Nom` ASC"

/!\ ATTENTION : dans cette dernière requête la fonction LEFT est celle du SQL et non celle du VBA!!
(=> toutes les fonctions du VBA ne sont pas reconnues par le Sql, se référer à sql.sh)


Voilà, avec ça on peut commencer à rédiger sérieusement ses requêtes depuis Excel.

Si cet article vous est utile, laissez moi un commentaire!
Pierre

1 février 2019

Graphique Pizza

Capture_Pizza

Pour répondre à NiboTD et à 78Chris, voici une démo de graphique "Pizza"

Ce graphique accepte un nombre quelconque de critères notés avec des valeurs entières. Ici dans l'exemple notation de 0 à 10, et on pourrait noter de 0 à 12 ou de 0 à 15, ou autre ...

Le principe général est assez simple.

La 'cible' est constituée de msoShapeBlockArc concentriques dessinées de l'intérieur vers l'extérieur. Ces shapes sont grisées et en transparence pour faire apparaitre les "graduations", et nommées pour pouvoir facilement les repérer ensuite.

Une fois la cible dessinée, pour chaque indicateur, il suffit de repérer la part de pizza correspondante, de la mettre au premier plan et de la colorer en diminuant sa transparence.

C'est une simple démo avec des données totalement fictives. Les couleurs sont entièrement configurables.

 

Si cette démo vous est utile, laissez-moi un commentaire!

Pierre

Téléchargement de : Graphique_Pizza_v1.0.xlsm

 

Ajout du 28/02/2022 : pour Mthlcrx ajout d'une colonne pour visualisation "Avant" et "Après"

Téléchargement de : Graphique_Pizza_v1.1.xlsm

 

Ajout du 01/03/2022 : pour essayer de répondre à le demande de Mthlcrx, ajout d'un graphique radar sur la Pizza

Téléchargement de : Graphique_Pizza_v1.2.xlsm

Spécifique pour Mthlcrx : Graphique_Pizza_v1.3.xlsm

Capture d’écran 2022-03-01 094225

30 décembre 2018

Bretagne

30122018

Publicité
20 octobre 2018

Graphique Radar

Capture

Capture

Pour répondre à un besoin de Bernard, voici un outil pour réaliser des graphiques en radar sous Excel.
Son besoin était de représenter un certain nombre d'indicateurs/critères sur une échelle de 12 échelons en colorant certaines zones du radar.

Ce type de graphique peut être utile dans différents domaines (démarche qualité, évaluation de compétences, comparatif technique, ...) et complète les possibilités présentes dans Excel.

Voici donc un outil qui permet un nombre quelconque d'indicateurs/critères en définissant vos échelons (on peut en ajouter ou en ôter comme on veut) et vos codes couleurs (en colorant directement la case des cotations).

L'utilisation est la plus simple possible. On saisit d'abord les indicateurs en colonne A et les échelons et couleurs en C et D (à partir de la ligne 26).

Ensuite vos données sont à saisir dans l'onglet "Data", pour chaque ligne une "référence" à représenter.

Par la suite, il suffit de choisir un item dans la liste déroulante (sous le titre) pour obtenir le graphique.

En cours d'utilisation :

  • si une cotation est à revoir pour l'item affiché, il suffit de modifier cette cotation directement dans la colonne B de l'onglet "Radar". Cette information sera automatiquement enregistrée dans la base.
  • si un nouveau critère est nécessaire, il suffit de l'ajouter à la liste, le graphique se redessinera en conséquence


Si besoin les 2 boutons "Dessin ..." pourront être utilisés pour rafraichir le graphique.

Si cet outil vous est utile, n'hésitez pas à me laisser un commentaire

(A noter : les indications présentes dans le fichier sont purement fantaisistes)

 

 

Téléchargement de : Graphique_radar_v1.2.xlsm

Téléchargement de : Graphique_radar_multi_v1.2.xlsm

Téléchargement de : Graphique_radar_Ailerons.xlsm

Téléchargement de : Graphique_radar_2courbes_export.xlsm_

 

* Edit du 25/04/2022 : Ajout d'une fonction export du graphe pour Denis : le bouton crée un gif placé dans le dossier du fichier. A importer secondairement par exemple sur un doc word ou autre

* Edit du 02/04/2019 : En réponse à Vanessa, ajout version "multi" pour afficher de 1 à 3 courbes différentes. A noter : la couleur des lignes reprend celle de l'entête.

1 juillet 2018

Relevé d'activité

Pour répondre à Green_Lemon, voici un planning de relevé d'activité.

La demande concerne "un planning de gestion d'entreprise afin de comptabiliser le nombre d'heures consacrés chez les clients pour un nombre X d'employés".

Une contrainte est de proposer une vision mensuelle et une vision hebdomadaire de l'activité en synchronisant ces 2 plannings.

La demande précise aussi que plusieurs salariés peuvent intervenir chez un même client.

Et si j'étais le manager de cette équipe, je chercherai à détailler l'activité pour chaque client pour le mois, par exemple pour faire la facturation au client.

Pour répondre à cette question, voici un planning avec 4 onglets :

  •  un onglet "Data", pour enregistrer les info (nb cet onglet peut être masqué)
  •  un onglet "Mensuel", de saisie
  •  un onglet "Hebdo", de saisie
  •  un onglet "Bilan Clients", listing mensuel par client (en D), totalisant  le nb d'heures à facturer (en E), détaillant les salariés qui sont intervenus(en F) et détaillant pour chaque client les dates/heures/intervenants (en G). Pour cette dernière liste, agrandir la barre de formules pour voir l'ensemble des lignes (cf exemple pour le Client2 en juin 2018)


Pour tous les onglets, la synchronisation des info se fait soit par sélection de l'onglet soit après changement de date (année et mois ou nunéro de semaine)

Avec ce planning, vous pourrez donc suivre l'activité de vos salariés et faire vos facturations.

Si cette démo vous est utile, n'hésitez pas à me laisser votre commentaire!

 

Téléchargement de : Planning_Greg.xlsm

7 avril 2018

Export données Excel vers ics

Pour essayer de répondre à une question de Lionel (pseudo arthour973) voici une démo de création d'une fichier .ics à partir d'un fichier Excel.

L'idée de cette démo est de pouvoir générer un fichier lisible par un grand nombre d'agendas ('Calendrier' de Windows, 'Outlook' ou 'Google Agenda' par exemple)

Une fois le fichier au format .ics généré, il suffit par exemple de l'envoyer par mail à un destinataire pour qu'il l'importe dans son agenda.

Pour l'import, par exemple avec l'appli 'Calendrier' de Windows il suffit de double-cliquer sur le fichier .ics, et de choisir l'option 'Ajouter au calendrier'

Voici donc une méthode qui peut servir à caller des rendez-vous avec plusieurs participants.

Si cette démo vous est utile, n'hésitez pas à me laisser votre commentaire!

 

Téléchargement de : Export_ics.xlsm

 

Edit du 28 oct 2018 : Pour répondre à la demande d'Hervax, voici la démarche inverse, une démo d'import d'un fichier .ics vers Excel

Téléchargement de : Import_ics.xlsm

 

Edit du 29 mai 2019 : Grâce à l'aide de Sébastien, voici 2 fonctions supplémentaires permettant de coder/décoder un texte en UTF8 (fonctions à intégrer dans le code en cas de besoin)

Téléchargement de : UTF8_Encode_Decode.txt

 

Edit du 02 oct 2019 : En réponse au MP de Christian, voici une version 1.3 d'export_ics indépendante des fusaux horaires (tous les horaires inscrits dans un ics sont en UTC quelque soit votre décalage horaire par rapport au UTC/GMT)

Téléchargement de : Export_ics_v1.3.zip

 

Edit du 2 janv 2020 : En réponse à Denis, voici une version 1.4 pour les rendez-vous à la journée. Il suffit de ne rien saisir dans les 2 colonnes horaires C et E, voir exemple. Version à tester ...

Téléchargement de : Export_ics_v1.4.zip

 

Edit du 10/07/2022 : En réponse à Claire, voici une version 1.5 qui devrait être compatible 64bits et 32 bits

Téléchargement de : Export_ics_v1.5.xslm

 

Edit du 21/10/2022 : En réponse à Pimlico, voici une version 1.6 version 1.6b qui tient compte de l'heure d'hiver

Téléchargement de : Export_ics_v1.6b.zip

 

Edit du 03/11/2022 : En réponse à Thierry, voici une version 1.5 version indiv_v1.6b qui exporte chaque ligne individuellement (+modif pour heure d'hiver)

Téléchargement de : Export_ics_indiv_v1.6b.zip

 

 

4 novembre 2017

Radial Bar Chart sur Excel

Radial Bar Chart ou Diagramme à Barres Radial sur Excel

Radial_Bar


Pour aggrémenter vos rapports avec un autre style de graphique qu'un histogramme classique, vous pouvez faire appel à un diagramme à barres radial.
L'idée est d'utiliser un système de coordonnées polaires pour représenter vos données.

Comme je n'ai pas trouvé sur le net d'outil pour dessiner ce type de diagramme, j'ai fabriqué le mien en utilisant Excel.

Dans le fichier à télécharger, vous trouverez donc une liste d'indicateurs avec leurs scores respectifs et des codes couleurs. Un clic sur le bouton met à jour le graphique à droite des données.

Il est possible d'ajouter ou d'ôter des lignes d'indicateurs, et de modifier les codes couleurs pour dessiner votre graphique.

Si cet outil vous est utile, laissez-moi vos commentaires!

 

Téléchargement de : Radial_Bar_v1.2.xlsm

4 avril 2017

"PILOTER" WORD DEPUIS EXCEL - 4ème PARTIE (4/4)

Excel n'est pas adapté pour faire de la mise en page comme avec Word. Pour générer depuis Excel des rapports, des factures, des contrats ou autres documents, j'utilisais jusqu'à présent la méthode de remplissage d'un modèle déjà mis en page (décrite précédemment dans d'autres articles).

Seulement voilà quand on oublie de transmettre le modèle Word avec le fichier Excel, l'export des données vers Word est totalement inopérant!

La solution est de créer de zéro votre document Word depuis Excel. Votre xlsm sera alors complètement autonome.

Mieux qu'un long descriptif, je vous renvoie directement au code commenté de la démo jointe. Dans ce code, diverses opérations sont menées, dans l'ordre :

  • création d'un nouveau document
  • ajustement des marges
  • ajout d'un logo
  • ajout d'un titre
  • ajout d'un signet (en cas de besoin ultérieur)
  • ajout d'un ou de plusieurs paragraphes (selon choix fait sur la feuille Excel)
  • ajout d'un saut de page
  • ajout d'un tableau
  • ajustement des colonnes du tableau
  • remplissage de l'entête du tableau
  • remplissage (et ajout) des lignes
  • calcul d'un total d'une des colonne du tableau
  • inscription du total calculé à la dernière ligne du tableau
  • ajout de la date et de l'heure de la création du document
  • enregistrement du document dans "Mes Documents" sous-dossier "Word" (qui se crée si besoin)


A chacune de ces opérations, on règle la police, le soulignement, l'alignement, l'espacement, ... bref on fait la mise en page qui rendra votre doc parfaitement lisible.
Ceci n'est pas exhaustif des possibilités offertes par le VBA, pour d'autres fonctions dites-moi votre besoin et je vous indiquerai le code à ajouter.

Cette démo est fonctionnelle avec Office 2016 (pas testée avec d'autres versions)

Bon téléchargement et laissez-moi vos commentaires!
Pierre

Téléchargement de : Créer_Doc_Word.xlsm

Téléchargement de : Créer_Doc_Word_20avril21.xlsm

Téléchargement de : Créer_Doc_Word_21avril21.xlsm

 Téléchargement de : Démo_modif_tableau_3mai2021.xlsm

 

* Edit du 03/05/2021 : Pour répondre  à Floflo, voici une démo de modification/création d'un tableau dans un doc

* Edit du 21/04/2021 : Pour répondre à Lilie, voici une démo pour positionner l'adresse au mieux dans une zone de texte

* Edit du 20/04/2021 : Pour répondre à Lilie, voici une démo pour positionner des images au mieux + diverses méthodes

* Edit du 02/06/2018 : Pour répondre à l'idée de 78Chris, voici du code pour appliquer un style pour permettre l'utilisation ultérieure de sommaire, en-têtes dynamiques, renvois, ...
 
La deuxième partie du code formate le style et n'est donc à écrire qu'une seule fois dans le code complet
' Ajoute un  titre UTILISANT UN "STYLE"
.Paragraphs.Add
With .Paragraphs(.Paragraphs.Count - 1).Range
    .Text = "2ème TITRE DU DOCUMENT AVEC STYLE"
    .Style = "Titre 1"
    .InsertParagraphAfter()
    
    ' Formatage du style "Titre 1" pour utilisation ultérieure
    .Style.Font.Bold = True
    .Style.Font.Underline = True
    .Style.Font.Color = RGB(150, 150, 150)
    .Style.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

Code à placer dans le bloc With WordDoc de la démo

 

* Ajout du 23/12/2020 : Pour répondre à la question de Dhardy : pour formater une partie de texte contenu dans un paragraphe ou dans une cellule d'un tableau word, on ajoute une procédure du genre "Formatage" comme ci-dessous avec les paramètres souhaités (couleur, taille, ...) et à chaque remplissage d'un paragraphe (ou d'une des cellules) on fait un appel du genre :
.cell(lig, col).Range.Text = LeTexteKiVaBien
Formatage WordDoc, "o" ' pour formater le 'o' et/ou
Formatage WordDoc, "2" ' pour formater le '2' contenu dans LeTexteKiVaBien

Sub Formatage(Wd As Object, S As String)
    With Wd.Content.Find
        .Text = S
        .Forward = False
        .Execute
        If .Found = True Then
            .Parent.Font.Name = "Arial"
            .Parent.Font.Size = 14
            .Parent.Font.Color = RGB(255, 0, 0) ' rouge
            .Parent.Font.Bold = True        ' en gras
            .Parent.Underline = 1 ' wdUnderlineSingle
        End If
    End With
End Sub

Publicité
1 2 3 > >>
Publicité