Erreur dans Boucle Loop macro Excel introuvable...

Résolu/Fermé
Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 - 9 avril 2013 à 08:55
Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 - 9 avril 2013 à 11:45
Bonjour,

J'ai déjà posté un sujet sur ce thème. En effet, cette macro ne marchant pas, j'en avais fait une équivalente dans un nouveau fichier (mon fichier étant très lourd et relié à d'autres fichiers) pour tenter de trouver l'erreur. Seulement voilà, dans mon fichier "test", cette macro marche, et non dans mon fichier utile.

Dans le principe, j'ai les même tableaux sur toutes les feuilles de mon classeur excel. Tous les jours, je créée par macro une nouvelle feuille (afin de garder ma traçabilité). Cependant, il me faut récupérer les informations entrée manuellement par les utilisateur la veille : des observations éventuelles, ou la livraison prévu pour le mois en cours.
Ici, il s'agit de la livraison en cours. Dans mon tableau, c'est basé juste sur du VRAI/FAUX.

Déjà voilà le tri qui est effectué dans les 2 feuilles (la nouvelle et celle de la veille) :

'Tri des lancements par code affaire en colonne 1 et 2 pour permettre les recherches :
'Feuille1
Sheets(1).Select
ActiveWorkbook.Worksheets(1).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(1).AutoFilter.Sort.SortFields.Add Key:=Range _
("BS11"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets(1).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Range("$A$11:$BS$209").AutoFilter Field:=71, Criteria1:="<>"

'Feuille 2
Sheets(2).Select
ActiveWorkbook.Worksheets(2).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(2).AutoFilter.Sort.SortFields.Add Key:=Range _
("BS11"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets(2).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Range("$A$11:$BS$209").AutoFilter Field:=71, Criteria1:="<>"


Ce tri est fait par la colonne BS numéro 71. En effet, celle-ci contient un "code" issue d'une formule de concatenation permettant d'identifier clairement chaque ligne.
J'ai donc trié les lignes des tableaux dans les 2 feuilles de la même manière, afin que la boucle s'y retrouver. J'ai inclus dans le tris de masquer les lignes où il n'y avait rien (comme c'est une copie automatique), car elles se mettaient en début de liste, et du coup la condition Do While de la fonction Loop faisait qu'elle s'érrêtait là.

Ci-dessous la boucle créée :

B = 12 'Numéro de la ligne pour commencer la recherche
Set Cherche = Sheets(2).Cells(B, 71)
Set Indique = Sheets(2).Cells(B, 10)
Do While Cherche <> ""
With Sheets(1).Range("BS12:BS199")
Set trouve = .Find(Cherche, LookIn:=xlValues)
If Not trouve Is Nothing Then
Sheets(1).Cells(trouve.Row, 10).Value = Indique.Value
End If
End With
B = B + 1
Set Cherche = Sheets(2).Cells(B, 71)
Set Indique = Sheets(2).Cells(B, 10)
Loop


La colonne 71 (BS) est ma colonne de référence
La colonne 10 (J) la colonne où est l'information à récupérer
Les cellules BS12 à BS199 sont celles où doivent se faire les recherches.

J'ai donc la même chose concernant les observations éventuelles, mais je pense que la résolution de cette erreur, me permettra de corriger l'autre.

En fait, je n'ai pas de message d'erreur à proprement parlé, mais la boucle ne donne aucun résultat, alors que je devrai avoir, des codes FAUX qui devraient se mettre sur la première feuille.

Merci d'avance.


A voir également:

6 réponses

Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 2
9 avril 2013 à 09:27
A priori le problème viendrai bien du tri... car j'ai fait d'autres test. Je vais vérifié dans les macros précédentes comment j'avais trié les données. Le problème viendrait, a priori, du fait que j'utilise les filtres pour trier les données.
0
Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 2
9 avril 2013 à 10:12
Ha bah non... visiblement en faisant le tri de cette manière là ça marche qd même dans mon fichier test...
0
Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 2
9 avril 2013 à 10:27
Bon, j'ai trouvé d'où venait le problème, mais je ne sais pas encore comment le résoudre. Il s'agit bien de la manière de trier. En effet, avec le tri, cela me masque certaines lignes, cependant, ma boucle loop commence par la ligne 12, et dans mon cas elle se retrouver masquée, d'où le problème !!!!!... bon reste à savoir comment arranger mon tri pour ne pas bloquer la boucle... à vos idées !
0
Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 2
9 avril 2013 à 10:37
Ou alors... il faut que je trouve une autre condition que Do While Cherche <> ""... comment lui indiquer autre chose, genre Do ... sur la plage de cellule ?... ligne??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 2
9 avril 2013 à 10:42
TROUVE !!!! Je sais je cause toute seule. Bon voilà mon résultat de recherche sur ma partie TEST.
Dans le tri, je supprime la mention masquant les lignes vides.
Et dans la boucle, je remplace DO WHILE CHERCHER <>"", par DO UNTIL B=250
comme suit :

B = 12 'Numéro de la ligne pour commencer la recherche
Set Cherche = Sheets(2).Cells(B, 71)
Set Indique = Sheets(2).Cells(B, 10)
Do Until B = 250
With Sheets(1).Range("BS12:BS250")
Set trouve = .Find(Cherche, LookIn:=xlValues)
If Not trouve Is Nothing Then
Sheets(1).Cells(trouve.Row, 10).Value = Indique.Value
End If
End With
B = B + 1
Set Cherche = Sheets(2).Cells(B, 71)
Set Indique = Sheets(2).Cells(B, 10)
Loop

Dans mon essai c bon... je fais les modifs dans mon fichier de base, je teste, et je vous redis...
0
Snoopy6102000 Messages postés 66 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 18 décembre 2013 2
9 avril 2013 à 11:45
C bon, la modification a fonctionné correctement.
0