j'ai ecrit une macro qui me copie tous mes cellules pleines( colonne
A) de A2 ( libellé en A1 ) jusqu'a la dernière cellule pleine pour
ensuite aller coller çà sur une nouvelle feuille vierge à l'identique.
en fait je fais un copier de A2 puis un offset sur A3
je passe sur la feuille 2
je fais un coller sur A2 puis un offset sur A3
je repasse sur la feuille 1
je fais un copier de A3 puis un offset sur A4
je repasse sur la feuille 2
etc etc
Mon probleme est que ma macro fonctionne cellule par cellule d'ou des
temps de traitement ( sur 600 cellules ) extremements longs
L'instruction Range("A65536").End(xlUp).Select positionne la cellule active sur la première cellule pleine en partant du bas Pour effectuer une 2° copie sans effacer la dernière cellule de la première copie il es nécessaire de décaler d'une cellule avec la commande Offset comme suit : Range("A65536").End(xlUp).Offset(1,0).Select
Il y a une chose qui m'échappe
j'ai inclus un module à votre exemple pour repeter l'operation à partir d'une deuxième feuille
concretement on copie les cellules pleines de la colonne A de la feuille 2 vers la feuille 1 puis j'ai voulu copier les cellules pleines de la colonne A de la feuille 3 vers la feuille 1 ( à la suite des cellules collées)
ca marche sauf....
que sytematiquement la cellule n-1 est tronquée lors du coller et que ce soit avec Range("A65536").End(xlUp).Select ou Range("A2").End(xlDown).Select
Sub Macro1()
With Sheets("12-03-07") .Range("A2:" & .Range("A65536").End(xlUp).Address).Copy End With Sheets("Feuil1").Select Range("A2").Select ActiveSheet.Paste
With Sheets("09-03-07") .Range("A2:" & .Range("A65536").End(xlUp).Address).Copy End With Sheets("Feuil1").Select Range("A65536").End(xlUp).Select ActiveSheet.Paste End Sub
Pourquoi à vore avis ?
Merci
L'instruction Range("A65536").End(xlUp).Select positionne la cellule active
sur la première cellule pleine en partant du bas
Pour effectuer une 2° copie sans effacer la dernière cellule de la première
copie il es nécessaire de décaler d'une cellule avec la commande Offset comme
suit :
Range("A65536").End(xlUp).Offset(1,0).Select
Il y a une chose qui m'échappe
j'ai inclus un module à votre exemple pour repeter l'operation à
partir d'une deuxième feuille
concretement
on copie les cellules pleines de la colonne A de la feuille 2 vers la
feuille 1
puis j'ai voulu copier les cellules pleines de la colonne A de la
feuille 3 vers la feuille 1 ( à la suite des cellules collées)
ca marche sauf....
que sytematiquement la cellule n-1 est tronquée lors du coller
et que ce soit avec
Range("A65536").End(xlUp).Select
ou
Range("A2").End(xlDown).Select
Sub Macro1()
With Sheets("12-03-07")
.Range("A2:" & .Range("A65536").End(xlUp).Address).Copy
End With
Sheets("Feuil1").Select
Range("A2").Select
ActiveSheet.Paste
With Sheets("09-03-07")
.Range("A2:" & .Range("A65536").End(xlUp).Address).Copy
End With
Sheets("Feuil1").Select
Range("A65536").End(xlUp).Select
ActiveSheet.Paste
End Sub
L'instruction Range("A65536").End(xlUp).Select positionne la cellule active sur la première cellule pleine en partant du bas Pour effectuer une 2° copie sans effacer la dernière cellule de la première copie il es nécessaire de décaler d'une cellule avec la commande Offset comme suit : Range("A65536").End(xlUp).Offset(1,0).Select
Il y a une chose qui m'échappe
j'ai inclus un module à votre exemple pour repeter l'operation à partir d'une deuxième feuille
concretement on copie les cellules pleines de la colonne A de la feuille 2 vers la feuille 1 puis j'ai voulu copier les cellules pleines de la colonne A de la feuille 3 vers la feuille 1 ( à la suite des cellules collées)
ca marche sauf....
que sytematiquement la cellule n-1 est tronquée lors du coller et que ce soit avec Range("A65536").End(xlUp).Select ou Range("A2").End(xlDown).Select
Sub Macro1()
With Sheets("12-03-07") .Range("A2:" & .Range("A65536").End(xlUp).Address).Copy End With Sheets("Feuil1").Select Range("A2").Select ActiveSheet.Paste
With Sheets("09-03-07") .Range("A2:" & .Range("A65536").End(xlUp).Address).Copy End With Sheets("Feuil1").Select Range("A65536").End(xlUp).Select ActiveSheet.Paste End Sub
Pourquoi à vore avis ?
Merci
titi
YEEEEEESSSSS ca y est ca marche
Sub MacroCompte() Dim nbfeuil As Long nbfeuil = Sheets.Count Sheets.Add After:=Sheets(Sheets.Count) Sheets(nbfeuil + 1).Name = "Résultat" ' MsgBox nbfeuil 'Copier colonne A Feuilles N-1 For nbfeuil = nbfeuil To 1 Step -1 With Sheets(nbfeuil) .Range("A2:" & .Range("A65536").End(xlUp).Address).Copy End With 'Coller colonne A Feuilles N-1 dans Feuille Resultat With Sheets("Résultat") .Range("A65536").End(xlUp).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste End With Next 'Suppresion des doublons With Sheets("Résultat") .Range("A1:" & .Range("A65536").End(xlUp).Address).RemoveDuplicates Columns:=1, Header:=xlNo End With
End Sub
YEEEEEESSSSS
ca y est ca marche
Sub MacroCompte()
Dim nbfeuil As Long
nbfeuil = Sheets.Count
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(nbfeuil + 1).Name = "Résultat"
' MsgBox nbfeuil
'Copier colonne A Feuilles N-1
For nbfeuil = nbfeuil To 1 Step -1
With Sheets(nbfeuil)
.Range("A2:" & .Range("A65536").End(xlUp).Address).Copy
End With
'Coller colonne A Feuilles N-1 dans Feuille Resultat
With Sheets("Résultat")
.Range("A65536").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
End With
Next
'Suppresion des doublons
With Sheets("Résultat")
.Range("A1:" & .Range("A65536").End(xlUp).Address).RemoveDuplicates
Columns:=1, Header:=xlNo
End With
Sub MacroCompte() Dim nbfeuil As Long nbfeuil = Sheets.Count Sheets.Add After:=Sheets(Sheets.Count) Sheets(nbfeuil + 1).Name = "Résultat" ' MsgBox nbfeuil 'Copier colonne A Feuilles N-1 For nbfeuil = nbfeuil To 1 Step -1 With Sheets(nbfeuil) .Range("A2:" & .Range("A65536").End(xlUp).Address).Copy End With 'Coller colonne A Feuilles N-1 dans Feuille Resultat With Sheets("Résultat") .Range("A65536").End(xlUp).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste End With Next 'Suppresion des doublons With Sheets("Résultat") .Range("A1:" & .Range("A65536").End(xlUp).Address).RemoveDuplicates Columns:=1, Header:=xlNo End With