tri et sélection de données avec boucle

B

ben

Guest
Bonjour le forum,

J'ai un souci et je cherche une solution depuis tôt ce matin.
Dans le fichier que je joint j'ai 2 feuilles une comprennant une liste de données l'autre avec des "items" (numéro nécessaire que je doit prendre dans la première feuille)

J'aimerai trouver comment faire pour que dans la 1ère feuille dans la colonne B il me parcour la colonne ligne par ligne et dès qu'il tombe sur un chiffre contenu également ds la feuille item il me copie dans une autre feuille la ligne à partir de ce numéro et tout ceux en dessous si ils ont une valeur entre 1 et 99, et qu'il s'arrete de faire la copie jusqu'à se qu'il retoure un numéro identique ds la colonne A de la feuille Item.

J'espère être assez claire j'ai fait en rouge et jaune avec le numéro 512 et 722 un exemple ds le fichier joint

Merci bcp pour votre aide
 

Pièces jointes

  • exemple.zip
    47.6 KB · Affichages: 28
  • exemple.zip
    47.6 KB · Affichages: 23
  • exemple.zip
    47.6 KB · Affichages: 23
B

ben

Guest
merci pour tes explications
Oui wally il faut prendre en compte également les combinaisons de chiffre et de lettre, tu n'as peut être pas le 557T dans le fichier de départ car j'ai enlevé des ligne pour ne pas dépasser les 50 ko maxi pour ce site.

Je ne trouve toujours pas... Faut t-il partir sur une autre fonction que isnumeric mais je ne connais pas la correspondance en alphanumérique j'ai essayé de rajouter 557T un peu partout ds les ligne pour trouver la solution mais pas réussi.
 
W

wally

Guest
Bonjour Ben et le forum,

Essaye de remplacer la boucle For Each ... Next existante par celle-ci :

For Each oRge In ActiveSheet.Range("B2:B" & ActiveSheet.Range("B65536").End(xlUp).Row)
If (IsNumeric(oRge.Value) _
And oRge.Value > 99 _
And oRge.Value <> 997 _
And oRge.Value <> 998 _
And oRge.Value <> 999) _
Or Not (IsNumeric(oRge.Value) _
Or oRge.Value = "AAAA") Then
If Worksheets("item").Range("A:A").Find(oRge.Value, , , xlWhole) Is Nothing Then
bFnd = False
Else
If (IsNumeric(oRge.Offset(1, 0).Value) _
And (oRge.Offset(1, 0).Value <= 99 _
Or oRge.Offset(1, 0).Value = 997 _
Or oRge.Offset(1, 0).Value = 998 _
Or oRge.Offset(1, 0).Value = 999)) _
Or oRge.Offset(1, 0).Value = "AAAA" Then
bFnd = True
Call resultat
Else
bFnd = False
End If
End If
Else
If bFnd Then
Call resultat
End If
End If
Next oRge


Slts

wally
 
B

ben

Guest
Bonjour wally et le forum,
Je suis vraiment trop nul j'ai meme pas penser a utiliser or not isnumeric je cherchai autre chose alors que c'était si simple, j'ai vraiment pas l'esprit développeur

En tout cas je le redis je ne sais comment te remercier, c'était vraiment sympa.
j'espère que cette fois ca va être bon lol

@ bientot
 

Discussions similaires

Réponses
6
Affichages
312

Statistiques des forums

Discussions
314 162
Messages
2 106 604
Membres
109 639
dernier inscrit
Phil1860