Boucle macro historique

  • Initiateur de la discussion Initiateur de la discussion erikab
  • 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 !

E

erikab

Guest
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

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 !
 
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
 
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 !
 
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 !
 
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
 
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
 
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+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
307
Retour