Boucle copier coller ligne vers une feuille si condition valeur

Fermé
khaliente Messages postés 5 Date d'inscription samedi 16 novembre 2013 Statut Membre Dernière intervention 25 novembre 2013 - 16 nov. 2013 à 23:52
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 17 nov. 2013 à 19:29
bonjour,
je suis novice en vba et je suis entrain de faire une macro qui me permettra de reaffecter les données dans chaque feuille selon une condition.
par exemple mon fichier s'appelle "implant" et il se presente dans un tableau tel que celui-ci

colonne A colonne b colonne c
CODE INTERNE LIBELLE PRODUIT CODE GEO
3675201 DONORMYL 1101105
3611738 PREDNISOLONE 4101110
3939775 TEMERIT 1101115
3194631 CORRECTOL 2101120
3780808 RILMENIDINE 1101125
3290381 RULID 1101130
3592254 ARIXTRA 1101135
3447463 HUMEX RHUME 21101140

je souhaiterais copier sur la feuille 2 toutes les lignes dont la valeur de la colonne C est >= 1101105 et inferieur ou egale à 1122750
et je souhaiterais copier sur la feuille 3 toutes les lignes dont la valeur de la colonne C est >= 2101105 et inferieur ou egale à 4124750
et je souhaiterais copier sur la feuille 4 toutes les lignes dont la valeur de la colonne C est >= 21101105 et inferieur ou egale à 28001100
svp quelqu'un pourrait -il m'aider ?
j'ai fais cette macro mais cela ne focntionne pas

With Sheets("implant")


Set plage = .Range("C2:C" & .Range("C65000").End(xlUp).Row)

Dim range as plage

For Each c In plage


If c.Value >= "1101105" And c.Value <= "1122750" Then
x = Sheets("feuille2").Range("C65000").End(xlUp).Row + 1
c.EntireRow.Copy Sheets("feuille2").Rows(x)

ElseIf c.Value >= "2101105" And c.Value <= "4124750" Then
x = Sheets("feuille3").Range("c65000").End(xlUp).Row + 1
c.EntireRow.Copy Sheets("feuille3").Rows(x)


ElseIf c.Value >= "21101105" And c.Value <= "28001100" Then
x = Sheets("feuille4").Range("c65000").End(xlUp).Row + 1
c.EntireRow.Copy Sheets("feuille4").Rows(x)



End If

Next c
A voir également:

2 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 nov. 2013 à 00:57
Bonjour,

Après quelques petites modifs :

Sub Tri()

Dim plage As range
Dim x As Long
Dim c

With Sheets("implant")
Set plage = .range("C2:C" & .range("C65000").End(xlUp).Row)
For Each c In plage
If c.Value >= "1101105" And c.Value <= "1122750" Then
x = Sheets("feuil2").range("C65000").End(xlUp).Row + 1
c.EntireRow.Copy Sheets("feuil2").Rows(x)
ElseIf c.Value >= "2101105" And c.Value <= "4124750" Then
x = Sheets("feuil3").range("c65000").End(xlUp).Row + 1
c.EntireRow.Copy Sheets("feuil3").Rows(x)
ElseIf c.Value >= "21101105" And c.Value <= "28001100" Then
x = Sheets("feuil4").range("c65000").End(xlUp).Row + 1
c.EntireRow.Copy Sheets("feuil4").Rows(x)
End If
Next c
End With

End Sub

J'ai testé avec les données de l'exemple. La 3ème condition n'apparaît pas dans le jeu de test.

;o)
0