Résolution du Problème PB 2 Récapituler des informations à partir de différents fichiers évoluant sans cesse Fonctionnaires partant à la retraite Problème qu’a rencontré André dans le cadre de son stage… Merci à lui ! AEP 2015 - Résolution de pb Excel
Ouvrir un fichier Excel Fichier excel recapitulation Insérer 4 onglets: gest1,gest2,gest3,recap Insérer et nommer les 8 colonnes AEP 2015 - Résolution de pb Excel
Rapatrier les fichiers actualisés des différents gestionnaires Ouvrir les trois fichiers (gest1,gest2, gest3) Créer un classeur Excel recapitulation.xls qui a 4 onglets: Créer les 8 colonnes dans le tableau Recap Les onglets gest1, gest2 et gest3 doivent récupérer les données des fichiers gest1.xls, gest2.xls et gest3.xls: Quand on ouvre recapitulation.xls, ces onglets se mettent automatiquement à jour. Pour cela, il faut écrire une formule : En A1 de l’onglet gest1 : = [gest1.xls]Nic2010!A1 et copier/coller dans tout le tableau En A2 de l’onglet gest2 : = [gest2.xls]JC2010!A1 et copier/coller dans tout le tableau En A3 de l’onglet gest3 : = [gest3.xls]Nat2010!A1 et copier/coller dans tout le tableau Dans l’onglet Nic2010 du dossier gest1, va chercher la cellule A1 et copie-la. Donc à cet endroit, c’est la cellule A1 du dossier gest1, onglet Nic2010 AEP 2015 - Résolution de pb Excel
Créer un bouton de commande (1) avec Excel 2007 Clic sur Développeur puis sur Insérer Le bouton de commande s’ouvre Clic sur icône bouton AEP 2015 - Résolution de pb Excel
Créer un bouton de commande (2) Faire le lien entre le bouton et la macro correspondante AEP 2015 - Résolution de pb Excel
Ouvrir interface Visual basic /EXCEL Alt F11 Clic droit sur Module 1 : insertion Module AEP 2015 - Résolution de pb Excel
Rapatrier des fichiers Créer une macro pour rapatrier des fichiers sous Excel et pour qu’ils soient mis à jour automatiquement Cette macro va dans un premier temps rapatrier les colonnes que l’on veut considérer du tableau de la gestionnaire 1 puis des tableaux des gestionnaires 2 et 3. Ensuite elle mettra les noms en majuscules puis uniformisera les syntaxes des grades et disciplines. AEP 2015 - Résolution de pb Excel
AEP 2015 - Résolution de pb Excel Rapatrier nomgest 1 Sub rapatrie () Nomgest = « gest1 » Lignelire = 2 : ligneecrire = 2 a=1 On considère 4 variables While Sheets(nomgest).Cells(lignelire,1).Value<> ""(lignelire,1).Value<> "" On considère toutes les lignes du tableau de la gestionnaire 1 Sheets(« recap »).Cells(ligneecrire,1).Value=Sheets(nomgest).Cells(lignelire,1). Value Pour rapatrier les données de la 1ère colonne du tableau de la gestionnaire 1 dans la 1ère colonne du tableau récapitulatif Sheets… On rapatrie ensuite les colonnes 2, 6, 8, 9 et 10 du tableau de la gestionnaire 1 AEP 2015 - Résolution de pb Excel
Rapatrier nomgest 1, suite Sheets(« recap »).Cells(ligneecrire,7).Value=nomgest Pour remplir la colonne Nomgest du tableau récapitulatif afin d’identifier le gestionnaire en charge du dossier Sheets(« recap »).Cells(ligneecrire,8).Value=a Pour remplir la colonne Nb tot du tableau récapitulatif. a=1 pour la première ligne et ainsi de suite Lignelire=lignelire+1 : ligneecrire=ligneecrire+1 a= a+1 Pour considérer la ligne suivante et incrémenter le numéro d’ordre (Nb tot) AEP 2015 - Résolution de pb Excel
Rapatrier nomgest , exemple AEP 2015 - Résolution de pb Excel
Faire de même pour le tableau du deuxième gestionnaire Rapatrier nomgest 2 Faire de même pour le tableau du deuxième gestionnaire Lignelire=2 On considère la deuxième ligne du tableau du deuxième gestionnaire mais la ligne où l’on va écrire dans le tableau récapitulatif sera la 195 ° si le tableau de la gestionnaire 1 comportait 194 lignes. C’est pour cela que l’on ne réinitialise pas la variable ligneecrire Sheets… Wend Pour rapatrier les colonnes 1, 2, 3, 5, 6 et 7 du tableau de la gestionnaire 2 AEP 2015 - Résolution de pb Excel
Faire de même pour le tableau du troisième gestionnaire Rapatrier nomgest 3 Faire de même pour le tableau du troisième gestionnaire Sheets… Wend On raptrie les colonnes 1, 2, 3, 5 et 4 dans cet ordre du tableau de la gestionnaire 3 Sheets(« recap »).Activate On ouvre l’onglet recap afin de visualiser le tableau récapitulatif Dans le module on peut voir le nom des macros enregistrées : nom_maj uniform_grade uniform_grade 2 uniform_discipline uniform_discilpine2 On active ces différentes macros afin de mettre les noms en majuscule et d’uniformiser les grades et les disciplines AEP 2015 - Résolution de pb Excel
AEP 2015 - Résolution de pb Excel Uniformiser Créer une macro pour uniformiser les noms, les grades et les disciplines des trois fichiers : gest1, gest2 et gest3 AEP 2015 - Résolution de pb Excel
AEP 2015 - Résolution de pb Excel Uniformiser les noms Afin que tous les noms soient écrits en majuscule : ouvrir le Visual Basic : ALT F11 Une fenêtre s’ouvre exemple : nom_maj pour Nom en majuscule Voir Algorithme Aude AEP 2015 - Résolution de pb Excel
Uniformiser les grades : Macro uniform_grade Cette procédure est en deux parties (deux macro) La première macro considère la colonne Grade du tableau et recopie toutes les syntaxes trouvées, sans doublon, dans une nouvelle colonne. La deuxième macro considère chaque cellule de la colonne Grade et remplace son contenu par la syntaxe « uniformisée » AEP 2015 - Résolution de pb Excel
uniform_grade (boucle 1) Sub uniform_grade() Lignelire=2 :ligneecrire=2 On pose 2 Variables afin de considérer les lignes où l’on va écrire While Cells (lignelire,1).Value<> "" Pour considérer toutes les cellules non vides de la colonne 1 c’est-à-dire toutes les lignes du tableau a = Cells(lignelire,5).Value Indice = 0 On pose une variable et un indice qui aura pour valeur 1, si cette syntaxe est déjà présente dans la colonne 10 et dont la valeur sera 1, sinon For… Next… On compare le premier grade rencontré (colonne 5) à toutes les lignes de la colonne 10 et si on trouve une cellule identique, on passe à la ligne suivante (indice = 1) AEP 2015 - Résolution de pb Excel
uniform_grade (boucle 1 suite) End if… Si lors de la comparaison, cette syntaxe n’existe pas dans le tableau (indice = 0) alors on l’écrit sur la ligne correspondant à la ligneecrire. Puis on incrémente ligneecrire de 1 afin d’écrire sur la suivante par la suite Lignelire = lignelire +1 On considère la ligne suivante dans la colonne Grade du tableau d’origine Cells (ligneecrire,10).Value = « xxxxxx » On écrit « xxxxxx » dans la dernière ligne de la colonne 10 afin de savoir quand arrêter la boucle de la macro suivante AEP 2015 - Résolution de pb Excel
uniform_grade (boucle 2) Sub uniform_grade2() Lignelire=2 On considèrera les lignes de la colonne Grade à partir de la ligne 2 While Cells (lignelire,1).Value<> "" Pour considérer toutes les lignes du tableau : a = Cells(lignelire,5).Value i=2 On considère deux variables ; a correspondant à la valeur de la première cellule Grade du tableau d’origine While Cells (i,10).Value<> « xxxxxx » Tant que la cellule considérée dans la colonne 10 n’est pas : « xxxxx » AEP 2015 - Résolution de pb Excel
uniform_grade (boucle 2 suite) End if… On compare le Grade considéré du tableau d’origine à ceux répertoriés dans le tableau sans doublon a = Cells(i,10).Value: et lorsqu’on l’a trouvé, on le remplace par la syntaxe uniformisée : Cells(lignelire5).Value=b lignelire = lignelire+1 On considère la ligne suivante dans la colonne Grade du tableau d’origine AEP 2015 - Résolution de pb Excel
uniform_grade, exemple : AEP 2015 - Résolution de pb Excel
Uniformiser les disciplines Même procédure que pour la macro « uniform_grade » AEP 2015 - Résolution de pb Excel
AEP 2015 - Résolution de pb Excel PB2 – Réunifier différents fichiers Excel afin d’en faire une récapitulation Travail à faire: Enfin, par un tableau croisé dynamique, donner le nombre de professeur de mathématiques qui prend sa retraite pendant cette période. Ventiler suivant le grade… Et voilà. AEP 2015 - Résolution de pb Excel
Merci pour votre attention AEP 2015 - Résolution de pb Excel