macro copier colonne intégrale avec mise en forme

CHAKAL37

XLDnaute Junior
Bonjour a tous,

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 !

Merci de votre contribution !

Cdt
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour CHAKAL37,

Rechercher plutôt la dernière ligne non vide :

Au lieu de
VB:
Sheets("Général").Range(Range("A1"), Range("A1").End(xlDown)).Copy

essayer :
VB:
Sheets("Général").Range(Range("A1"), Range("A" & Rows.Count).End(xlup)).Copy

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
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonjour à tous
Bonjour a tous,
Dans l'onglet général, j'ai des informations ( des colonnes entières en fait ) à reprendre dans les autres onglets.

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
 

CHAKAL37

XLDnaute Junior
Bonjour CHAKAL37,

Rechercher plutôt la dernière ligne non vide :

Au lieu de
VB:
Sheets("Général").Range(Range("A1"), Range("A1").End(xlDown)).Copy

essayer :
VB:
Sheets("Général").Range(Range("A1"), Range("A" & Rows.Count).End(xlup)).Copy

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 !
 

CHAKAL37

XLDnaute Junior
Bonjour à tous


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

Merci pour ta contribution ,
je vais essayer sur les autres onglets ou je dois faire de la recopie.
 

Discussions similaires

Réponses
3
Affichages
569
Réponses
7
Affichages
312

Membres actuellement en ligne

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth