Copier/Coller les onglet VBA

Résolu/Fermé
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 - 5 août 2021 à 07:45
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 - 25 août 2021 à 18:48
Bonjour,
Dans la cellule A1, en cliquant sur le bouton 1, je souhaite copier les données de la feuille 1 dans l'onglet Report ensuite copier à partir de X les données de la feuille2 idem pour la feuille 3 (sans les entête pour les feuille 2 et 3). Copier les données 1 en bleu clair, données 2 en vert clair et données 3 en marron clair.
Par avance, je vous remercie de votre aide et vous souhaite une excellente journée.
Cordialement,
Zizou
https://www.cjoint.com/c/KHffRbmmpeA
A voir également:

4 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
5 août 2021 à 16:37
Bonjour,

pour copier une plage de cellule:

https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.copy

pour trouver la dernière ligne:

https://excel-malin.com/tutoriels/vba-tutoriels/vba-trouver-la-derniere-cellule-utilisee/

et pour la couleur:

https://www.excel-pratique.com/fr/vba/couleurs

ce qui donne :

Option Explicit
Sub test()
Dim DerniereLigneUtilisee As Long
Dim DerniereCellule_Adresse
DerniereCellule_Adresse = Worksheets("Feuil1").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Worksheets("Feuil1").Range("A1:" & DerniereCellule_Adresse).Copy _
    Destination:=Worksheets("Report").Range("A1")
    DerniereCellule_Adresse = Worksheets("Report").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Range("A1:" & DerniereCellule_Adresse).Font.ColorIndex = 41 'bleu clair
    DerniereLigneUtilisee = Worksheets("Report").Range("A" & Rows.Count).End(xlUp).Row + 1
DerniereCellule_Adresse = Worksheets("Feuil2").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Worksheets("Feuil2").Range("A2:" & DerniereCellule_Adresse).Copy _
    Destination:=Worksheets("Report").Range("A" & DerniereLigneUtilisee)
    DerniereCellule_Adresse = Worksheets("Report").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Range("A" & DerniereLigneUtilisee & ":" & DerniereCellule_Adresse).Font.ColorIndex = 10 ' vert
    DerniereLigneUtilisee = Worksheets("Report").Range("A" & Rows.Count).End(xlUp).Row + 1
DerniereCellule_Adresse = Worksheets("Feuil3").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Worksheets("Feuil3").Range("A2:" & DerniereCellule_Adresse).Copy _
    Destination:=Worksheets("Report").Range("A" & DerniereLigneUtilisee)
        DerniereCellule_Adresse = Worksheets("Report").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Range("A" & DerniereLigneUtilisee & ":" & DerniereCellule_Adresse).Font.ColorIndex = 40 ' marron clair
End Sub
'https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.copy
'https://www.excel-pratique.com/fr/vba/couleurs
'https://excel-malin.com/tutoriels/vba-tutoriels/vba-trouver-la-derniere-cellule-utilisee/


affecter cette macro à un raccourci clavier, car le bouton ce n'est pas judicieux car les données copiées vont se trouver sur cette feuille!

Voilà


1
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
13 août 2021 à 17:54
Bonjour,
Sans abuser de ta gentillesse, je souhaite une information que je ne comprends pas.
Ta formule fonctionne parfaitement BIEN. Lorsque je l'ai adapté à mon tableau sur deux onglets l'un est correctement copier (avec toutes les informations) par contre l'autre ne prend que les deux premiers colonne.
Je ne comprends pas le problème (les deux onglets sont extraites à partir d'un macro, penses-tu qu'il y a incidence?
Par avance, je te remercie de ton aide.
Cordialement,
Azis
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024
13 août 2021 à 18:35
il faut l'adapter.
Je t'ai mis le code avec les commentaires pour l'adapter;

Option Explicit
Sub test() 'Ctrl w
'déclaration variable
Dim DerniereLigneUtilisee As Long
Dim DerniereCellule_Adresse As Variant
'copie feuil1 --> Report
DerniereCellule_Adresse = Worksheets("Feuil1").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Worksheets("Feuil1").Range("A1:" & DerniereCellule_Adresse).Copy _
    Destination:=Worksheets("Report").Range("A1")
    'couleur
    DerniereCellule_Adresse = Worksheets("Report").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Range("A2:" & DerniereCellule_Adresse).Font.ColorIndex = 5 'bleu
    'copie feuil2 --> Report
    DerniereLigneUtilisee = Worksheets("Report").Range("A" & Rows.Count).End(xlUp).Row + 1
DerniereCellule_Adresse = Worksheets("Feuil2").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Worksheets("Feuil2").Range("A2:" & DerniereCellule_Adresse).Copy _
    Destination:=Worksheets("Report").Range("A" & DerniereLigneUtilisee)
    'couleur
    DerniereCellule_Adresse = Worksheets("Report").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Range("A" & DerniereLigneUtilisee & ":" & DerniereCellule_Adresse).Font.ColorIndex = 4 'vert
    'copie feuil3 --> Report
    DerniereLigneUtilisee = Worksheets("Report").Range("A" & Rows.Count).End(xlUp).Row + 1
DerniereCellule_Adresse = Worksheets("Feuil3").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Worksheets("Feuil3").Range("A2:" & DerniereCellule_Adresse).Copy _
    Destination:=Worksheets("Report").Range("A" & DerniereLigneUtilisee)
      'couleur
        DerniereCellule_Adresse = Worksheets("Report").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Range("A" & DerniereLigneUtilisee & ":" & DerniereCellule_Adresse).Font.ColorIndex = 26 'Fuchsia
End Sub
'


Voilà

@+ Le Pivert
0
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
14 août 2021 à 06:21
Bonjour et merci de ton aide et de ta gentillesse,
Il ne veut pas et reprend toujours 2 colonnes. Au lieu qu'il cherche la dernière cellule automatiquement, peut-on définir de copier de A à L?
Bien à toi,
Zizou
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024
14 août 2021 à 07:57
peut-on définir de copier de A à L?

OUI en consultant le lien donné post3:

pour copier une plage de cellule:

à+
0
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
15 août 2021 à 20:26
Bonsoir cs_Le Pivert,
J'ai repris la formule du post3, ça reprends les données de A à L mais seulement 3 lignes de A1 à A3.
Par contre, j'ai gardé ta formule pour l'onglet Feuil2 et Feuil3 qui fonctionnent impeccablement.
Merci pour ta patience et ton aide, je te souhaite une excellente soirée.
Cordialement,
Zizou
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
5 août 2021 à 10:13
Bonjour,
avez-vous essayé de passer par l'enregistreur de macro ? Et ensuite rattacher celle-ci à votre bouton...
0
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
5 août 2021 à 10:41
Bonjour,
Merci pour votre réponse, je n'ai pas fait de macro car je ne sais pas comment définir le X (les dernières lignes sont variables).
Cordialement,
Azis
0
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
5 août 2021 à 17:06
Bonjour cs_Le Pivert,
Du sûr mesure, excellent. Un grand merci à toi et ce forum d'être là...
@+++
Zizou
0