XL 2010 VBA - macro avec 1 boucle qui alterne 1 action à conditions et 1 action sans conditions

Scorp0211

XLDnaute Nouveau
Bonjour à TOUS !

(Excusez ce roman, mais une lecture lente à partir du 4e paragraphe est suggérée).

Je m'appelle Greg. Je viens juste de m'inscrire sur ce site (aujourd'hui même).
J'ai pris mes nouvelles fonctions au sein de mon entreprise mi-février, et parmi les tâches que j'ai à accomplir, j'ai un tableau statistiques à créer sous Excel.
Les statistiques ne sont pas un problème pour moi, et la manipulation d'Excel est plutôt aisée pour moi.

Mais jusqu'ici, je n'ai jamais eu plus d'une centaine d'entrées à analyser. Là, pour l'année 2021, j'ai un fichier qui en compte 3091 (si, si, trois mille quatre-vingt-onze !).
Et histoire de rendre les choses bien drôles, ces 3091 entrées sont en (584) petits groupes avec un nombre d'entrées variant (j'irai même jusqu'à dire aléatoire).

C'est pourquoi je me suis tourné vers une macro, et donc le codage VBA... auquel je ne connaissais absolument rien au 1er mars 2022.
Et même si en 6 semaines, j'ai appris pas mal de trucs... là, j'en arrive à un point où je ne peux plus avancer tout seul.

Voici ma problématique :
Mon service gère des travaux (nommés ''OT'') effectués par 7 ateliers différents, ayant chacun un nombre différent d'agents.
Les OT sont sollicités par les différents "services" qui constituent l'entreprise, au nombre de 28. Ce nombre n'est pas appelé à changer.
Chaque OT est saisi une première fois dans un tableau Excel, qui conserve des informations spécifiques (lieu, adresse, type d'OT, type d'événement, atelier concerné, matériel concerné, etc...). Chaque OT se voit attribué un 1er n° d'identification à 5 caractères (2 lettres + 3 chiffres).
Puis une seconde saisie est réalisée dans un autre logiciel, spécifique à notre entreprise, qui reprends les mêmes informations, mais pour certaines formulées différemment, et à partir duquel on peut réaliser une requête dans un tableau Excel. Chaque OT se voit attribué un 2e n° d'identification (9 chiffres) qui est la RÉFÉRENCE de base pour mon tableau.

Cette requête constitue ma PREMIERE source de données à analyser, et le fichier Excel de la 1er saisie en sera ma seconde source.

J'ai créé un tableau Excel comportant 19 feuilles, nommées respectivement dans l'ordre de A01 à A19.

Définition des feuilles :
(je commence par la A02, pour une raison que j'explique tout de suite : c'est la feuille qui contient les colonnes qui m'intéressent de la REQUÊTE. La feuille A01 est une copie de la 1e colonne de la requête dont j'ai supprimé les doublons pour avoir ma base "mémoire" de travail pour "reconnaître" chaque OT).
A02 : REQUETE-source 1
A01 : Base "mémoire" des N°OT
A03 : Fichier Excel de 1er saisi - source 2 (qui sera utilisée BEAUCOUP plus tard,... une fois que j'aurais géré la 1er source)
A04 : tableau récapitulatif de la composition des 7 ateliers, avec des noms (tronqués, ici, pour des raisons de confidentialité professionnelle que vous comprendrez certainement), leur catégorie professionnelle. La version non-tronquée de ce tableau est classée par ordre alphabétique par le nom de famille AU SEIN de chaque atelier. il doit encore être retravaillé/modifié.
A05 : un tableau "temps" pour réaliser des conversions de données de temps sous un certains format en un autre format. (qui sera utilisée BEAUCOUP plus tard...)
A06 : un tableau qui reprends la liste de TOUS les "services" demandeur d'OT. (noms tronqués, là encore, pour des raisons de confidentialité professionnelle).
A07 : un tableau qui reprends la liste des types d'OT : 8 en tout.
A08 : un tableau qui reprends la liste des Ateliers.
Les tableaux des feuilles A04, A05, A06, A07 et A08 seront retravaillés un peu plus tard, pour la concordance des positions d'atelier et autres... c'est pas urgent pour le moment.

et ensuite, c'est là que ça devient intéressant mais aussi compliqué :

de A09 à A15 : STATISTIQUES 1 : les "BLOCS ATELIER" avec les tableaux qui vont "recevoir" les données à analyser à partir des 2 sources, et la feuille A16 "BLOC TOTAL", qui fait les calculs automatiques.
A17 : le "BLOC STATISTIQUES 2" par nombre d'atelier concerné. (certains OT ne concernent qu'une seul atelier, d'autres OT concernent "plus" que 1 atelier).
A18 : le "BLOC STATISTIQUES 3" par service demandeur.
A19 : qui ne sert pas à grand-chose pour le moment, mais qui pourrait être un support pour la 1er macro que j'ai à créer.

Définition de ma 1e action à faire, compte tenu de la quantité d'entrées à analyser, et surtout du fait que ces entrées soient en groupe à nbre aléatoire d'entrées. Chaque groupe représente UN OT. Vous trouverez le fichier Excel en p.j. AVEC la macro. Le 1er groupe se compose de 6 entrées, c'est à dire 6 lignes avec le même N°OT à 9 chiffres, le deuxième groupe compte 7 entrées, le troisième 11 entrées, et ainsi de suite, avec à chaque fois un nombre plus grand OU plus petit d'entrées.

AUCUNE entrée ne DOIT être omise. Elles DOIVENT TOUTES être analysées.

J'ai donc créé une macro qui reprend, dans le même ordre, les N°OT de la requête (A02), en les comparant avec la liste sans doublons (A01), afin de les "copier-coller" indépendamment dans chaque "bloc atelier", dans le "bloc Total", et les "blocs statistiques 2 et 3". Ma macro fonctionne ! Mais elle ne fait qu'une partie de ce que je voudrais qu'elle fasse.

C'est là que je vous sollicite : je ne sais pas trop si je dois mettre une 2e action dans CETTE macro ou faire une 2e macro pour créer la ligne "sous-total" pour chaque OT.

Mon besoin :

pour le 1er OT
avoir les 6 lignes avec le même n°OT (ici 401508385)
Directement suivi d'une ligne nommée "S/S TOTAL"
puis, les 7 lignes pour le 2e OT (401567468)
Directement suivi d'une ligne nommée "S/S TOTAL"
et ainsi de suite, jusqu'à avoir TOUS les groupes d'OT séparés par cette ligne "S/S TOTAL".

Mes questions :
1) Est-il possible d'ajouter dans ma 1ere macro une 2e action pour créer cette ligne "S/S TOTAL" dans CHAQUE BLOC ? (Un screen shot du résultat recherché en p.j.)
(c'est-à-dire : "POUF" 6 entrées à n°OT, "PAF" Ligne "S/S TOTAL", "POUF" 7 entrées à n°OT, "PAF" Ligne "S/S TOTAL", "POUF" 11 entrées à n°OT, "PAF" Ligne "S/S TOTAL", etc...)

OU

2) Si NON, est-il possible de créer une 2e macro qui insère une ligne vide entre la 6e cellule qui contient le n°OT 401508385 et la 1e cellule qui contient le n°OT 401567468, et ainsi de suite jusqu'à la fin des 3091 entrées, MAIS là encore dans CHAQUE BLOC. Et qui fait "copier-coller" de la fameuse ligne "S/S TOTAL" (dans son entier, du coup, tant qu'à faire) sur cette ligne vide.
Et j'ai beau avoir parcouru plus de 70 pages du Forum de ce site, je n'ai rien trouvé qui m'aide réellement à ça.

