-
1 pièce(s) jointe(s)
VBA et gestion des dates
Bonjour à tous,
Alors voilà mon problème.
Sur un onglet je souhaiterais faire un recap' d'une base de données, sur un autre onglet, pour faire ressortir quelques éléments avec une fonction de tri.
Donc voici les caractéristiques de mon fichier:
J'ai un onglet qui s’appelle "BasedeDonnées" avec toutes mes infos.
Je souhaite travailler sur l'onglet "Caces1"
Ce dernier onglet va me servir à faire un récap' des personnes en fin de validité du permis CACES Cat1 (pour ceux qui connaisse )
Dans ma base de données j'ai les informations de toutes les personnes avec toutes leurs formations et les dates de validités
Je souhaiterais sur mon nouvel onglet faire ressortir toutes les personnes en fin de validité, trié dans un tableau par mois.
Exemple :
Pièce jointe 540067
Le job du code VBA doit faire: Lorsque je clic sur le bouton "Mise à jour" doit aller chercher toutes les personnes en fin de permis en Janvier et me les ajouter dans la colonne Janvier, pareil pour Février, ect.... via mon onglet "base de données" et en fin de code doit effacer toutes les lignes TOTALEMENT vierge (donc rien en janvier, Fevrier, Mars, ect...) Histoire de n'être pas pollué par des lignes vierges s'il n'y a personnes sur une lignes entières.
Voici les éléments:
Version Excel XL365
Dans ma base de données
Nom de l'onglet= BasedeDonnées
Colonne des noms = A
Colonne des prénoms = B
Colonne de la date de fin de validité= Y (Date en format 20-fév-20)
Dans mon onglet recap'
Nom de l'onglet = Caces1
Démarrage de la liste = Ligne 18
Colonne Janvier = F et G
Colonne Nom = F
Colonne Prénom = G
Colonne Février= H et I
Colonne Nom = H
Colonne Prénom = I
Colonne Mars= J et K
Colonne Nom = J
Colonne Prénom = K
Colonne Avril= L et M
Colonne Nom = L
Colonne Prénom = M
Colonne Mai= N et O
Colonne Nom = N
Colonne Prénom = O
Colonne Juin= P et Q
Colonne Nom = P
Colonne Prénom = Q
Colonne Juillet= R et S
Colonne Nom = R
Colonne Prénom = S
Colonne Aout= T et U
Colonne Nom = T
Colonne Prénom = U
Colonne Septembre= V et W
Colonne Nom = V
Colonne Prénom = W
Colonne Octobre= X et Y
Colonne Nom = X
Colonne Prénom = Y
Colonne Novembre= Z et AA
Colonne Nom = Z
Colonne Prénom = AA
Colonne Décembre= AB et AC
Colonne Nom = AB
Colonne Prénom = AC
Voilà pour les infos du fichier.
La gestion des dates sous VBA est très complexe pour moi, une usine encore très flou !
Merci d'avance pour votre aide ;)
En vous souhaitant une bonne après midi.
Cordialement,
-
Personnellement, si j'avais à faire ça, je le ferais beaucoup plus simple.
Dans la base de donnée, le mettrait une colonne "Fin de validité" (qui s'obtient, je suppose, avec une formule simple par rapport à la date d’obtention).
Ensuite, le poserait un filtre sur l'ensemble des colonnes (Ruban Données > Icone Filtrer).
Ensuite, en trois clic, on pourrait obtenir la liste des personnes arrivant en fin de validité pour le mois indiqué.
Trois clics par mois, ça ne vaut pas le coup de faire une macro.
Autre solution : passer par un filtre avancé qui te permettra d'extraire la liste des personnes correspondant au moins souhaité.
Autre solution : faire un tableau croisé dynamique qui te regroupera les personnes par mois de fin de validité.
Là encore, une fois le TCD mis en place, le remettre à jour sera quasiment instantané.
Bref, en natif Excel, il y a de nombreuses solutions à envisager avant de passer par le VBA qui ne semble pas être une technique que tu maitrises (sinon tu aurais déjà écrit un embryon de code, je suppose).
Si tu persistes dans la voie du VBA, je pense que ta structure avec un mois par paire de colonne va grandement te compliquer la tâche.
-
Bonjour Menhir,
Je pense que tu as raison, je vais trop me prendre la tête si je part sur cette piste.
Je vais voir pour faire autrement.
Merci pour ton conseil. ;)
En te souhaitant une bonne journée.
Cordialement,