Recopie de données
bonjour le forum
j'ai des données à recopier les unes en dessous des autres, ces données comportent 11 colonnes et plusieurs centaines de lignes
Ces données de 11 colonnes j'en ai 160 et cela irra en augmentant, actuellement je les recopie par copier/coller ce qui est assez long,
y aurait-il une façon plus rapide de le faire par formule ou macro.
merci
Bonsoir Jad, bonsoir le forum,
Peut-être comme ça :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)
Dim PL As Long 'déclare la variable PL (Première Ligne)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OS = Sheets("Feuil1") 'définit l'onglet source OS
Set OD = Sheets("Feuil2") 'définit l'onglet destination OD
OD.Range("A1").CurrentRegion.ClearContents 'efface les éventuelles anciennes données de l'onglet destination OD
Set R = OS.Rows(1).Find(1, , xlValues, xlWhole) 'définit la recherche R (recherche 1 dans la première ligne de l'onglet source OS)
If Not R Is Nothing Then 'condition 1 : si il existe au moins une occurrence trouvée
PA = R.Address 'définit l'adresse PA de la première occurrence trouvée
Do 'exécute
PL = R.End(xlDown).Row 'définit la première ligne PL du bloc
If Not PL = Application.Rows.Count Then 'condition 2 : si PL n'est pas la dernière ligne de l'onglet
DL = OS.Cells(Application.Rows.Count, R.Column).End(xlUp).Row 'définit la dernière ligne du bloc
'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première ligne vide de la colonne A de l'oglet OD)
Set DEST = IIf(OD.Range("A1") = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
OS.Range(OS.Cells(PL, R.Column), OS.Cells(DL, R.Column)).Resize(, 11).Copy 'copie le bloc
DEST.PasteSpecial (xlPasteValues) 'coles ses valeurs dans DEST
End If 'fin de la condition 2
Set R = OS.Rows(1).FindNext(R) 'redéfinit la recherche R (occurrence suivante)
Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe des occurrences ailleurs qu'en PA
End If 'fin de la condition 1
Application.CutCopyMode = False 'suuprime le clignotement de la plage copiée
OD.Select 'sélectionne l'onglet destination OD
Range("A1").Select 'sélectionne la cellule A1
ActiveWindow.ScrollRow = 1 'montre la ligne 1 en haut de la fenêtre
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
bonjour ThauThème, gmb, le forum
merci pour vos réponses.
j'ai éssayé les 2 la macro de ThauThème pas de problème, celle de gmb j'ai le message ' erreur de compilation valeur non définie'
X = 0
merci
Bonjour à tous
Effectivement, la variable X n'était pas déclarée.
Il est curieux que sur mon PC, cela marche quand même.
PS :
A vouloir rivaliser avec un Crack, on risque de prendre des claques...
Bye !