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:

  1. Je stocke la première famille (CAT A) dans une variable,
  2. Je stocke le premier libellé (Impression toto) de cette famille dans une variable,
  3. 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),
  • Si le libellé n'est pas trouvé, je passe au libellé suivant de la famille CAT A,
  • Si il n'y a plus de libéllé dans la premiere famille, je passe à la deuxieme famille CAT B
  • Je stocke la deuxieme famille (CAT B) dans une variable,
  • Je stocke le premier libellé (Vacances) de cette famille dans une variable,
  • ...
  • 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 Function

    Steelk

    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é.

    désolé je m'y perds a force.

    Merci encore.

    Steelk

    Rechercher des sujets similaires à "valeurs trouve find"