Copier liste selon critères d'une feuille à l'autre
Bonjour !
Nouveau sur ce forum, j'ai un projet à réaliser pour un apprentissage. Ce projet met à rude épreuve mes compétences en macro !
Le classeur joint a 2 feuilles :
- "Matin"
- "AFFECTATION MATIN"
Sur la feuille "Matin" il y a 4 Tableaux, de gauche à droite :
- Préparateurs
- Caristes
- Autres
- Synthèse
Chacun des tableaux donnent les noms des personnes avec leur affectation (modifiable par liste).
L'idée est de faire un transfert des NOMS sur la feuille "AFFECTATION MATIN" en fonction de ces affectations.
La feuille "AFFECTATION MATIN" a plusieurs tableaux organisés en zones (les mêmes qu'aux listes d'affectations) avec à l'intérieur la parties "Préparateur" & "Cariste" pour les zones "02, 06, NAL, Alcool et MEA.
L'objectif serait de créer un bouton ActivX sur l'onglet Matin qui ferait la copie des noms dans les bons tableaux en fonction de leur affectation :
C'est à dire que, par exemple, le premier préparateur nommé ALTINOK, est affecté à la zone "NAL"il doit donc être copier dans le tableau NAL, donc Range ("R7:R13"), la zone est limitée à 7 cellules, ce qui est le nombre maximum de personnes affectable.
Merci par avance pour votre aide !
J'espère que j'ai été assez clair dans mes explications...
A très vite, Mateo31
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Hello !
Pour un essai c'est super réussi !
Très rapide, je n'ai même pas vu le traitement !
J'ai commencé à lire ton code pour le comprendre et ce n'est pas une mince affaire.
Malgré tout, je vais essayé de copier le code pour rajouter la copie dans les autres zones (Autres postes), mais en l'état c'est déjà un excellent travail que tu as fait !! Merci infiniment
Je vais laisser le sujet ouvert au cas où... A moins que vous me demandiez de le fermer !
Encore merci !!
Mateo
Bon !
J'ai pu l'adapter à mon fichier original, il tourne très bien, c'est vraiment génial !
Une question cependant
Je vois une ligne MsgBox :
If lgn = 41 Or lgn = 61 Or (lgn = 13 And col = 18) Or (lgn = 16 And col = 26) Then
MsgBox "Impossible de reporter ''" & c.Offset(0, -2).Value & "'' la zone est pleine.", 16
Else
lgn = lgn + 1
.Cells(lgn, col) = c.Offset(0, -2)
Je ne sais pas lire ce code, mais cependant je l'ai mis à l'épreuve : j'ai saturé une zone pour avoir plus de noms qu'il n'y a de place : il s'est passé qu'il a copié les noms tant qu'il avait la place, puis a terminé la macro en ne copiant pas le surplus, autrement dit pas de "message box".
Cet événement me convient bien, le format de la feuille n'est pas altéré et, en plus, le dimensionnement des zones doit suffire à l'activité = c'est simplement la curiosité
Merci d'avance !
Mateo
Bonjour
Tu commences ton dernier message en annonçant une question que je n’ai pas trouvée.
Mais comme tu expliques :
puis a terminé la macro en ne copiant pas le surplus, autrement dit pas de "message box".
j’ai vérifié car si la zone est pleine, non seulement la copie ne doit pas se faire, mais le message doit être donné.
Et, effectivement j’ai trouvé un bug avec le cas des ‘’ZUR’’. Il était dû aux cellules fusionnées dans les colonnes Z à AC (titres) : les macros ont horreur des cellules fusionnées.
J’ai réglé cela en supprimant les fusions incriminées et en poussant les titres en colonne AA : centrés, on ne voit pas la différence.
OK ?
Bye !
Bonsoir !
Ah oui ! Navré !
Merci d'avoir fait l'effort de lire entre les lignes
Du coup la commande est complète, elle fonctionne du tonnerre
Merci beaucoup pour ton aide et ta réactivité
Mateo