XL 2019 Boucle For Each

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Pieerre69

XLDnaute Junior
Bonjour,

Je cherche à éclater et dupliquer des lignes à l'aide d'une boucle For Each.
En français voilà ce que devrait faire le code:

Pour chaque numéro._OF différent faire
----Pour chaque numéro_PF différent faire
-------- écrire X fois la ligne contenant y un numéro_PF
-------- pour chaque ligne, concaténer numéro._OF ; numéro_PF ; incrément

Les numéros OF, PF et la quantité X sont extraites d'un logiciel et sont revenus sous la forme :

[numOF] / [numPF] / [qté d'un PF dans un OF]

Donc on a par exemple :

006042 / 007108 / 5
006042 / 002601 / 10

J'aurais voulu, via des boucles For Each, avoir une transformation des données sous la forme :

006042 / 007108 / 006042-007108-001
006042 / 007108 / 006042-007108-002
[..]
006042 / 002601 / 006042-002601-009
006042 / 002601 / 006042-002601-010

Là où je bloque, c'est pour arriver à faire différencier les différents numéros d'OF à la boucle ForEach..
Je n'ai jamais utilisé ces boucles, donc je ne sais même pas comment elles fonctionnent vraiment. Peut-on récupérer des coordonnées pour chaque tour de boucle ? Est-ce qu'au moins la fonction ForEach est capable de différencier les différentes valeurs entres elles ?

Merci d'avance pour vos conseils
 
Solution
Re,
En PJ un essai avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim Sh, DL%, X%, L%, N%
[A2:C1000].ClearContents                ' Effacement matrice sortie
Set Sh = Sheets("data avant traitement")
DL = Sh.Range("A65500").End(xlUp).Row   ' Calcul nb lignes matrice entrée
X = 2                                   ' Index écriture
For L = 2 To DL                         ' Pour chaque ligne matrice entrée
    For N = 1 To Sh.Cells(L, "C")       ' Nombre de fois à répéter
        numOF = Sh.Cells(L, "A"): numPF = Sh.Cells(L, "B")
        Cells(X, "A") = numOF            ' Copie NumOF
        Cells(X, "B") = numPF            ' Copie NumPF
        Cells(X, "C") = numOF & numPF & Format(N, "000")    ' Concaténation + N°...
Re,
En PJ un essai avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim Sh, DL%, X%, L%, N%
[A2:C1000].ClearContents                ' Effacement matrice sortie
Set Sh = Sheets("data avant traitement")
DL = Sh.Range("A65500").End(xlUp).Row   ' Calcul nb lignes matrice entrée
X = 2                                   ' Index écriture
For L = 2 To DL                         ' Pour chaque ligne matrice entrée
    For N = 1 To Sh.Cells(L, "C")       ' Nombre de fois à répéter
        numOF = Sh.Cells(L, "A"): numPF = Sh.Cells(L, "B")
        Cells(X, "A") = numOF            ' Copie NumOF
        Cells(X, "B") = numPF            ' Copie NumPF
        Cells(X, "C") = numOF & numPF & Format(N, "000")    ' Concaténation + N°
        X = X + 1
    Next N
Next L
End Sub
La macro est automatique et s'exécute lorsque la feuille résultat souhaité est sélectionnée.
 

Pièces jointes

Modifiez une valeur dans la feuille "data avant traitement", par ex 20 en C2, et vérifiez le résultat;
Car je ne vois pas comment la macro pourrait ne pas s'exécuter.
Mais si vous ne modifiez rien alors ça va trop vite pour voir une différence.
 
Modifiez une valeur dans la feuille "data avant traitement", par ex 20 en C2, et vérifiez le résultat;
Car je ne vois pas comment la macro pourrait ne pas s'exécuter.
Mais si vous ne modifiez rien alors ça va trop vite pour voir une différence.

Effectivement ça marche, j'avais pourtant fait la même manip sans résultat.
Bon le plus important c'est que ça corresponde à ce que je voulais, merci pour l'aide !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
508
I
Réponses
5
Affichages
2 K
I
Retour