Tatiak

Excel, Vba, Vbs


10 mars 2017

Cartes de pays

Pour répondre à des demandes de lecteurs, je développe en ce moment un outil permettant de dessiner n'importe quel pays du monde, utilisant les données OpenStreetMap.

Pour l'instant, ma méthode n'est pas pleinement 'automatique', elle n'est donc pas publiable en l'état.

En revanche, cette nouvelle méthode me permet aujourd'hui de répondre à un besoin de Sara07 avec cette carte du Liban coloriable selon 4 colonnes d'indicateurs et selon l'échelle de couleurs (à droite de la carte). Cette échelle peut être modifiée (valeurs mini, maxi et gamme de couleurs) à vos besoins.

A la suite de cette première carte, j'ajouterai celles répondant aux autres demandes.

Pierre

 

Téléchargement de : Liban.xlsm

Téléchargement de : Maroc.xlsm

Téléchargement de : Tunisie.xlsm

Posté par tatiak à 14:22 - Excel-Cartographie - Commentaires [1] - Permalien [#]

09 mars 2017

Distancier

Pour répondre à un besoin régulièrement exprimé, voici un "distancier" qui permet d'avoir des informations sur les trajets entre 2 villes.
La démo proposée ici utilise plusieurs méthodes :

  • les api de GoogleMap
  • le décodage json
  • le calcul de distance entre 2 points GPS


Voyons en détails :
2 api de GoogleMap sont utilisées :

  •  'api/distancematrix' pour obtenir un trajet GoogleMap en mode 'driving' (voiture)
  •  'api/geocode/' pour obtenir le positionnement GPS indiqué par GoogleMap


Dans cette démo, l'option '/json' est utilisée, ce qui va nous permettre de lire facilement l'info retournée par le serveur.

Pour décoder le json obtenu, une fonction 'oRecordSet' permet de placer cette info dans un 'objet' facilement lisible élément par élément pour affichage.

On aurait pu s'arrêter là, mais il est des cas où GoogleMap ne propose pas de trajet 'driving' (pour des distances longues notamment, par exemple un Paris-Pékin en voiture n'est pas pris en charge par GoogleMap )
Dans ces cas, il m'a semblé intéressant de calculer la distance "à vol d'oiseaux" entre ces 2 villes. Pour cela la 2ème api de GoogleMap nous retourne les coordonnées GPS via '/json' et un calcul simple nous donne la distance en ligne droite.

L'utilisation du fichier proposé est simple, il suffit de saisir les adresses de départ et d'arrivée en colonnes A et B (sur 2000 lignes possibles) pour obtenir :

  • la distance 'en ligne droite'
  • la distance du trajet GoogleMap proposé
  • la durée du trajet GoogleMap proposé
  • et le complément d'adresse lu : pour 'Brest' Google propose 'Brest, France'


Avec cette démo, il sera donc facile, par exemple à un professionnel itinérant (genre trajets à la journée de 200 à 400 km autour de sa base), de calculer ses frais de déplacement courants.

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


Téléchargement de : Distancier_json.xlsm

