Copier colle et decaler
Bonjour tous le monde,
s'il vous plait, j'ai besoin d'aide pour complété une programmation vba, j'ai plusieurs feuilles dans le même classeur, contenant des tableaux que je veux copier et les colle dans une feuille que j'ai nommé (consolidation), mon bout de code marche très bien, sauf que je voudrais que le collé soit partir de la troisième colonne, et que la colonne A et B soit vide, pour mettre ensuite des information.
voici mon bout de code :
' consolidation des feuilles du classeur
Sub Consolider()
Application.ScreenUpdating = False
EffacerDonnees
' boucle pour lire les feuilles a consolider
Worksheets("Q15").Range("A3:G3").Copy
Worksheets("consolidation").Paste
For j = 16 To 17 ' parcourir les feuilles de q15 a la fin
Sheets(j).Select
DerniereLigne = Range("A10000").End(xlUp).Row
For i = 4 To DerniereLigne ' parcourir les lignes de chaque feuille
Sheets(j).Select
Rows(i).Select
Selection.Copy
Sheets("consolidation").Select
derniereligneconsolidation = Range("A10000").End(xlUp).Row + 1
Cells(derniereligneconsolidation, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = xlCopy
Next i
Next j
Application.ScreenUpdating = True
MsgBox " La Consolidation est terminee ... ", vbOKOnly + vbInformation, "Information"
End Sub
Merci par avance pour votre aide.
Bonsoir khalti, bonsoir le forum,
Essaie comme ça :
Sub Consolider()
Dim Q As Worksheet 'déclare la variable Q (onglet Q15)
Dim C As Worksheet 'déclare la variable C (onglet Consolidation)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set Q = Worksheets("Q15") 'définit l'onglet Q
Set C = Worksheets("consolidation") 'définit l'onglet C
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
EffacerDonnees '?
Q.Range("A3:G3").Copy
C.Paste 'copie où ? normalement ça devrait être : C.Range("ta_cellule").Paste
' boucle pour lire les feuilles a consolider
For j = 16 To Sheets.Count ' parcourir les feuilles de q15 a la fin (j'ai remplacer 17 par le numéro du dernier onglet ?)
'définit la dernière ligne éditée DL de la colonne A de l'onglet de la boucle
DL = Sheets(j).Range("A" & Application.Rows.Count).End(xlUp).Row
Set PL = Sheets(j).Rows(4 & ":" & DL) 'Définit la plage PL des lignes 4 à DL (pas besoin d'une boucle)
Set PL = PL.Resize(PL.Rows.Count, PL.Columns.Count - 2) 'redéfinit la plage PL (moins deux colonnes)
'définit la cellule de destination DEST (C1 si C1 est vide, sinon la première ligne vide de la colonne C)
Set DEST = IIf(C.Range("C1").Value = "", C.Range("C1"), C.Range("C" & Application.Rows.Count).End(xlUp).Offset(1, 0))
PL.Copy DEST 'copie la plage PL dans DEST
Next j 'prochain onglet de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
MsgBox " La Consolidation est terminee ... ", vbOKOnly + vbInformation, "Information"
End Sub
Bonjour,
Merci beaucoup ThauThème pour votre aide, ca marche nickel, merci encore.
j'aurai des question plus tard, pour enrichir le bout de code