XL 2016 créer une boucle avec +ieurs macros existantes

ABDELHAK

XLDnaute Occasionnel
Bonjour,

Je sollicite encore 1x votre aide.

J’ai 1 fichier avec +ieurs macros que je souhaîte rassembler en 1 seule macro.

La 1ière macro(1) « transfert » cherche les 10 ref en ligne 1 de la Feuil(ESPACE_WORK) dans la Feuil1 et copie la ligne entière correspondant à la ref de la Feuil1 à la Feuil(ESPACE_WORK).

La 2ième macro(2) « ADDITION_COLONNE » additionne colonne par colonne et affiche le résultat à la ligne 18 de la Feuil(ESPACE_WORK).

La 3ième macro(3) « Somme_10 » cherche dans Feuil(ESPACE_WORK) à la ligne 18 les colonnes = 10 et copie les résultats à la ligne 22.

Toutes ces macros fonctionnent parfaitement.

J’ai dans ce fichier dans la Feuil « REFERENCES » plus de 1000 lignes dont chacune possède 10 ref + 1 n° d’ordre.

J’aimerais que la nouvelle macro fasse une boucle.

  1. Elle doit copier la 1ière ligne de la Feuil « REFERENCES » vers la ligne 1 de la Feuil(ESPACE_WORK).

  2. Elle doit exécuter la macro(1) « transfert » Feuil(ESPACE_WORK).

  3. Elle doit exécuter la macro(2) « ADDITION_COLONNE » Feuil(ESPACE_WORK).

  4. Elle doit exécuter la macro(3) « Somme_10 ».

  5. Elle doit ensuite chercher à la ligne 18 de la Feuil(ESPACE_WORK) les colonnes = 10.

  6. S’il n’y a aucune colonne = 10.

  7. Retour à la Feuil « REFERENCES » copier la 2ième ligne vers la 1 ière ligne de la Feuil(ESPACE_WORK).

  8. Elle doit exécuter les points n°2 – n°3 – n°4 - n°5

  9. Et ainsi de suite pour toutes les lignes de la Feuil « REFERENCES » jusqu’à ce que dans la Feuil(ESPACE_WORK) une ou +ieurs colonnes = 10.

  10. La macro doit s’arrêter de fonctionner.
En espérant avoir été claire.

Je vous remercie d’avance

ABDELHAK
 

Pièces jointes

  • ELAB_EMP_TEST.xlsm
    4.7 MB · Affichages: 34

ChTi160

XLDnaute Barbatruc
Bonjour
Bonjour le Fil ,le Forum
voilà la macro que j'ai fais pour la Boucle
pas trop compris le But.
VB:
Sub BoucleReferences()
With Worksheets("REFERENCES")
 derlgn = .Cells(10000, 1).End(xlUp).Row
dercol = .Cells(1, 20).End(xlToLeft).Column
tabreferences = .Range(.Cells(1, 1), .Cells(derlgn, dercol)).Value
   For lgn = 1 To UBound(tabreferences, 1)
     With Worksheets("ESPACE_WORK")
     For col = 1 To UBound(tabreferences, 2)
          .Cells(1, col) = tabreferences(lgn, col)
     Next col     
     Transfert
     ADDITION_COLONNES
     Somme_10     
     End With
   Next lgn
End With
End Sub
si tu veux , mets un exemple avec Explications qui montre le Résultat voulu en fonction des Cinq lignes de la feuille " REFERENCES "!
jean marie
 

ABDELHAK

XLDnaute Occasionnel
Bonjour jean marie,
Merci d'avoir répondu et avec brio.
La macro fonctionne parfaitement comme je le souhaitais. Je l' ai testé avec 66 lignes pas de problèmes.
Elle traite les 66 lignes en +/- 10 min.
Je joins un fichier avec les explications supplémentaires comme vous l'avez demandé.
En espérant que ce soit plus compréhensible.
Et encore merci pour votre aide précieuse.
Bien à vous.
ABDELHAK
 

Pièces jointes

  • ELAB_EMP_TEST(1).xlsm
    4.7 MB · Affichages: 16

ABDELHAK

XLDnaute Occasionnel
Bonjour,

Je sollicite encore votre aide pour alléger la macro ci-dessous.

J’ai 1 fichier avec 1 macro que je souhaite alléger parce qu’elle est très lourde.

La macro « BoucleReferences » copie la ligne 1 de la Feuil (REFERENCES) vers la ligne 1 de la Feuil(ESPACE_WORK) ensuite elle exécute les macros 2, 3 et 4 si il n’y a aucun résultat elle passe à la ligne 2 de la Feuil (REFERENCES) et recommence toute la procédure.

1) La macro(1) « transfert » cherche les 10 ref en ligne 1 de la Feuil(ESPACE_WORK) dans la (Feuil1) colonne A et copie la ligne entière correspondant à la ref de la Feuil1 à la Feuil(ESPACE_WORK).

2) La macro(2) « ADDITION_COLONNE » additionne colonne par colonne et affiche le résultat à la ligne 18 de la Feuil(ESPACE_WORK).

3) La macro(3) « Somme_10 » cherche dans Feuil(ESPACE_WORK) à la ligne 18 les colonnes = 10 et copie les résultats à la ligne 22.

Le tout fonctionne parfaitement à un détail près. Elle traite 5000 lignes en 10 :30. A mon humble avis, il me semble que c’est un peu long et surtout les tâches que la macro doit exécuter sont multiples et nombreuses.

J’ai dans ce fichier dans la Feuil « REFERENCES » plusieurs centaines de milliers de lignes dont chacune possède 10 ref + 1 n° d’ordre.

J’aimerais que la nouvelle macro exécute

1) Couper/coller la 1ière ligne de la Feuil « REFERENCES » vers la 1ière ligne de la Feuil « ESPACE_WORK ».

