Boucle macro historique

erikab

XLDnaute Nouveau
Bon alors salut à tous !
Tout d'abord je suis assez naze en macros alors j'espère que je serai claire.

Je dois créer un bouton "Enregistrer dans l'historique" qui copie le tableau d'une feuille A et qui le colle dans une autre feuille B. Jusqu'à là je sais faire.
Ainsi, la première fois que l'on clique, ça copie-colle bien le tableau dans mon autre feuille. Ce que je souhaite en fait, c'est que la 2ème fois, et toutes les fois d'après où je clique sur le bouton "Enregistrer", il me fait la même manip copie-colle mais au-dessous de l'enregistrement précédent.

En gros, la première fois que je clique j'aimerais qu'il copie-colle dès la ligne 1, puis la 2ème fois je veux qu'il copie 120 lignes plus bas, la 3ème fois encore 120 lignes plus bas etc.

Je ne sais pas si c'est très compréhensible, si vous pouviez m'aider ce serait top !

Merci d'avance et une bonne aprem,

Erika
 

Pièces jointes

  • boucle macro Bla bla.xlsm
    16.6 KB · Affichages: 36

VDAVID

XLDnaute Impliqué
Re : Boucle macro historique

Salut erikab,

Peut-être comme ceci:

Code:
Sub EnregistrerBlabla()
    
    Dim Ws As Worksheet, Ws1 As Worksheet
    Dim maPlage As Range
    Dim i As Long
    
    Set Ws = ThisWorkbook.Sheets("Bla Bla")
    Set Ws1 = ThisWorkbook.Sheets("Histo Bla bla")
    
    'Plage qu'il faut copier
    Set maPlage = Ws.Range("A2:F" & Ws.Range("F" & Rows.Count).End(xlUp).Row)
    
    maPlage.Copy Destination:=Ws1.Range("A" & IIf(Ws1.Range("A" & Rows.Count).End(xlUp).Row = 1, 1, Ws1.Range("A" & Rows.Count).End(xlUp).Row + 120))
    
End Sub

En espérant t'avoir aidé :)

Bonne journée !
 

Modeste

XLDnaute Barbatruc
Re : Boucle macro historique

Bonjour et bienvenue, Erika!

Ton tableau en feuille "Blabla" aura toujours la même taille? Il sera toujours au même endroit? Faut-il copier les cellules grises? Et la ligne suivante?

[Edit:] Salut VDAVID
 

erikab

XLDnaute Nouveau
Re : Boucle macro historique

Salut Modeste et merci !
Alors en principe oui, il aura toujours la même taille, et il faut copier l'ensemble du tableau oui. Je pense que David a répondu pas mal à ma question, j'aurais peut-être une ou deux questions supplémentaires plus tard mais déjà là vous m'avez déjà bien sauvé la mise !

Erika
 

erikab

XLDnaute Nouveau
Re : Boucle macro historique

En fait les gars je vais être chiante parce que j'ai oublié un truc.
Dans mon fichier où j'ai fait ma macro de base, j'avais fait en sorte que le copier-coller prenne en compte la largeur des colonnes sources.
J'arrive pas à le recaser dans la macro finale de David.
En gros j'ai ça maintenant :

Sub EnregistrerFilms()

Dim Ws As Worksheet, Ws1 As Worksheet
Dim maPlage As Range
Dim i As Long


Set Ws = ThisWorkbook.Sheets("Films")
Set Ws1 = ThisWorkbook.Sheets("Histo Films")

'Plage qu'il faut copier
Set maPlage = Ws.Range("10:100" & Ws.Range("F" & Rows.Count).End(xlUp).Row)

maPlage.Copy Destination:=Ws1.Range("A" & IIf(Ws1.Range("A" & Rows.Count).End(xlUp).Row = 1, 1, Ws1.Range("A" & Rows.Count).End(xlUp).Row + 2))


End Sub


Ce qui est parfait mais il me manque le truc pour conserver la taille des colonnes sources.
J'ai ça que je pense correspondre à ce que je veux, mais j'arrive pas à le placer dans ma macro finale :

Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Merci !
 

VDAVID

XLDnaute Impliqué
Re : Boucle macro historique

Code:
Ws1.Range("A" & IIf(Ws1.Range("A" & Rows.Count).End(xlUp).Row = 1, 1, Ws1.Range("A" & Rows.Count).End(xlUp).Row + 2)).Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Essaye peut-être avec le code ci-dessus (Non testé!) .
Si j'ai bien compris c'est copier la largeur des colonnes sources vers l'historique?

N'hésite pas si j'ai réponde à côté :)

Ps: Salut Modeste !
 

VDAVID

XLDnaute Impliqué
Re : Boucle macro historique

Ok, avec mon code (A adapter) ça donne ça :

Code:
Sub EnregistrerBlabla()
    
    Dim Ws As Worksheet, Ws1 As Worksheet
    Dim maPlage As Range
    Dim i As Long
    
    Set Ws = ThisWorkbook.Sheets("Bla Bla")
    Set Ws1 = ThisWorkbook.Sheets("Histo Bla bla")
    
    'Plage qu'il faut copier
    Set maPlage = Ws.Range("A2:F" & Ws.Range("F" & Rows.Count).End(xlUp).Row)
    
    maPlage.Copy Destination:=Ws1.Range("A" & IIf(Ws1.Range("A" & Rows.Count).End(xlUp).Row = 1, 1, Ws1.Range("A" & Rows.Count).End(xlUp).Row + 120))
    maPlage.Copy
    Ws1.Select
    Ws1.Range("A" & IIf(Ws1.Range("A" & Rows.Count).End(xlUp).Row = 1, 1, Ws1.Range("A" & Rows.Count).End(xlUp).Row + 120)).PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

End Sub
 

erikab

XLDnaute Nouveau
Re : Boucle macro historique

Merci les gars, ça marche super ! J'ai un fichier tout joli. Je vais être chiante parce que j'ai encore d'autres questions.
Finalement, je vais pas enregistrer dans une autre feuille "Histo Bla bla" mais carrément dans un nouveau classeur.
Qu'est-ce que je dois changer dans Set Ws1 = ThisWorkbook.Sheets("Histo Bla bla")
pour qu'il me le fasse dans ce nouveau classeur "Histo Bla bla" déjà créé ?

Merci encore !
(j'ai encore plein d'autres questions mais j'ai peur de vous embêter !!!)

Erika
 

VDAVID

XLDnaute Impliqué
Re : Boucle macro historique

Salut erikab !

Le mieux c'est que pour toute nouvelle demande, tu postes un nouveau sujet, comme ça tu maximises tes chances de réponses !
Je ne peux pas regarder tout de suite pour ce problème, donc n'hésite pas pour reposter un sujet ! :)

A+
 

Discussions similaires

Réponses
4
Affichages
113

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87