Vous trouverez dans le VBE 3 modules. Il faut exécuter le 1er : "Sub AA_01". Cela dure environ 10 à 12 secondes avant que le résultat s'affiche.
J'ai mis un ' (apostrophe) devant les lignes qui concerne les feuilles A10 à A18, car pour les test, la A09 suffit. Mais je confirme que la macro fonctionne sur tous les blocs.
Et si vous voulez vous amuser à retirer l'apostrophe de chaque ligne, faites-vous plaisir ^^ !
Le module 2 et 3 (AA_02 et AA_03) sont des idées/tentatives que je n'arrive pas à faire aboutir du fait de ma connaissance BEAUCOUP TROP MÉDIOCRE du VBA.

Vous trouverez un fichier pdf avec une capture d'écran donnant aperçu du résultat recherché.

D'autres questions viendront éventuellement plus tard, dans d'autres posts, pour des détails du même genre pour ce même tableau . Mais tant que je n'ai réussi à créer ces lignes "S/S TOTAL", je suis bloqué, car toutes les autres macros qui suivront seront fondées sur cette fameuse ligne.

Je précise que je n'ai pas d'échéance dans le temps pour réaliser mon tableau.

Je remercie vivement tous ceux qui auront le courage de lire ça jusqu'au bout, et plus encore ceux qui pourront m'apporter ne serait-ce qu'une piste pour régler ma problématique. Je précise que mon entreprise fonctionne avec Excel 2010.

