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!
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!
Pour les spécialistes des GIS, voici un double convertisseur à double-sens:
et aussi :
et aussi (juste pour le fun) :
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
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
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
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 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.
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 :
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!
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
Radial Bar Chart ou Diagramme à Barres Radial sur Excel
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!
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 :
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