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

13essaikc.xlsm (56.93 Ko)

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

Bonjour ThauThème

Une autre approche :

7essaikc-v1.xlsm (61.90 Ko)

Bye !

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 !

8essaikc-v1.xlsm (66.00 Ko)
Rechercher des sujets similaires à "recopie donnees"