je fais appel a vous car j'ai un problème que je n'ai pas encore résolu !
Je dois créer un fichier permettant un suivi de chantier selon différentes phases.
Pour cela j'ai 4 onglets (Général, Etudes, Travaux et Facturation).
Dans l'onglet général, j'ai des informations ( des colonnes entières en fait ) à reprendre dans les autres onglets.
Pour cela j'ai un bout de code que je n'ai testé que sur mon premier onglet et qui semblait me convenir :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Sheets("Etudes").Range("A:G").ClearContents
Sheets("Général").Range(Range("A1"), Range("A1").End(xlDown)).Copy Destination:=Sheets("Etudes").Range("A1")
Sheets("Général").Range(Range("B1"), Range("B1").End(xlDown)).Copy Destination:=Sheets("Etudes").Range("B1")
Sheets("Général").Range(Range("C1"), Range("C1").End(xlDown)).Copy Destination:=Sheets("Etudes").Range("C1")
Sheets("Général").Range(Range("D1"), Range("D1").End(xlDown)).Copy Destination:=Sheets("Etudes").Range("D1")
Sheets("Général").Range(Range("E1"), Range("E1").End(xlDown)).Copy Destination:=Sheets("Etudes").Range("E1")
Sheets("Général").Range(Range("F1"), Range("F1").End(xlDown)).Copy Destination:=Sheets("Etudes").Range("F1")
Sheets("Général").Range(Range("J1"), Range("J1").End(xlDown)).Copy Destination:=Sheets("Etudes").Range("G1")
Application.ScreenUpdating = True
End Sub
sauf que la recopie s’arrête dès qu'une cellule vide est rencontré dans la colonne ....
Je veux une recopie complète de la colonne sans distinction .... Une idée .... ça doit être simple mais je trouve pas !
Attention ! le terme Sheets("Général") ne s'applique qu'au premier Range. Si vous n'êtes pas sur la feuille "Général", Range("A1") et Range("A" & Rows.Count).End(xlup) concerne la feuille active et non la feuille "Général". Vous risquez une erreur d'exécution.
Le plus simple est d'employer un With :
VB:
With sheets("Général")
.Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlup)).Copy Destination:=Sheets("Etudes").Range("A1")
end with
Bonjour à tous et "Bonne année"
Ceci peut être, si j'ai bien compris
Code:
Sub test()
Sheets("Etudes").Range("A:G").ClearContents
With Sheets("Général")
.Columns("A:F").Copy Sheets("Etudes").[a1]
.Columns("J").Copy Sheets("Etudes").[g1]
End With
End Sub
Quant à le mettre sur un " Worksheet_SelectionChange" ....j'ai un doute
Attention ! le terme Sheets("Général") ne s'applique qu'au premier Range. Si vous n'êtes pas sur la feuille "Général", Range("A1") et Range("A" & Rows.Count).End(xlup) concerne la feuille active et non la feuille "Général". Vous risquez une erreur d'exécution.
Le plus simple est d'employer un With :
VB:
With sheets("Général")
.Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlup)).Copy Destination:=Sheets("Etudes").Range("A1")
end with
Bonjour et merci pour ta contribution.
j'ai un soucis d'erreur de compilation lorsque je rajoute le with - End With ... une fin d'instruction est attendu ....
moi pas comprendre pourquoi !
Par contre pour le reste c'est niquel ! ça marche comme je le veux !
Bonjour à tous et "Bonne année"
Ceci peut être, si j'ai bien compris
Code:
Sub test()
Sheets("Etudes").Range("A:G").ClearContents
With Sheets("Général")
.Columns("A:F").Copy Sheets("Etudes").[a1]
.Columns("J").Copy Sheets("Etudes").[g1]
End With
End Sub
Quant à le mettre sur un " Worksheet_SelectionChange" ....j'ai un doute
Sub test()
Dim Sh
For Each Sh In Array("Etudes", "Travaux", "Facturation")
With Sheets(Sh)
.Range("A:G").ClearContents
Sheets("Général").Columns("A:F").Copy .[a1]
Sheets("Général").Columns("J").Copy .[g1]
End With
Next
End Sub