Valeurs non trouvé avec .find
Bonjour,
Je cherche a comprendre pourquoi le .find utilisé ne me trouve pas certaines valeurs qu'il doit chercher.
Les étapes de la macro sont les suivantes:
- Je stocke la première famille (CAT A) dans une variable,
- Je stocke le premier libellé (Impression toto) de cette famille dans une variable,
- Je cherche si ce libellé (Impression toto) sans respect de casse est présent dans une des cellules de la colonne F
- Si le libellé (Impression toto) est trouvé en colonne F:
je stocke le numéro de la ligne sur lequel il est trouvé (ici ligne 3), - je rappatrie la famille à laquelle il appartient (CAT A) dans la colonne E et à la ligne stockée (ligne 3),
Merci d'avances de vos eclaircissements pour des modifications minimales car le code est déjà existant. Je joins egalement le fichier et le code:
Option Explicit
Private lgRowFind As Long ' n° de ligne où l'on trouve le mot. Sert de repère pour la recherche suivante
Sub sYearsBilan()
Dim Col_Cat As Long ' n° de colonne de "Cat"
Dim Ligne_Cat As Long ' n° de ligne de "Cat"
Dim Famille As String
Worksheets(1).Range("G2:G12").Select 'Vide la colonne G
Selection.ClearContents
Col_Cat = 2 ' Initialisation de la colonne où commencent les étiquettes à chercher
Do While Worksheets(1).Cells(2, Col_Cat).Value <> Empty 'Boucle tant que je trouve des familles (CAT A, CATB...) sur la ligne 2 de la feuille "Cat"
Famille = Worksheets(1).Cells(2, Col_Cat).Value 'Je stocke la famille (CAT A, CAT B...) dans une variable
Ligne_Cat = 2 'Initialisation de la ligne où commence la recherche des libellés
Do While Ligne_Cat <> Worksheets(1).Cells(Rows.Count, Col_Cat).End(xlUp).Row + 1 ' Tant qu'il y a des libellés : on controles les lignes
lgRowFind = 1 'intialisation de la ligne de recherche
' Lancement de la recherche
Do While Not fcFindInSheet(Worksheets(1).Cells(Ligne_Cat, Col_Cat).Value, Worksheets(1)) Is Nothing
Worksheets(1).Cells(lgRowFind, 7).Value = Famille 'Rappatrie la famille à laquelle appartient le libéllé trouvé dans la colonne E
Loop
Ligne_Cat = Ligne_Cat + 1 ' Je passe au libellé suivant
Loop
Col_Cat = Col_Cat + 1 ' Je passe à la famille suivante
Loop
End Sub
Public Function fcFindInSheet(vNameFind As Variant, wtName As Worksheet) As Range
Set fcFindInSheet = wtName.Range("F" & lgRowFind + 1 & ":" & "F" & wtName.Cells(Rows.Count, "F").End(xlUp).Row + 1).Find(vNameFind, LookIn:=xlValues)
If Not fcFindInSheet Is Nothing Then lgRowFind = fcFindInSheet.Row
End FunctionSteelk
Bonjour,
j'ai modifié ton code (suppression de la fonction de recherche). elle donne un problème mais je n'ai pas trouvé pourquoi.
Bonjour h2so4,
Super merci!!! Effectivement, une des valeurs "IMPRESSION toto" n'est toujours pas trouvée.
Meme si je remplace "IMPRESSION toto" par "Impression toto" en F3 ca ne change rien. Par contre si je rajoute "Impression toto" en F13 par un copier coller de B2, lui est trouvé....
N'est-on pas confronté à un problème de format de la cellule F3?
Merci encore pour cette progression.
Steelk
steelk a écrit :Bonjour h2so4,
Super merci!!! Effectivement, une des valeurs "IMPRESSION toto" n'est toujours pas trouvée.
Meme si je remplace "IMPRESSION toto" par "Impression toto" en F3 ca ne change rien. Par contre si je rajoute "Impression toto" en F13 par un copier coller de B2, lui est trouvé....
N'est-on pas confronté à un problème de format de la cellule F3?
Merci encore pour cette progression.
Steelk
pour le cas "impression toto", tu as 2 espaces entre impression et toto dans cat A et un espace dans ta liste, il est donc normal que ce ne soit pas trouvé.
Merci encore.
Steelk