Posté par tatiak à 09:48 - Excel-Cartographie - Commentaires [0] - Permalien [#]

07 février 2017

Suivi des congés

Pour répondre à plusieurs demandes et remarques, voici une ré-écriture complète du code du fichier de suivi des congés avec plusieurs nouveautés :

  • gestion de plusieurs années ou 'période' (une 'période' = 12 mois pouvant toujours commencer à une date quelconque => mois de départ à indiquer en E2 feuille 'Config') jusqu'en 2067
  • cette gestion de plusieurs années avec le même fichier permet de reporter des congés non pris d'une année sur l'année suivante (cf possibilité d'incrémenter les droits à congés pour un salarié en particulier)
  • possibilité d'ajouter des 'commentaires' sur la fiche d'un salarié, sur la fiche bilan 'congés' d'un salarié, et sur les fiches de congés
  • possibilité d'indiquer des 1/2 journées de congés ou d'absences (genre je prends mon mercredi aprèm pour aller au spectacle de fin d'année de ma p'tite dernière)
  • possibilité d'ouvrir la fiche de saisie de congés par double-clic sur une ligne salarié du graphique : la date du congé indiquée par défaut (et modifiable) est alors la date du jour de la colonne
  • l'affichage est maintenant mensuel (sur 5 semaines à partir du 1er du mois choisi dans la liste)
  • l'enregistrement des informations se fait dans le fichier 'Congés_db.accdb' à part. Ceci permet :
    • une lecture/modification directement dans Access
    • de re-initialiser les données en effaçant (ou en déplaçant) le fichier 'Congés_db.accdb'
    • une sauvegarde facile des données
    • une mise à jour facile de l'appli par simple remplacement du fichier Congés_db_v*.*.xlsm par la nouvelle version, sans aucune re-saisie d'info (sauf onglet Config)


La pré-version jointe est toute 'neuve', elle contient peut être encore des bugs ou des cas non gérés, malgré mes nombreux tests. Merci de me les signaler pour correction.

Et laissez-moi vos commentaires!
Pierre

Téléchargement de : Congés_db_v0.13.zip

Edit du 12/02/2017 : Version v0.13 - corrections de bugs + améliorations diverses, Merci à Shakki et à JCGL!

Edit du 11/02/2017 : Version v0.10 - correction d'un bug

Posté par tatiak à 17:22 - Applications - Commentaires [4] - Permalien [#]

29 janvier 2017

Carte de FRANCE 'ULTIMATE'!

Pour répondre à mes nombreux lecteurs cherchant sur ce blog comment réaliser une carte de leur région ou leur département, voici l'outil 'ultime' pour générer des cartes de France à diverses échelles(régions/départements/cantons/communes)

L'idée est de proposer un outil capable de lire des données géographiques d'échelles diverses et de dessiner les contours correspondants en fonction des choix de l'utilisateur.

Ainsi, il est possible d'obtenir par simple clic :

  • une carte de France par régions / ou par départements
  • une carte d'une région par départements / ou par cantons / ou par communes
  • une carte d'un département par cantons / ou par communes


Le fichier utilise les données de https://data.opendatasoft.com, de ce fait à la première ouverture du fichier, il vous est proposé de télécharger 3 fichiers .csv

  • RQ 1 : si à l'ouverture du fichier, une fenêtre "Connexion à data.opendatasoft.com" s'ouvre, cliquez simplement sur 'Annuler', le téléchargement sera proposé quand même
  • RQ 2 : sans téléchargement, pas de traitement possible
  • RQ 3 : ces fichiers sont à priori sans risques (mais vous pouvez les scanner avec votre anti-virus si vous préférez)
  • RQ 4 : ces fichiers sont à coller dans le dossier 'CSV' créé à la première ouverture de l'appli


Une fois les téléchargements effectués et fichiers positionnés dans 'CSV', vous accédez aux différentes cartes :

  • soit en cliquant directement sur une région / un département
  • soit en choisissant une option du menu déroulant
  • soit en cliquant sur le bouton '<<retour' pour revenir à la carte affichée précédemment


A tout moment vous pouvez copier/coller l'onglet en cours dans un nouveau classeur, pour disposer d'une carte à utiliser pour votre besoin.

A noter :

  • Les 'anciennes' régions contenues dans les .csv sont automatiquement traduites par les nouveaux intitulés.
  • La vitesse de traitement dépend du nombre de formes à dessiner, le dessin d'une région divisée en communes peut être très long!


Cette appli est en version test (pour l'instant), merci de me donner votre avis et de m'indiquer si des bugs apparaissent.

Pierre

Téléchargement de : Carte_France_Ultimate_v0.2.zip

 

 

 

Posté par tatiak à 14:23 - Excel-Cartographie - Commentaires [0] - Permalien [#]

25 décembre 2016

Carte du Monde

Pour répondre à la demande d'Analexam, voici ma version de la carte du monde avec dessin des pays selon leurs contours GPS, principe déjà décrit précédemment sur ce blog.

Cette méthode permet de colorer des pays ou des régions du monde, mais elle permet aussi de positionner sur la carte des points d'intérêt et/ou même de dessiner des traces GPS (par exemple pour suivre l'avancée d'Armel Le Cléac'h dans le Vendée Globe)
Nb : les coordonnées GPS sont faciles à obtenir via GoogleMap

Pour les contours des pays de cette démo, j'ai utilisé le jeu de données au 1:110m du site  https://data.opendatasoft.com/explore/?sort=modified&refine.features=geo&q=earth (si besoin il est possible d'utiliser un autre jeu de données par simple copier/coller)

Pour modifier l'échelle de la carte, il suffit de modifier la valeur de la constante 'Echelle' (au début du module 'Graphe')

Pour la demande initiale d'Analexam, il est possible d'ajouter autant de listes utiles à la suite des listes personnalisées de l'onglet 'Base' (saisir un titre, puis cocher d'un X majuscule les pays à inclure dans la liste)

Bonnes fêtes à tous
Pierre

Téléchargement de : Monde.xlsm

Posté par tatiak à 10:57 - Excel-Cartographie - Commentaires [0] - Permalien [#]

21 novembre 2016

Gestion de clefs

Pour répondre à un besoin de Chatillon, voici une application Excel de gestion de clefs.

Cette appli est basée sur le principe de hiérarchisation Passe Général / Passes Partiels

A noter :

  • pour les colonnes PG et PP (passe général/passes partiels), il suffit de cliquer dans les bonnes cases pour mettre à jour la "combinaison"
  • un clic sur une entête de colonne => tri des info selon cette colonne
  • si besoin, les entêtes de colonnes sont modifiables directement sur la feuille "Data" (notamment les intitulés T à Z)


La saisie se fait soit directement sur la feuille "Data", soit par l'interface (bouton "Nouvelle clef") =>utilisez la touche Tab ou Entrée pour aller à la zone de saisie suivante, les croix PG/PP se positionnent par clic de souris.

Pierre

Téléchargement de Clefs_v1.2.xlsm

Posté par tatiak à 16:09 - Applications - Commentaires [4] - Permalien [#]

20 novembre 2016

ComboBox en cascade ou ComboBox liées

Un besoin récurent en VBA est de pouvoir obtenir une liste de choix en fonction d'un premier choix fait dans une première liste déroulante.

En fait ça revient à lister les éléments uniques d'une colonne en fonction d'une première sélection de lignes de données.

La méthode que j'utilise se base sur l'utilisation de tableaux et sur 2 fonctions génériques réutilisables dans tout projet (cf module Tblo) :

  • une fonction de sélection de lignes d'un tableau dont les valeurs d'une colonne correspondent à un premier choix (fonction Select_T de la démo)
  • une fonction de listing d'éléments uniques d'une colonne (fonction Combo_T de la démo)


Dès lors la mise en place du code devient simple :

  1. on charge les données dans une variable tableau (cf sub test_court)
  2. on alimente la première liste déroulante (1 seule ligne de code : dans la démo sub Userform_Initialize)
  3. à la suite d'un choix dans cette première liste, on filtre le tableau (sub filtre) et on alimente la deuxième liste déroulante (toujours par une seule ligne de code)


Dans la démo, une troisième liste est alimentée après le deuxième choix tout aussi simplement par une seule ligne de code, et on pourrait continuer 4ème, 5ème, ...

L'appel aux 2 fonctions principales est simple :

  • pour filtrer un tableau selon une valeur contenu dans une des colonnes (ex : filtrer les CP d'un département) :

Tableau = Select_T(Tableau, colonne, valeur)

  • pour lister les valeurs uniques d'une colonne du tableau (ex : liste des communes)

Liste = Combo_T(Tableau, "Entête_de_colonne")

A noter l'entête de colonne peut être remplacée par le n° de colonne du tableau, par exemple la ligne :

Liste = Combo_T(Tableau, 2) est valide également


Dans la démo, il y a 2 variantes pour initialiser le tableau :

  • une variante "courte" : si vos données commencent en ligne 2 avec des entêtes en ligne 1
  • une variante "longue" : pour le cas où les entêtes sont sur une autre ligne que la ligne 1 et/ou la première colonne de données n'est pas en colonne A


Voici donc une méthode simple pour alimenter vos ComboBox en cascade, le module "Tblo" étant réutilisable en l'état dans votre projet.

Si la méthode correspond à vos besoins, laissez-moi un commentaire!
Pierre

Téléchargement de Combo-liées-Tblo.xlsm

Posté par tatiak à 10:23 - Excel-Howto - Commentaires [0] - Permalien [#]

01 novembre 2016

Catalogue BD/Ouvrages/Livres

En réponse à GIBE59, amateur de BD, je propose aujourd'hui un catalogue d'ouvrages (BD ou autre) avec visuel posible de la couverture de chaque ouvrage.

Les images sont stockées dans le dossier "Img", la liaison entre ouvrage et image se fait par la référence ISBN (réf au format texte, on peut y mettre ce que l'on veut pourvu que la réf soit unique)

L'interface propose à minima une fonction de tri et une fonction de filtre, par exemple pour afficher les album de Tintin dans l'ordre chronologique on sélectionne : Collection commençant par "T" et tri par "date de parution".

Pour la démo seules quelques couvertures sont présentes.

Pour le côté technique Vba : un contrôle "datalist" perso et du sql comme moteur de sélection/tri

Pierre

Téléchargement de Catalogue_x8_v1.2.zip

Posté par tatiak à 11:12 - Excel-Base de Données - Commentaires [3] - Permalien [#]

18 octobre 2016

Carte géographique de répartition

CaptureSur une demande d'Etienne, voici une carte de France indiquant des répartitions par catégories.Le besoin était de réprésenter visuellement la répartition des employés de son entreprise en fonction de leurs domaines d'activité et de pouvoir établir un comparatif avec d'autres entreprises concurrentes. Cette représentation devait pouvoir se faire par région et/ou par villes.

La solution proposée, à partir d'une carte "points GPS" est constituée de :

  • Un premier onglet "Carte" + autant d'onglets que d'entreprises à "benchmarker" (onglets à ajouter en gardant la structure de l'onglet "Tatiak_Inc")
  • Pour chaque onglet "Entreprise" : saisir en ligne 1 les catégories d'activités et les chiffres (ne pas laisser de cellule vide, saisir 0).
  • Sur l'onglet "Carte", une liste déroulante "Entreprise" reprend la liste des onglets "Entreprises" créés au fur et à mesure. Au choix dans cette liste, les camemberts se dessinent en fonction des données.

La carte de répartition se fait soit selon régions, soit selon villes : pour cela, il suffit d'indiquer les coordonnées GPS de la ville concernée (pour obtenir les coordonnées d'une ville=>Googlemap) dans les onglets des entreprises.

 

Bien sûr, l'outil peut être utilisé pour toute autre répartition de données quelconques à comparer.

Et si ce ficier vous est utile, merci de me laisser votre commentaire!

Pierre

Téléchargement de France_Camemberts_v1.1.xlsm

Téléchargement de France_Camemberts_v1.2.xlsm

Téléchargement de France_Camemberts_v1.3c.xlsm

 

PS : Ajout du 31 oct 2016 : version v1.3c adaptée sous Office 2007 (suite à la remarque de Walden).

Au passage cette version est enrichie d'une coloration par région selon critère choisi parmi 5 possibilités

Posté par tatiak à 17:39 - Excel-Cartographie - Commentaires [4] - Permalien [#]

17 octobre 2016

Envoi de SMS par Excel via une Raspberry Pi

Pour répondre à une question de Hans, responsable d'un centre de secours et d'incendie, voici une application Excel permettant l'envoi d'un SMS à un de vos contacts ou à un groupe de contacts.

Avant d'ouvrir le fichier Excel, quelques prérequis sont nécessaire :

  • une Raspberry Pi configurée et connectée à un modem GSM  + carte SIM dédiée
  • l'application RaspiSMS installée sur votre Raspberry


A noter : inutile d'avoir un clavier+écran dédiés à la Raspi, on peut la piloter depuis une appli SSH comme PuTTY. En revanche quelques notions de Linux sont utiles pour installer votre Raspberry et les logiciels qui vont bien. L'installation du tout est très largement documentée (notamment en français), une recherche simple sur le net vous aidera à mener à bien l'affaire.

Le budget à prévoir reste très modeste :

  • Environ 50 € / 100 € pour le matériel,
  • 0 € pour les applications Raspberry (OpenSource).
  • un forfait téléphone mobile avec SMS illimités (il en existe à partir de 2€ mensuel)


Une fois votre Raspberry fonctionnelle (et connectée à votre box), vous pouvez ouvrir SMS_Raspi_v1.xx.xlsm.
Ce fichier est de structure simple :

  • le message à envoyer est à choisir dans la liste déroulante (les messages sont à saisir dans l'onglet "SMS"
  • la liste des contacts avec les n° de téléphone => colonnes A à F
  • autant de colonnes que de listes de diffusion => colonnes G et suivantes :
    • on peux renommer les listes comme on veux
    • on inscrit un contact dans une liste par un simple X dans la bonne colonne
    • le système permet ainsi de mettre une même personne dans plusieurs listes de diffusion
  • sur chaque colonne de liste => un bouton "Go" à cliquer pour envoyer le SMS.
  • pour créer une nouvelle liste, il suffit de copier/coller un bouton "Go" dans une nouvelle colonne vide et de cocher les contacts dans cette colonne, le code reconnait la colonne tout seul.
  • un envoi de SMS individuellement à une seule personne est possible par un double-clic sur ce contact (une confimation d'envoi vous sera demandée).
  • Possibilité de différer ou non l'envoi du message


Avant d'utiliser ce fichier, vous aurez saisi :

  • l'adresse IP de votre box : dans le code du module "SMS" à la ligne :
    • Public Const IP_BOX = "00.000.000.00"
  • vos identifants de connexion au logiciel RaspiSMS à la ligne :
    • Public Const IDENTIFIANT = "?email=xxxxxx@sdis.fr&password=yyyyyy"


Vous voici donc en mesure d'envoyer des SMS depuis Excel à vos contacts ou groupe de contacts de façon simple et rapide avec cette solution low-cost.

Ce code et cette méthode est facilement intégrable dans une appli Excel plus complète qui intègre une gestion de contacts.

Si cette appli ou ce code vous est utile, n'hésitez pas à me laisser votre commentaire!

Pierre

Edit du 20 oct 2016 : ajout d'un historique des SMS envoyés (cf fichier SMS_historic.txt)

Edit du 5 nov 2016 : améliorations diverses

 

Téléchargement de : SMS_Raspi_v1.13.xlsm

Posté par tatiak à 09:36 - Excel-Base de Données - Commentaires [0] - Permalien [#]