Copier les lignes contenant un critere dans une autre feuill

bonjour tout le monde,

je suis nouveau dans ce forum et nouveau sur VBA.

j'aimerai trouver une solution à ma question:

j'ai un classeur contenant deux feuilles: "F1" et "F2"

"F1" contient un tableau dont la structure est la suivante: (date, dode_clt, Nom_Clt, Montant)

"F2" contient un tableau dont la structure est la suivante est: (dode_clt, date,Nom_Clt, Montant ) (tableau vide)

j'aimerai créer un bouton contenant une macro qui me permettrai de copier toutes le lignes contenant le code_clt = 'C250' de la feuille "F1" sur la feuille "F2".

Merci d'avance

Bonjour,

Si tu joins ton fichier ... des dizaines de contributeurs te donneront volontiers un coup de main ...

Ci-joint le fichier

Merci Bcp pour ta réactivité

Re,

Ci-joint ton fichier test ...

507copie-lignes.xlsm (24.24 Ko)

merci Bcp james 007

peux tu m'expliquer le code pour que je puisse comprendre ( des commentaires)

Sub Copier()

Dim x As Long

Dim y As Long

Dim c As Range

Dim rdata As Range

x = Sheet1.Range("A65536").End(xlUp).Row

y = Sheet2.Range("A65536").End(xlUp).Row + 1

Set rdata = Sheet1.Range("B2:B" & x)

If y >= 2 Then Sheet2.Range("A2:D" & y).ClearContents

For Each c In rdata

If c.Value = Sheet2.Range("F2").Value Then

Sheet1.Range("A" & c.Row & ":D" & c.Row).Copy Destination:=Sheet2.Range("A" & y)

End If

y = Sheet2.Range("A65536").End(xlUp).Row + 1

Next c

End Sub

Re,

Avant d'aller plus loin ...

Est-ce-que la macro fonctionne comme tu le souhaitais ...???

oui ça marche Merci bcp

comment je pourrai copier seulement quelques cellules de ligne et non pas toute la ligne???

Re,

Dès que j'ai un petit moment ...je te rajoute des commentaires explicatifs dans la macro pour que tu puisses la modifier ...

James007 a écrit :

Re,

Dès que j'ai un petit moment ...je te rajoute des commentaires explicatifs dans la macro pour que tu puisses la modifier ...

Je te remercie énormément pour ton aide

Re,

Chose promise ... chose due ...

367copie-lignes.xlsm (23.84 Ko)

Merci Mr James007

si je veux remplacer la ligne :

Sheet1.Range("A" & c.Row & ":D" & c.Row).Copy Destination:=Sheet2.Range("A" & y)

pour ne copier que 2 ou trois cellules non adjacente .

comment je dois proceder?

Re,

Dis-moi précisément quelques sont les cellules que tu veux copier ...

James007 a écrit :

Re,

Dis-moi précisément quelques sont les cellules que tu veux copier ...

par exemple les cellules des colonnes A et c.

Bonjour,

Afin d'avoir un maximum de souplesse ... tu peux utiliser (ou pas...individuellement ou groupée) chaque instruction ci-dessous :

Sheet1.Range("A" & c.Row).Copy Destination:=Sheet2.Range("A" & y)
Sheet1.Range("B" & c.Row).Copy Destination:=Sheet2.Range("B" & y)
Sheet1.Range("C" & c.Row).Copy Destination:=Sheet2.Range("C" & y)
Sheet1.Range("D" & c.Row).Copy Destination:=Sheet2.Range("D" & y)
James007 a écrit :

Bonjour,

Afin d'avoir un maximum de souplesse ... tu peux utiliser (ou pas...individuellement ou groupée) chaque instruction ci-dessous :

Sheet1.Range("A" & c.Row).Copy Destination:=Sheet2.Range("A" & y)
Sheet1.Range("B" & c.Row).Copy Destination:=Sheet2.Range("B" & y)
Sheet1.Range("C" & c.Row).Copy Destination:=Sheet2.Range("C" & y)
Sheet1.Range("D" & c.Row).Copy Destination:=Sheet2.Range("D" & y)

Bonjour,

merci pour l'aide

Bonjour,

Merci pour tes remerciements ...

Bonsoir James007

j'ai une autre question si vous me le permettez:

supposant qu'une colonne doit contenir la soustraction de deux colonnes

la colonne Ede la feuil 2 = la colonne D - la colonne C " feuil 1"

merci

Bonsoir,

J'ai l'impression que la question est incomplète ...

Une fois la supposition faite ... que faudrait-il faire ...???

Y-a-t-il un lien avec la macro de copie ...???

James007 a écrit :

Bonsoir,

J'ai l'impression que la question est incomplète ...

Une fois la supposition faite ... que faudrait-il faire ...???

Y-a-t-il un lien avec la macro de copie ...???

Re

oui toujours en lien avec l Macro

au lieu de copier un cellule qui contient un montant, je voudrai que la colonne de destination soit (colonne credit - colonne debit).

est ce que c'est possible d'automatiser le calcul dans la macro?

j'aimerai remplacer cette ligne

Sheet1.Range("D" & c.Row).Copy Destination:=Sheet2.Range("D" & y)

par une ligne qui me permet de faire la formule suivante: ( "feuil2!"D2="feuil1!"F2 - "feuil1!"E3

Rechercher des sujets similaires à "copier lignes contenant critere feuill"