Erreur dans Boucle Loop macro Excel introuvable...
Résolu
Snoopy6102000
Messages postés
66
Date d'inscription
Statut
Membre
Dernière intervention
-
Snoopy6102000 Messages postés 66 Date d'inscription Statut Membre Dernière intervention -
Snoopy6102000 Messages postés 66 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Erreur dans Boucle Loop macro Excel introuvable...
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
6 réponses
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.
Ha bah non... visiblement en faisant le tri de cette manière là ça marche qd même dans mon fichier test...
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 !
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??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
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...