imbriquer plusieurs boucles

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
 

Paf

XLDnaute Barbatruc
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+
 

mumu

XLDnaute Occasionnel
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:

Discussions similaires

Réponses
7
Affichages
319

Statistiques des forums

Discussions
312 194
Messages
2 086 068
Membres
103 110
dernier inscrit
Privé