Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimisation de macro

12 réponses
Avatar
titi
bonjour,

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

y'a t'il moyen d'ameliorer ceci ?


Merci de vos conseils

2 réponses

1 2
Avatar
FFO
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



Avatar
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
1 2