Tatiak

Excel, Vba, Vbs


10 janvier 2022

Distance entre 2 adresses - FRANCE

Pour essayer de répondre à la demande de Sams, voici un fichier qui permet de récupérer la distance et la durée d'un trajet en voiture entre 2 adresses en France.
La méthode utilisée ici interroge 2 sites en OpenData : la base d'adresses en France GOUV.fr et le site de l'IGN.fr
Ce site de l'IGN propose via une API d'indiquer la distance et la durée entre 2 points GPS en voiture.
Mais pour cela il faut disposer des coordonnées GPS des 2 points.
Pour ce faire on interroge alors d'abord la base d'adresses de Gouv.fr qui indique ces coordonnées à partir d'une adresse.
Dans le fichier, on a donc 2 adresses à saisir (en A-E et G-K) pour lire les longitudes/latitudes à partir desquelles l'IGN indique la distance et la durée.

Limites de la méthode :

  •  Ici la base d'adresses gouv.fr indique uniquement et seulement les adresses en France
  •  Le temps de traitement correspond essentiellement au temps de réponse des 2 sites et pour un trajet il y a 3 requêtes à lancer (2 points GPS + distance IGN). Si vous avez de nombreuses lignes à traiter, je recommande donc d'indiquer en E et K les points déjà connus (par des recherches antérieures par exemple) le temps de traitement sera alors largement accéléré.


Et comme toujours, si l'appli correspond à vos besoins, n'oubliez-pas de me laisser un commentaire !

 

Téléchargement de : Distance_entre_2_adresses.xlsm