Un grand merci encore.
 

Pièces jointes

  • AC-05 - test - Redem feuillets bon ordre - macro 2b.xlsm
    438.3 KB · Affichages: 21
  • Résultat recherché pdf.pdf
    58.3 KB · Affichages: 14

vgendron

XLDnaute Barbatruc
Version 7 avec tableau recap en stat2

il y a une feuille "Vérifications" qui m'a permis de faire quelques tests.. et qui permet d'alimenter la feuille Stat2
'le code prévoit de la supprimer une fois que tout est généré
 

Pièces jointes

  • Scorpio 7.xlsm
    503.5 KB · Affichages: 1

Scorp0211

XLDnaute Nouveau
Hello,

Désolé de ne répondre QUE aujourd'hui : j'étais en déplacement pro hier, à titre exceptionnel. C'est ma 1ere fois pour cette tâche... lol... et probablement la dernière !

Message reçu ! Si tu regardes en A04 (la liste des agents), tu devrais trouver tout en bas 10 lignes en rose foncé (et non pas 9 - mea culpa !) , dont les "Non affecté/xxxx" dont tu parles... si ces lignes n'ont pas de 2e et 3e colonne (Atelier et Catégorie), fait juste un "copier-coller" de 10 lignes avec Atelier 8 catégorie C, et ça devrait rentrer dans l'ordre.

Je te laisse tester, et me dire si ça marche.
 

Scorp0211

XLDnaute Nouveau
J'ai fouiné un peu... la liste "REQUÊTE SIMA" de ton fichier "Scorp 7" colonne A, ne contient pas les OT
-> 401694243 : qui compte
->> le "Non affecté/11063768"
->> le "Non affecté/12063609"
->> le "Non affecté/12170242"
et
-> 401718252 : qui compte
->> le "Non affecté/11063768"
->> le "Non affecté/12026912"
->> le "Non affecté/12120429"

ce qui rejoint ce que tu disais :
il y a 6 lignes avec "Affecté/xxxx" ==> ces 6 lignes ne sont pas reconnues comme des agents==> le programme s'arrete
soit il faut mettre des agents qui sont listés dans la feuille
A04, soit il faut les supprimer
si je les laisse, j'ai 584 OT dans la feuille A01: MAIS la macro s'arrete
si je les supprime, j'ai 582 OT dans la feuille A01==> et la macro s'execute correctement

Les as-tu délibérément supprimés ou est-ce un bug ? Si tu as supprimé, il ne faut pas !
Je comprend ce que tu dis quand tu dis que si tu les laisses, la macro s'arrête...
as-tu une idée de l'origine de cette interruption ?
Si tu arrives à régler la question dans le codage, ça sera génial !

De mon côté, je vais enquêter et essayer de trouver des "NOMS" de vraies personnes correspondant à ces "Non affecté"... peut-être que ça règlera le problème comme ça !

(et dans la liste des agents : le "Non affecté/11063768" est en double. Tu peux en supprimer un.)

Je constate que dans les feuilles STATS 2 et STATS 3, tu ne mets qu'UNE SEULE ligne pour chaque OT...

Désolé de t'embêter avec ça, et je sais que ça "alourdi" le codage, mais il est important de rester sur le même principe que pour les ateliers, et de garder chaque ligne de chaque OT et la ligne "S/s total", même si celle-ci n'a pas de véritable utilité dans ces 2 sections. C'est d'abord pour le repère visuel, mais aussi pour éviter de se tromper dans l'analyse suivant l'exécution de la macro. Certaines analyse vont devoir être faites "à la main" juste pour vérifier qu'on a le bon résultat.

