Code copier-coller un tableau en fonction d'une cellule

Bonjour,

Je suis nouvelle sur le forum, et j'ai cherché pendant plusieurs heures une solution à mon problème... que je n'ai malheureusement pas trouvé...

Je souhaite écrire une macro qui me permettrait de copier un tableau le nombre de fois défini par une cellule. Je m'explique:

Je mets en place un cahier de recette très simplifié pour un didacticiel.

Les utilisateurs devront indiquer dans la page "identification" le nom du didacticiel, le nombre de séquences et le nombre de grains.

En cliquant sur le bouton "générer le cahier de recette", le tableau de la page "cahier de recette" se copiera le nombre de fois correspondant au nombre de grains indiqués sur la page "identification".

A chaque "coller" le numéro du grain se remplira automatiquement sur toutes les lignes du tableau collé (afin que l'utilisateur puisse remplir le tableau pour chaque grain).

Je joins mon fichier pour que ce soit plus clair.

J'ai réussi à faire le copier coller mais je ne sais pas comment faire ma boucle en fonction de la cellule indiquant le nombre de grains.

Merci beaucoup pour votre aide.

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

Bonsoir le fil, bonsoir le forum,

j'avais travaillé dessus mais pas eu le temps de finir... Je te propose le code terminé et commenté ci-dessous :

Private Sub Générer_Click()
Dim OI As Worksheet 'déclare la variable OI (Onglet Identification)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cahier de recette)
Dim NB As Byte 'déclare la variable NB (NomBre)
Dim I As Byte 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (Cellule de DESTination)

Set OI = Sheets("Identification") 'définit l'onglet OI
Set OC = Sheets("Cahier de recette") 'définit l'onglet OC
NB = OI.Range("D5") 'définit le nombre NB
If NB = 0 Then Exit Sub 'si NB vaut zéro, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
For I = 1 To NB 'boucle de 1 à NB
    'définit la cellule de destination DEST
    Set DEST = OC.Cells(Application.Rows.Count, 3).End(xlUp).Offset(2, -2)
    OC.Range("A6").CurrentRegion.Copy DEST 'copy le tableau autour de A6 dans DEST
    DEST.Offset(1, 1).Resize(5, 1).Value = I 'place le numéro du grain dans les 5 lignes du tableau
Next I 'prochaine valeur de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
gmb a écrit :

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

Bonjour GMB

Merci beaucoup d'avoir répondu. Je cherchais plus à avoir le tableau qui se coller sur la même feuille sous lui-même après chaque itération.

A bientôt sur le forum


ThauThème a écrit :

Bonsoir le fil, bonsoir le forum,

j'avais travaillé dessus mais pas eu le temps de finir... Je te propose le code terminé et commenté ci-dessous :

Private Sub Générer_Click()
Dim OI As Worksheet 'déclare la variable OI (Onglet Identification)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cahier de recette)
Dim NB As Byte 'déclare la variable NB (NomBre)
Dim I As Byte 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (Cellule de DESTination)

Set OI = Sheets("Identification") 'définit l'onglet OI
Set OC = Sheets("Cahier de recette") 'définit l'onglet OC
NB = OI.Range("D5") 'définit le nombre NB
If NB = 0 Then Exit Sub 'si NB vaut zéro, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
For I = 1 To NB 'boucle de 1 à NB
    'définit la cellule de destination DEST
    Set DEST = OC.Cells(Application.Rows.Count, 3).End(xlUp).Offset(2, -2)
    OC.Range("A6").CurrentRegion.Copy DEST 'copy le tableau autour de A6 dans DEST
    DEST.Offset(1, 1).Resize(5, 1).Value = I 'place le numéro du grain dans les 5 lignes du tableau
Next I 'prochaine valeur de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

Merci Thauthème c'est parfait!!! et avec les commentaires c'est top je vais même pouvoir comprendre


ThauThème a écrit :

Bonsoir le fil, bonsoir le forum,

j'avais travaillé dessus mais pas eu le temps de finir... Je te propose le code terminé et commenté ci-dessous :

Private Sub Générer_Click()
Dim OI As Worksheet 'déclare la variable OI (Onglet Identification)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cahier de recette)
Dim NB As Byte 'déclare la variable NB (NomBre)
Dim I As Byte 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (Cellule de DESTination)

Set OI = Sheets("Identification") 'définit l'onglet OI
Set OC = Sheets("Cahier de recette") 'définit l'onglet OC
NB = OI.Range("D5") 'définit le nombre NB
If NB = 0 Then Exit Sub 'si NB vaut zéro, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
For I = 1 To NB 'boucle de 1 à NB
    'définit la cellule de destination DEST
    Set DEST = OC.Cells(Application.Rows.Count, 3).End(xlUp).Offset(2, -2)
    OC.Range("A6").CurrentRegion.Copy DEST 'copy le tableau autour de A6 dans DEST
    DEST.Offset(1, 1).Resize(5, 1).Value = I 'place le numéro du grain dans les 5 lignes du tableau
Next I 'prochaine valeur de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

Merci Thauthème c'est parfait!!! et avec les commentaires c'est top je vais même pouvoir comprendre

Rechercher des sujets similaires à "code copier coller tableau fonction"