Copier/Coller les données de 3 feuilles en une seule
S
Bonjour à tous.
J'ai plusieurs feuilles dans un projet et j'aimerai faire une archive.
Lors d'appui sur un bouton, les feuilles "IG", "AD" et "CT" sont copiées et le contenu est collé dans la feuille ARCHIVE. Le contenu des 3 feuilles est supprimé
Les entêtes ne sont pas obligés d'être copié, j'aurai juste à faire une macro pour le faire. Ou alors c'est possible de faire avec?
J'ai une feuille qui regroupe toutes les classes donc j'aimerai pouvoir qu'elle se colle à côté.
j'ai testé plein de code mais il faut que j'essaie de réadapter.
Je cherche de mon côté dans l'attente d'une réponse
Bonne journée à tous
Bonjour Swin, bonjour le forum,
Peut-être comme ça :
Sub Macro1()
Dim OS(1 To 3) As Worksheet 'déclare le tableau de trois variales OS (Onglet Source)
Dim OD As Worksheet 'déclare la variale OD (Onglet Destination)
Dim PL As Range 'déclare la variale PL (PLage)
Dim DEST As Range 'déclare la variale DEST (cellule de DESTination)
Dim I As Byte 'déclare la variale I (Incrément)
Set OS(1) = Worksheets("IG") 'définit l'onglet source 1 OS(1)
Set OS(2) = Worksheets("AD") 'définit l'onglet source 2 OS(2)
Set OS(3) = Worksheets("CT") 'définit l'onglet source 3 OS(3)
Set OD = Worksheets("ARCHIVE") 'définit l'onglet desdination OD
If OD.Range("A1").Value = "" Then 'condition : si A1 de l'onglet OD est vide
OS(1).Rows("1:2").Copy OD.Range("A1") 'copie les lignes 1 et 2 de OS(1) et les colle dans A1 de l'onglet OD
OS(1).Rows(1).Copy 'copie la ligne 1 de OS(1)
OD.Range("A1").PasteSpecial (xlPasteColumnWidths) 'colle la largeur des colonnes dans A1 de l'onglet OD
End If 'fin de la condition
For I = 1 To 3 'boucle sur les 3 onglets
Set PL = OS(I).Range("A1").CurrentRegion 'définit la plage PL
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
'redéfinit PL sans les deux première lignes (génère une erreur si PL n'a que deux lignes)
Set PL = PL.Offset(2, 0).Resize(PL.Rows.Count - 2, PL.Columns.Count)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
GoTo suite 'va à l'étiquette "suite"
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
PL.Copy DEST 'copie la plage PL et la colle dans DEST
PL.EntireRow.Delete 'supprime les lignes entières de la plage PL
suite: 'étiquette
Next I 'prochain onglet de la boucle
End Sub