Et pour répondre :
à quoi servent les nouvelles listes "Client Version 1 et 2"?
J’ai créé un tableau entier supplémentaire qui fonctionnera exactement de la même manière que le STATS 3, mais avec des noms de fleurs cette fois-ci, et qui comptera les 21 colonnes :
la version 1 :
la colonne A, toujours avec le N°OT
et 20 colonnes pour les 20 zones géographiques.
et
la version 2 :
la colonne A, toujours avec le N°OT
et 20 colonnes pour les 20 zones géographiques.
MAIS AVEC les colonnes B, C, D et E fusionnées en 1 seule.

Pour l’explication : une des divisions de notre entreprise (pour toi, le bonbon FLANBOLO) se sub-divisait en 20 zones géographiques. En juillet 2020, les 4 premières ont été regroupées en une seule. Mon chef demande le détail de ces sub-divisions, pour les 2 périodes (avant ET après).

Comme je vais devoir utiliser le tableau sur 2018 et 2019 (c'est à dire AVANT la fusion des 4 premières sub-divisions), j'ai créé la version 1, et pour les années 2020, 2021 et 2022, et toutes les années suivantes, j'ai créé la version 2.

J'espère avoir répondu à cette question.

Merci aussi pour la feuille que tu as nommée "Vérification". Je l'ai bien regardée, et c'est, là encore, juste génial d'y avoir pensé. Je ne comprends pas la valeur dans la colonne B : ça correspond à quoi ?

Est-il possible de vérifier SI il y a des N°OT dans la liste en "Requête SIMA" qui ne sont PAS dans la liste "Type OT", et inversement ? et dans les deux cas, faire une liste de ces N°OT sur une nouvelle feuille.
Cela me permettra de vérifier si des OT ont été zappées.

Mais je tiens, une fois de plus, à te remercier, car ton travail est juste admirable : tu m'as déjà fait gagner énormément de temps... j'ai déjà quelques os à donner à ronger à ma hiérarchie ^^ :) !

A plus, dans le bus !
 

vgendron

XLDnaute Barbatruc
pour les non affectés..
dans la liste des agents, on a bien les "Non affectés/xxxx"
dans les requetes SIMA: on a "affectés/xxxx" ==> sans le "Non" ==> ce ne sont donc pas les meme agents
==> en mettant "Non affectés/xxx" dans requetes SIMA: plus de souci

en cas d'agent introuvable, l'interruption du code est volontaire. ce n'est pas un bug: il y a meme un message qui s'affiche avec la liste des agents concernés==> Voir le code avec commentaires

pour les feuilles Stat2 et Stat3, il va falloir refaire les macro sur la base de ce qui a été déjà fait pour les feuilles Ateliers et Totaux
 

Scorp0211

XLDnaute Nouveau
Bon, bah voilà... j'ai réussi à identifier les 6 "Non affecté/xxxx" et à mettre un nom sur chacun d'entre eux...

> 401694243 : qui compte
->> le "Non affecté/11063768" : à remplacer par le prénom Jean
->> le "Non affecté/12063609" : à remplacer par le prénom Sébastien
->> le "Non affecté/12170242" : à remplacer par le prénom Zéléké
et
-> 401718252 : qui compte
->> le "Non affecté/11063768" : à remplacer par le prénom Jean
->> le "Non affecté/12026912" : à remplacer par le prénom Xavier
->> le "Non affecté/12120429" : à remplacer par le prénom Guillaume

et du coup, tu peux supprimer de la "Liste Agents" les lignes correspondantes en rose foncé.

Je l'ai fait de mon côté.

Le "Non" manquant vient du fait que j'ai séparer les NOM des Prénoms avec la fonction "Données -> Convertir" et comme il y a un espace entre le "non" et le "affecté/xxx", et que je n'ai gardé que les prénoms, Excel à considéré ça comme un prénom. j'aurais dû y prêter attention.

DONC, c'est de MA FAUTE ! Nananèreu !!! Bien fait pour moi, ça m'apprendra ^^ !

++
 

vgendron

XLDnaute Barbatruc
Version 8 pour remplissage des feuilles Stat2 et Stat3
pour la mise en forme, je te laisse aller voir le code et adapter au besoin
exemple: si tu veux changer la couleur, mais que tu ne sais pas à quel code ca correspond: utlise l'enregistreur de macro, et tu récupères la partie qui va bien
 