2) Sélectionner la plage de cellules (A2 : K500000) de la Feuil « REFERENCES » et couper/coller le tout à la 1ière ligne de la Feuil « REFERENCES ». De sorte que la macro s’exécutera à chaque fois à partir de la 1ière ligne de la Feuil « REFERENCES ». Je pense que cela ferait gagner du temps ?

En espérant avoir été claire.

Je vous remercie d’avance

ABDELHAK
 

ChTi160

XLDnaute Barbatruc
Bonjour ABDELHAK
Bonjour le Fil ,le Forum
question :
Peut il y avoir plusieurs colonne =10 ?
Si Oui !
Comment les met on en place sur la Ligne 22 de la feuille "ESPACE_WORK" ?
Doit on les empiler les une après les autres ?
jean marie
 

ABDELHAK

XLDnaute Occasionnel
Bonjour,

Je sollicite votre aide pour alléger la macro ci-dessous.

J’ai 1 fichier avec 1 macro que je souhaite alléger parce qu’elle est très lourde.

La macro « BoucleReferences » copie la ligne 1 de la Feuil (REFERENCES) vers la ligne 1 de la Feuil(ESPACE_WORK) ensuite elle exécute les macros 2, 3 et 4 si il n’y a aucun résultat elle passe à la ligne 2 de la Feuil (REFERENCES) et recommence toute la procédure.

1) La macro(1) « transfert » cherche les 10 ref en ligne 1 de la Feuil(ESPACE_WORK) dans la (Feuil1) colonne A et copie la ligne entière correspondant à la ref de la Feuil1 à la Feuil(ESPACE_WORK).

2) La macro(2) « ADDITION_COLONNE » additionne colonne par colonne et affiche le résultat à la ligne 18 de la Feuil(ESPACE_WORK).

3) La macro(3) « Somme_10 » cherche dans Feuil(ESPACE_WORK) à la ligne 18 les colonnes = 10 et copie les résultats à la ligne 22.

Le tout fonctionne parfaitement à un détail près. Elle traite 5000 lignes en 10 :30. A mon humble avis, il me semble que c’est un peu long et surtout les tâches que la macro doit exécuter sont multiples et nombreuses.

J’ai dans ce fichier dans la Feuil « REFERENCES » plusieurs centaines de milliers de lignes dont chacune possède 10 ref + 1 n° d’ordre.

J’aimerais que la nouvelle macro exécute

1) Couper/coller la 1ière ligne de la Feuil « REFERENCES » vers la 1ière ligne de la Feuil « ESPACE_WORK ».

2) Supprimer la 1ière ligne de la Feuil « REFERENCES ». De sorte que la macro s’exécute à chaque fois à partir de la 1ière ligne de la Feuil « REFERENCES ». Je pense que cela ferait gagner du temps ?

3) Réunir les macros 1, 2, et 3 en une seule macro :

1°) elle doit chercher les 10 ref de la 1ière ligne de la Feuil « ESPACE_WORK » à la colonne A de la Feuil « Feuil1 ».

2°) vérifier à la colonne B de la Feuil « Feuil1 » et à hauteur des 10 ref le contenu des cellules.

3°) si les 10 cellules n’ont pas un fond vert passer à la colonnes suivante C, D, E, …JJZ recommencer la procédure jusqu’à ce il y ait 10 cellules à fond vert.

Il y a 7045 colonnes au total.

En espérant avoir été claire.

Je vous remercie d’avance

ABDELHAK
 

Pièces jointes

  • ELAB_EMP_TEST(4).xlsm
    6.5 MB · Affichages: 9

ChTi160

XLDnaute Barbatruc
bonjour ABDELHAK
peux tu me dire comment il faut faire , après avoir à partir d'une ligne de Références , trouvé par exemple 4 colonnes avec 10 cellules à fond vert et avoir colle les données à partir de la Ligne 22
merci
jean marie
 
Dernière édition:

ABDELHAK

XLDnaute Occasionnel
Bonjour jean marie,
Après avoir trouvé 4 colonnes avec 10 cellules à fond vert et avoir collé les données à la ligne 22. La macro doit tout simplement s'arrêter.
La macro doit continuer que si le résultat ne répond pas aux critères des 10 cellules à fond vert trouvées.
Bien à vous.
ABDELHAK
 

ABDELHAK

XLDnaute Occasionnel
RE
Oui absolument. Il faut que vous sachiez que j'ai modifié les données afin que vous puissiez visualiser résultat final.
En réalité, si la macro vérifie des centaines de millier de lignes Références, j'espère que 1, 2, 3 ou 4 lignes maximum répondent à ces critères.
Bien à vous.
ABDELHAK
 

ChTi160

XLDnaute Barbatruc
Re
en pièce jointe , une approche , j'ai modifié le tableau en "Feuil1" et constitué une ligne de références qui m'a permis de vérifier le fonctionnement des procédures .
à toi de tester et de me dire ce qui ne va pas .
tu dis :
j'espère que 1, 2, 3 ou 4 lignes maximum répondent à ces critères.
Est ce que ces Colonnes peuvent être issues de différentes lignes de références (si oui il me faudra modifier ma copie) Lol
jean marie
 

Pièces jointes

  • ELAB_EMP_TEST(1)-08-12-18.xlsm
    4.6 MB · Affichages: 4

ABDELHAK

XLDnaute Occasionnel
RE,
J'ai essayé la macro, mais il m'affiche un message d'erreur : "dépassement de capacité".
Quant aux Colonnes, si je vous ai bien compris, font partie du tableau Feuil1 et elles sont constantes.
Le tableau Feuil1 reste en l'état, il ne bouge pas.
Bien à vous.
ABDELHAK
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo