Copie un tableau

Salut le forum,

comment, avec du code, je peux, en cliquant sur un bouton, copier un tableau, avec les MFC, les formules qui s'incrémentent pour correspondre et tout et tout, dans la même feuille vis à vis ce même tableau mais 3 lignes plus bas.

Voir exemple ci-joint : https://www.excel-pratique.com/~files/doc/Book2.zip

Bonsoir Erick

Même moi qui suis nul en VBA, je le fais, alors...

Tu fais "Macro" "Enregistrer une macro" et tu copie ton tableau.

Excel écrit tout sel la macro.

Tu crées un bouton et tu lui affecte la macro.

https://www.excel-pratique.com/~files/doc/QBG1bBook2.zip

Cordialement

Ok je n'ai pas été assez clair alors. Parce que créer un bouton pour ne le copier qu'une seule fois n'a aucun intérêt.

Je dois le créer à la suite du premier bien sûr mais si j'appuie de nouveau sur le bouton, il doit s'en créer un 3e à la suite du 2e et ensuite un 4e à la suite du 3e et ainsi de suite aussi longtemps qu'il y a de la place sur la feuille.

Bonsoir Canadien

Tu t'es remis de la tempête de Mars? J'ai bien failli envoyer des pelles pour vous aider..

Je me disais aussi que c'était facile..mais, ce n'était pas expliqué.

Bon, se sera pour une autre fois.

Cordialement

Bon voici ce que j'ai réussi à faire jusqu'à maintenant.

Je sélectionne le tableau que je veux copier dans la feuille modèle (Sheet1)

Private Sub CommandButton1_Click()

Dim DerLig As Single

With Sheets("sheet1")

.Range("B5").Select

.Range(Selection, Selection.End(xlDown)).Select

.Range(Selection, Selection.End(xlToRight)).Select

End With

Maintenant, j'aimerais le copier mais selection.copy me crée un bug.

Ensuite, dans la feuille d'arrivée (Sheet2), j'aimerais localiser la dernière ligne :

ActiveSheet.UsedRange.Rows.Count

ou

Dim DerLig As Single

DerLig = [C65536].End(xlUp).Row

lui additionner +3 pour me positionner 3 lignes plus bas et finalement, coller mon tableau.

With Sheets("Sheet2")

.Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

.Application.CutCopyMode = False

End With

Pouvez-vous m'aider, svp, avec les bouts manquants?

bonsoir à tous,

Eric, ton fichier en retour, macro à adapter

https://www.excel-pratique.com/~files/doc/Eric_Book2.xls

Claude.

Wow merci Claude!

C'est tellement simple que c'est quasiment décevant.

Ça fait parfaitement le travail. Super.

re,

si tu as beaucoup de tableaux du même type, tu pourrait faire une petite base pour

stocker uniquement les variables sur une ligne ! (plutôt que les tableaux entiers)

Claude

Salut CLaude,

en fait, j'ai autant de tableau que d'employés sur chaque feuille. Une feuille par semaine pour 10 à 12 employés. Ce sont des tableaux pour les heures travaillés dans une semaine.

Certes, la gestion sur une ligne serait plus efficace mais beaucoup moins facile à consulter. Probablement que j'utiliserai tout de même les deux méthodes. Une pour la consultation (que je souhaite pouvoir envoyer aux employés par e-mail) et l'autre pour les calculs qui me serviront personnellement.

Amicalement.

Resalut le forum,

je complique un peu la tâche.

Est-il possible de créer par code autant de tableau qu'il y a de noms -1 dans la feuille "Noms" (puisqu'il y a toujours au moins un tableau de créer lors de la copie de la feuille) ?

Autrement dit, si j'ai 6 noms dans ma colonne A de la feuille "Noms", j'aimerais qu'il se crée 5 tableaux supplémentaires. Comme si j'appuyais 5 fois sur le bouton "copie dans sheet2".

https://www.excel-pratique.com/~files/doc/hJhFoEric_Book2.xls

Je présume que c'est faisable avec une boucle mais je n'y suis pas encore parvenu.

Merci pour votre aide.

Bonjour,

essaie avec ce code :

Sub cop()
Dim DerLig As Long
With Sheets("Sheet2")
    For i = 2 To Sheets("Noms").[A65000].End(xlUp).Row
        DerLig = IIf(.[B65000].End(xlUp) + 3 < 5, 5, .[B65000].End(xlUp).Row + 3)
        Range("modèle!b5:f15").Copy .Cells(DerLig, 2)
    Next i
End With
End Sub

Je détermine la dernière ligne pour s'affranchir d'une page vierge

Si la dernière ligne est inférieure à 5 (donc feuille vierge), alors on commence à 5

sinon, on laisse 2 lignes d'intervalles

Salut felix et merci pour le coup de main.

Voici le code qui fonctionne dans mon cas :

Sub cop()

With Sheets("Sheet2")

For i = 3 To Sheets("Noms").[A65000].End(xlUp).Row

Range("modèle!b5:f15").Copy Destination:=[sheet2!b65536].End(xlUp).Offset(3, 0)

Next i

End With

End Sub

Comme la nouvelle feuille créée n'est jamais vierge et qu'elle contient toujours au moins un tableau, je peux partir à la ligne 3, en considérant qu'en ligne 2 se trouve mon premier nom qui correspond au tableau déjà créé.

Ça fonctionne à merveille.

Merci encore.

Rechercher des sujets similaires à "copie tableau"