Pièces jointes

  • Scorpio 8.xlsm
    304.3 KB · Affichages: 2

Scorp0211

XLDnaute Nouveau
Bonjour Vincent !

Je viens de passer le vendredi après midi, ce lundi matin (hier) et la matinée d'aujourd'hui à effectuer les analyses préliminaires des résultats des tableaux créés par ta macro.

Et ton codage est aussi de plus en plus complexe à comprendre ! et j'ai l'impression de me noyer dedans !
Mon cerveau n'arrive plus à suivre !

Il y a néanmoins des résultats que je ne comprends pas ! Ci-joint des captures d'écran avec des questions et pour quelques ajustements.

Le fichier "Besoin de précision" se reporte à la feuille STATS 2.

Pour les fichiers "Suite du tableau STATS 2" et "Suite du tableau STATS 3", nous n'en étions qu'à la collecte des données. Il s'agit maintenant d'avoir les détails précis demandés par mon chef. Je te laisse lire les bulles !

Et après il y aura également le "Suite 2 du tableau STATS 3", qui doit permettre de croiser les données collectées dans les deux précédents. (en sachant qu'il faudra faire ça aussi sur la feuille STATS 4, qui n'existe pas encore, et qui concernent le détail des sub-divisions de FLANBOLO).

Je fournis également un classeur Scorpio 10 avec les 3 tableaux pré-construits (sur des feuilles "modèle") pour te faciliter la tâche, avec des bulles ou des annotations. (mais plus de splitt ^^ !).

Dans cette version 10, la liste des prénoms dans la requête SIMA a été ENTIEREMENT retravaillée, toute comme dans la "liste Agents". Normalement, tu ne devrais plus avoir le moindre bug ni de "agent introuvable".

De mon côté, je continue à exploiter ce qui peut l'être des résultats déjà obtenu.

À bientôt, et vu l'heure, bon appétit !
 

Pièces jointes

  • Scorpio 10.xlsm
    313 KB · Affichages: 6
  • Suite 2 du tableau STATS 3.jpg
    Suite 2 du tableau STATS 3.jpg
    349.1 KB · Affichages: 42
  • Suite du tableau STATS 3.jpg
    Suite du tableau STATS 3.jpg
    237.3 KB · Affichages: 40
  • Suite du tableau STATS 2.jpg
    Suite du tableau STATS 2.jpg
    283.2 KB · Affichages: 41
  • Besoin de précision.jpg
    Besoin de précision.jpg
    228 KB · Affichages: 42

vgendron

XLDnaute Barbatruc
Bonjour

je viens de lancer ta version 10, et ca commence mal
Sans titre 1.png
 

vgendron

XLDnaute Barbatruc
Je viens de voir:
tu as modifié la syntaxe de "S/s Total" en S/s TOTAL
mais pas partout==> du coup, la macro ne faisait plus les calculs ni les Mises en forme

dans la version ci jointe, j'ai essayé d'ajouter des commentaires sur le code pour expliquer ce que ca fait..
par contre, ca devient compliqué parce que à chaque fois, tu ajoutes des tableaux à droite et à gauche: il y en a partout.

avant d'ajouter des choses, vérifie que ce qui existe est correct.

dans la version jointe, j'ai corrigé les agents introuvables: Andréa==> Andréas
Sidney==> Sydney... etc ...
 

Pièces jointes

  • Scorpio 10.xlsm
    320.3 KB · Affichages: 4

Scorp0211

XLDnaute Nouveau
Bonjour Vincent,

Un très long silence de ma part : plein d'imprévus, et plein de travail. Je te présente mes excuses.

J'ai longuement travaillé sur le codage, mais j'avoue qu'il y a toujours des trucs que je ne saisi pas. (l'ordre dans lequel je dois saisir certains ordre). Et puis j'ai eu certaines demandes de ma hiérarchie qui font que j'ai dû travailler sur un autre tableau Excel entre temps.

Bref, tout ça pour dire que je ne t'ai pas oublié ni "zappé comme un malpropre"...

Je souhaitais te dire que je serai (ENFIN.... !!!!) en congé le 12 août, pour 4 semaines. Retour le 12 septembre.
J'espère que tu as pu prendre ou que tu es en ce moment en vacances.

À bientôt !
 

Discussions similaires

Réponses
20
Affichages
486

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh