imbriquer plusieurs boucles

  • Initiateur de la discussion Initiateur de la discussion mumu
  • Date de début Date de début

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 !

mumu

XLDnaute Occasionnel
Bonjour le forum,

Après quelques recherches infructueuses car je ne pense pas avoir les bons mots clefs..... Je tente un post ici.
Je cherche à faire du remplissage automatique de certaines lignes en VBA.
La problématique est que j'ai un nombre variable de boites d'échantillons mais qui ont toutes 16 emplacements. Je voudrais donc remplir automatiquement 3 colonnes :
la première colonne (colonne R) le numéro de la boite, la deuxième (colonne Q) les 16 emplacements et la troisième (colonne S) le nom de l'espèce.
J'ai commencé à écrire ça :

VB:
Sub BDD_M()

Dim DerLig As String
Dim i, j, Num As Integer

Num = InputBox("nombre de boîte ?")
DerLig = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To 16
ActiveSheet.Cells(DerLig + i, 18).Value = i
Next i

For j = 1 To Num
ActiveSheet.Cells(DerLig + 1, 17).Value = j
Range("Q" & DerLig + 1).Select
Selection.AutoFill Destination:=Range(Cells(DerLig + 1, 17), Cells(DerLig + 16, 17)), Type:=xlFillCopy
Next j

End Sub

je voudrais avoir un bloc de 16 lignes pour la boite 1 et l'espèce 1 puis un bloc de 16 lignes pour la boite 2 et l'espèce 1 (sachant que je peux avoir aussi plusieurs espèces).
Le problème c'est que je ne sais pas comment lui demander de recommencer à la 17ème ligne pour la boite 2 (et je ne me suis pas attaquée à la colonne 3 pour l'espèce....)

Merci pour les pistes éventuelles.

A +

Mumu
 
bonjour,

je n'ai pas épluché le code, mais avec deux boucles comme ceci ?:

VB:
For j = 1 To Num 'pour chaque boite
   For i = 1 To 16  ' pour les 16 emplacements de la boite en cours
       'code
       '.../...
       'code
   Next
Next

A+
 
J'ai trouvé une solution après le conseil de Paf (encore merci)

C'est pas très beau comme code mais cela répond (en partie) à ce que je veux

VB:
Sub BDD_M()

Dim DerLig As Long
Dim i, j, Num As Integer

Num = InputBox("nombre de boîte ?")
DerLig = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

For j = 1 To Num
   
    For i = 1 To 16
        ActiveSheet.Cells(DerLig + i, 18).Value = i & "_" & j
    Next i

    DerLig = ActiveSheet.Range("R" & Rows.Count).End(xlUp).Row

Next j

End Sub

Mais je suis quand même preneuse d'un code mieux écrit pour ceux qui veulent batailler 🙂

Merci, A +

Mumu
 
Dernière édition:
- 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
7
Affichages
620
Réponses
8
Affichages
469
  • Question Question
Microsoft 365 Traitement
Réponses
7
Affichages
128
Réponses
5
Affichages
508
Réponses
7
Affichages
250
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Retour