Posté par tatiak à 10:05 - Excel-Cartographie - Commentaires [16] - Permalien [#]

03 janvier 2022

RESERVATION DE CHAMBRES D'HÔTES - EVOLUTION 2022

Capture d’écran 2022-01-03 142039Vous êtes nombreux à vous intéresser à mon fichier RESAHOTEL.
Grâce à vos nombreux commentaires les fonctionnalités ont évolué au fil du temps.
Pour pouvoir encore aller de l'avant, je vous propose en ce début d'année la version RESAHOTEL_EVO.xlsm avec des améliorations en nombre, une nouvelle interface, centré sur un fichier client qui se constitue au fil des saisies.

Et pour répondre à la demande de Loren : chaque réservation peut être couplée à une couleur au choix (via clic sur case "Code Couleur")

Capture d’écran 2022-01-03 142147


Et toujours :
* dédié à la planification des réservations d'une structure type "Maison d'hôtes" (non soumise à la TVA)
* libre d'utilisation (sous votre propre responsabilité), code ouvert
* pour PC sous Windows avec Excel récent 32 bits (non compatible Mac)
(rq : anciennes données non compatibles avec cette nouvelle version, car restructuration de fond des bases)

/!\ Ce fichier est à utiliser sous votre propre responsabilité. Restez vigilants, il y a peut être encore des défauts à corriger ...

Et comme toujours, si l'appli correspond à vos besoins, n'oubliez-pas de me laisser un commentaire !

 

Mise à jour : 20/04/2022

Téléchargement de : RESAHOTEL_EVO_030.zip

Notice_express_EVO.txt

Demo_saisie.gif

Demo_couleur.gif

Notes_de_versions.txt

/!\ A noter : les versions avant la 024 ne sont pas fiables /!\

 

Nb : modification du modèle de Facture/devis depuis la version 027. Si vous avez sauvegardé votre modèle personnalisé, il vous suffit d'y ajouter 2 lignes au tableau des totaux avant la ligne "Restant à régler"

Posté par tatiak à 14:44 - Applications - Commentaires [50] - Permalien [#]

10 juillet 2021

Le format Date dans Excel à l'international.

En fonction de la configuration de langue de Windows et d'Office, Excel propose divers formats de date en fonction des habitudes du pays d'utilisation.
Ce qui peux poser problème dans vos développements pour l'affichage de date ou le calcul de durées par exemple. En effet si la date s'affiche à l'américaine "mm-dd-yyyy" et que votre code attend une date au format Fr "jj/mm/aaaa", c'est le bug assuré.
Pour se prémunir de cet effet, 2 détails sont à considérer :
1/ le séparateur : slash ou tiret (/ ou -)
2/ L'ordre jour, mois, année

Pour le séparateur, c'est simple il est repéré par l'instruction : Application.International(xlDateSeparator)
L'ordre est indiqué par : Application.International(xlDateOrder)

Avec ces 2 instructions on peut donc afficher une date dans un format toujours adapté au pays avec la fonction suivante :

Function DtFrmt() As String
Dim Sp As String

    Sp = Application.International(xlDateSeparator)
    Select Case Application.International(xlDateOrder)
        Case 0: DtFrmt = "mm" & Sp & "dd" & Sp & "yyyy" ' 0 = month-day-year
        Case 1: DtFrmt = "dd" & Sp & "mm" & Sp & "yyyy" ' 1 = day-month-year
        Case 2: DtFrmt = "yyyy" & Sp & "mm" & Sp & "dd" ' 2 = year-month-day
    End Select
End Function
L'appel est simple, par exemple pour la date du jour : Me.Textbox1.Value = Format(Date, DtFrmt)

Ensuite pour un traitement quelconque sur des dates (un calcul de durée par exemple) il est simple de faire l'opération inverse quelque soit son format en repérant le séparateur et l'ordre de la même façon. Voici ma version d'une fonction de décodage :

Function ttk_Date(Sdt As Variant) As Double
Dim T As Variant

    If Sdt = "" Then
        ttk_Date = CDbl(Date)
    Else
        If IsNumeric(Sdt) Then
            ttk_Date = CDbl(Sdt)
        Else
            T = Split(Sdt, Application.International(xlDateSeparator))
            Select Case Application.International(xlDateOrder)
                Case 0: ttk_Date = DateSerial(CInt(T(2)), CInt(T(0)), CInt(T(1))) ' 0 = month-day-year
                Case 1: ttk_Date = DateSerial(CInt(T(2)), CInt(T(1)), CInt(T(0))) ' 1 = day-month-year
                Case 2: ttk_Date = DateSerial(CInt(T(0)), CInt(T(1)), CInt(T(2))) ' 2 = year-month-day
            End Select
        End If
    End If
End Function
L'appel étant du genre : Debut = ttk_Date(Me.TextBox1.value)
Le retour étant un entier double, il est facile de faire le calcul dont vous avez besoin par la suite.

Ainsi plus besoin de multiplier les versions de vos appli FR/US/Quebec/... , les dates seront toujours dans le bon format avec des calculs justes, et vous pourrez partager vos appli à l'international!

Pierre

Pour aller plus loin : https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.international


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

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!

Posté par tatiak à 11:43 - Windsurf - Commentaires [0] - Permalien [#]

28 février 2021

Dessin de cartes géographiques sur Excel

Pour répondre aux demandes relatives au dessin de cartes géographiques sur Excel, voici des explications sur la méthode que j'utilise.

1/ Tout d'abord pour dessiner une forme quelconque sur Excel un simple Shapes.AddPolyline suffit, du genre :
     Set Sh = Sheets("Carte").Shapes.AddPolyline(Points)
Ligne dans laquelle Sh est un Shape, et Points est une collection de coordonnées xy

2/ Bon à savoir, dans excel le repère à considérer est constitué d'un point zéro correspondant au coin supérieur gauche de la cellule A1 de la feuille utilisée, avec des ordonnées Y inversées par rapport à un repère cartésien ordinaire.

3/ Avec ces 2 info, on peut donc alors récupérer des jeux de coordonnées pour dessiner. Parmi les données utilisables en Opensource, un site possible : public.opendatasoft.com
Ce site propose une multitude de jeux de données avec des coordonnées GPS, des colonnes de 'geo_shapes'

4/ Il convient alors de transformer les points GPS (repère sphérique selon référence méridien de Greenwich et Equateur) en points Excel (repère plat selon référence coin supérieur gauche de la feuille)
Pour ce faire, j'utilise la fonction XY (de mon cru) suivante :
Function XY(lat As Single, lng As Single) As Coord
         XY.x = marge_ghe + (-Longitude0 + lng) * coef_lng * Echelle
         XY.y = marge_top + (Latitude0 - lat) * coef_lat * Echelle
End Function
Dans laquelle :
* Coord est un type personnalisé contenant une paire xy de Single
* Marge_ghe et marge_top : 2 valeurs pour placer mon dessin à l'endroit souhaité de ma feuille
* Longitude0 et Latitude0 : 2 valeurs à calculer en fonction du jeu de coordonnées GPS (qui vont correspondre au point zéro de ma feuille)
* coef_lng et coef_lat : 2 valeurs à définir pour compenser la rotondité de la terre (et pour éviter de trop déformer le contour obtenu)
* Echelle : pour que le dessin soit "à la bonne taille" selon la zone à dessiner (l'échelle ne sera pas la même pour dessiner une commune seule ou un pays en entier)
* et enfin lng et lat : le couple de coordonnées Gps utilisées.

Voilà tout, avec ces info il devient simple de dessiner une carte quelconque dont on a obtenu le jeu de coordonnées GPS.

Peut-être encore juste une remarque. Souvent un jeu de coordonnées GPS est composé d'une chaine de caractères dépassant largement le contenu maxi accepté par une cellule excel. Pour ne rien perdre, je préfère personnellement ne rien stocker dans excel (ni en csv) mais lire directement les info à partir des sites fournisseurs, au fur et à mesure des besoins. On peut le faire via décodage de json par exemple, et d'autres méthodes sont possibles également.

Pour voir la mise en oeuvre de ces principes, vous pouvez vous référer aux nombreux exemples publiés sur mon site.

Si ces explications de ma méthode vous sont utiles, laissez-moi un commentaire!
Pierre

 

Edit du 06 fév 2022 : ajout d'une carte du Var+Alpes Maritimes pour Lolote83 =>

Téléchargement de : Carte Var_Alpes_Maritimes

Posté par tatiak à 12:15 - Excel-Cartographie - Commentaires [2] - Permalien [#]

08 décembre 2020

Agenda/Contacts/Suivi_Projets

Visuel

Voici "Agenda21" version expérimentale d'un Agenda/Contacts/Suivi_mini-projets.

* A noter  ici le stockage des données est à la carte : soit dans le fichier même, soit en externe : Excel/Access/DBF/CSV (cf liste de choix en colonne P)
L'idée ici est de pouvoir comparer les temps de lecture/écriture selon le support choisi.


Onglet Agenda :
* Navigation de semaines en semaines => listes déroulantes / boutons[<] et [>] / clic sur une date pour afficher un calendrier à cliquer
* La saisie se fait par sélection de plusieurs cellules d'une colonne => cf gif démo.
* Affichage des horaires de chaque Rdv
* Fonction décalage rapide des Rdv via clic sur un horaire (cf gif démo) pour libérer facilement un créneau horaire
* Nuancier pour choix de la couleur de l'événement entre 80 couleurs x 11 teintes

Contacts : via bouton (au dessus du Samedi)

Mini-projets, avec principe de saisie par sélection de cases (cf gif démo) :
* plusieurs cases sur une ligne vide => étape d'un projet
* une seule case sur la ligne du titre du projet => point d'étape
* nouveau projet en modifiant le nom d'une "nouvelle étape"
* histogramme d'étape : couleur en haut=couleur du projet, en bas=couleur de l'étape
* choix des couleurs dans le même nuancier de 80x11
* visualisation de l'avancée des étapes par losanges rouges (si avancée>0)
* possibilité de relier chaque losange d'un projet par des lignes "isochrones" pour objectiver l'avancée générale du projet
* possibilité de créer un événement dans l'agenda à partir d'un point d'étape d'un projet
* possibilité d'associer un contact et/ou une PJ pour chaque étape des projets

Il reste probablement des erreurs, des oublis, des malfaçons, des bugs ...

A tester donc ... et merci de me laisser votre commentaire!
Pierre

 

* Edit du 28 jan 2021 : suite au message de Mano, correction d'un défaut pour les Rdv répétés en "sauvegarde interne"

* Edit du 25 dec 2020 : corrections et améliorations diverses

* Edit du 17 dec 2020 : suite au message de Sam, correction de défauts d'index (pour data en accdb)

* Edit du 15 dec 2020 : suite au message de Baboutz, correction d'erreurs et ajout de ses bonnes idées

 

Téléchargement de : Agenda21_8juin2021.zip

Téléchargement de : Agenda21_28janv2021.zip

Visualisation de : Démo_Agenda_Saisie.gif

Visualisation de : Démo_Agenda_Décalage.gif

Visualisation de : Démo_Nouveau_Projet.gif

Visualisation de : Démo_Projet_Saisie.gif

Posté par tatiak à 12:16 - Applications - Commentaires [23] - Permalien [#]

10 septembre 2020

Planning Hebdomadaire d'Activités

Capture

Pour répondre à de nombreuses demandes, voici un planning hebdomadaire d'activités (et d'absences).

Le principe général de saisie est une sélection à la souris de plusieurs cellules d'une même ligne.

Deux vues sont proposées : un planning global de l'ensemble de l'équipe et un planning individuel pour chaque personne.

Dans l'onglet "Cfg", vous saisirez la liste de vos opérateurs/salariés avec leur qualifications. Un salarié peut avoir plusieurs qualifications (cf exemple)
On peut atribuer une couleur par salarié ou par qualification en colorant les colonnes A et B
On peut lister également les activités, éventuellement les clients et éventuellement les commandes
Les colonnes H et I servent à indiquer un nombre requis de qualification par tranche horaire.

Rq : les intitulés en B1-D1-E1-F1 de ce même onglet sont repris dans la fenêtre de saisie (pour mieux correspondre à vos besoins).

La saisie des horaires se fait à la souris : voir illustration animée dans le fichier zip (à ouvrir dans un navigateur si l'image ne s'anime pas).


Fonctions proposées :
* Vérification de la disponibilité des collaborateurs :
- lors de la création d'une nouvelle activité
- lors de la modification d'une activité existante (vérification si modification de date, d'horaires ou de nom par rapport aux enregistrements existants)
- lors de la duplication des horaires d'une semaine entière

* Un tableau récapitulatif des diverses qualifications par 1/2h est disponible après un clic sur une date (colonne B) du planning "Global".

* Affichage au choix du nombre de salariés simultanément (boutons + et - en haut à gauche)

* Fonction "Dupliquer" pour copier à l'identique les horaires prévus sur une semaine suivante (au choix +1, +2, +3 ou +4)

* Bilan hebdo des heures effectuées par chacun et des absences

* Bilan annuel des heures travaillées

* D'autres bilans sont disponibles via les fichiers externes proposés (cf fichier zip)

 

Précision sur les "Qualifications" : un salarié peut avoir plusieurs qualifications (par ex : Vendeur, Mécanicien)
Le tableau de comptage des qualifications permet de s'assurer que le seuil défini est bien atteint sur les créneaux horaires souhaités. Pour reprendre l'exemple : s'il est nécessaire d'avoir au moins 2 vendeurs de 9h à 17h, le tableau de comptage indique pour chaque 1/2 heure le nombre de vendeurs avec un code couleur indiquant si le nombre est atteint ou non.
2 affichages sont disponibles : soit le comptage se fait sur la première qualification indiquée (ex Vendeur), soit sur toutes les qualifications des salariés : un "Vendeur, Mécanicien" sera compté 1 pour Vendeur ET 1 pour Mécanicien.

 

Si ce fichier vous est utile, n'oubliez pas de laisser un commentaire!

Pierre

 

Nouvelle version du 26/11/2020, avec correction de plusieurs défauts (en réponse aux signalements d'utilisateurs) et quelques nouveautés :

  • boutons "Imprimer" => ouvre la fenêtre de prévisualisation pour permettre à chacun de configurer l'impression selon l'imprimante disponible
     
  • pour incrémenter la barre d'avancement (ligne en bas d'un histogramme) : simple clic sur la barre (incrément selon valeur de O2 onglet "Cfg")
     
  • ajout de l'option d'affichage de traits isochrones pour visualiser l'avancée globale de l'équipe (ou partie de)
     
  • ajout d'un bilan hebdomadaire des heures travaillées
     
  • choix possible pour l'enregistrement les données : soit dans le fichier Excel, soit dans des fichiers csv externes (pour alléger le fichier Excel) => choix à faire dans la liste à droite au dessus du comptage journalier de l'onglet "Global"

Téléchargement de : Activités+_21mars2021.zip

Téléchargement de : Exemple_Recup_Activités_3b

Téléchargement de : Démo_Activités_Décalage.gif (gif animé)

Téléchargement de : Goodies divers pour Activités.xlsm

Téléchargement de : Démo_Activités.gif (gif animé)

Téléchargement de : Démo_Activités_Absences.gif (gif animé)

Capture2

* Edit du 20/03/2021 puis du 21/03/2021 : correctionS sur signalementS d'Arnaud.

* Edit du 17/02/2021 : mise à jour avec des corrections et qq améliorations pour améliorer la compatibilité Xl64bits

* Edit du 31/01/2021 : mise à jour du fichier principal avec des corrections et qq améliorations. Un clic sur un nom ouvre la fiche individuelle de la personne.

* Edit du 10/11/2020 : en réponse à la question de LF, version avec "décalage". Suite à un clic sur un horaire (de début ou de fin) les tâches programmées pour la journée de la ligne sont décalées d'1/4h ou 1/2h selon 'affichage.

* Edit du 02/11/2020 : en réponse à la question de Michel : ajout d'une démo pour saisie des absences. Nb les motifs des absences doivent se composer d'un seul mot lié sans espace, par ex : Congés_exceptionnels

* Edit du 19/09/2020 : ajout bilan des heures supplémentaires (selon durée journalière du travail en M2 de l'onglet 'Cfg')

* Edit du 11/09/2020 : correction du bilan des absences (signalement de Phil)

Posté par tatiak à 11:27 - Applications - Commentaires [75] - Permalien [#]

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

Posté par tatiak à 20:12 - Excel-Cartographie - Commentaires [25] - Permalien [#]

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

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

13 octobre 2019

Congés - Absences

Suite à plusieurs demandes, voici un nouveau planning de congés.
Ici, le principe général de saisie passe par la sélection de plusieurs cases d'une ligne d'un salarié, proposant ainsi une saisie la plus simple possible.


Description du fichier :

* Un onglet "Cfg" avec :
-- une date de début d'exercice (pour comptabiliser les absences de janvier à décembre, ou de juillet à juin, ou toute autre période selon le système utilisé dans votre entreprise)
/!\ Nota 1 : cette info sera à modifier à chaque début d'exercice pour remettre les compteurs à zéro (le fichier de données contenant les info de l'année précédente n'est pas effacé)
/!\ Nota 2 : à chaque début d'exercice, il est FORTEMENT conseillé d'enregistrer le fichier sous un nom différent de celui de l'exercide précédent (par ex : Congés_2019.xlsm, Congés_2020.xlsm, ...)

-- la liste des salariés + fonctions + droits annuel à congés, RTT
/!\ Nota : saisir la liste des salariés sans laisser de ligne vide
-- numérotation automatique de chaque ligne. Chaque ligne doit avoir un Id_S différent.Ne pas modifier cet Id_S au cours d'un exercice! Un salarié doit toujours avoir le même Id_S au cours de l'année.
-- dates début et fin de contrat. L'affichage sur les plannings se fait en fonction de ces dates
(par ex, si fin de contrat le 30/09/2019, ce nom n'apparait plus à compter de la semaine 40 sur le planning 'Hebdo')
-- quand un salarié quitte l'entreprise en cours d'année, il suffit donc d'indiquer sa date de départ (colonne G)


-- les motifs des absences + codes couleur (repris dans les graphiques) + code simplifié
La mention des histogrammes reprend ces codes simplifiés et le nb de jours ou d'heures.

Toutes ces info peuvent être modifiées comme chacun souhaite


* 3 onglets de planning : Hebdo, Mois et Année
-- /!\ avant une saisie : choisir dans la liste en haut le motif de l'absence

-- Hebdo : permet la saisie de quelques heures et/ou d'une journée de congé (par sélection des cases de 6:00 à 22:00)

-- Mois : permet la saisie de plusieurs jours par sélection de plusieurs cases

-- Annee : seulement visualisation des congés divers sur l'année (pas de saisie possible)

-- La liste déroulante "Fonctions" permet de sélectionner une catégorie de salariés pour l'affichage


* Saisie d'un "congé pour tous" (dans l'onglet "Mois" uniquement) : dans le cas d'un pont, par exemple, pendant lequel l'ensemble des salariés est en congé sur 1 ou plusieurs jours, il suffit de sélectionner une ou plusieurs colonnes sur l'ensemble des lignes de tous les salariés pour enregistrer cette absence multiple.


* Affichage/suppression d'une fiche absence via clic sur un histogramme
-- ligne commentaire (150 caractères maxi)

-- une absences n'est jamais complètement supprimée de la base.
Elle n'apparait plus sur les plannings, mais la ligne est toujours présente dans la base avec la date de 'suppression' avec éventuellement le commentaire saisi au moment de cette 'suppression'
La base garde ainsi l'ensemble de l'historique des saisies et 'suppression'


* Un onglet "Bilan" :
-- les différentes absences sont totalisées par motif (avec rappel des droits indiqués en "Cfg")

-- quand on le quitte, cet onglet est vidé des colonnes A à AS. On peut ajouter des formules à partir de la colonne AT pour faire un décompte.

Ce fichier correpondra au suivi des congés sur une année.

Cette appli a bénéficié de tests poussés réalisés par AL, ce qui a permis de régler de nombreux défauts.
Malgré tout, d'autre défauts éventuels sont toujours possibles (dans ce cas, cf fichier Log).

N'hésitez pas à me faire part des améliorations à apporter.

Et si cette appli vous est utile, laissez-moi un commentaire!
Pierre

 

Téléchargement de : Planning_Congés_minutes_v1.8.zip

 

Vsc

 

 

* Edit du 22/04/2020 : version v1.7 - Correction d'un détail sur la visualisation des vacances scolaires (suite à une remarque de AL)

* Edit du 06/04/2020 : version v1.6 - Affichage des périodes des vacances scolaires (en France). Dans l'onglet "Cfg", un bouton "Vacances Scolaires" (en N1) permet de récupérer les dates en vigueur publiées pour l'année indiquée en A2 par requête sur le site : public.opendatasoft.com

Ces périodes sont représentées par des lignes horizontales dans l'onglet "Mois" selon les couleurs choisies en O1-P1-Q1 de "Cfg"
Un clic sur une de ces lignes affiche la période de vacances et la zone concernée (A ou B ou C)

 

* Edit du 4 avril 2020 : version v1.5 - Corrige un détail (calcul de la durée lors de la modification d'une fiche)

* Edit du 3 avril 2020 : version v1.4 - Corrige un détail (quand un férié est un samedi ou dimanche)

* Edit du 9 janv 2020 : version v1.3 - En réponse à la demande d'Evan. Version permettant la précision des absences à la minutes (à ajuster dans la fenêtre de saisie)

* Edit du 20 nov 2019 : correction d'un bug signalé par RoyalC

* Edit du 24 oct 2019 : la fiche permet maintenant de modifier les informations + corrections d'erreurs diverses

* Edit du 21 oct 2019 : version v1.0c, correction d'erreurs mineures

* Edit du 20 oct 2019 : version v1.0b avec d'autres améliorations proposées par AL

* Edit du 10 oct 2019 : version v0.10 avec des améliorations proposées par AL

Posté par tatiak à 10:49 - Applications - Commentaires [62] - Permalien [#]