Apparition variable dans chaine de caractère

Bonjour à toutes et à tous,

je suis légèrement embêtée par une bricole... J'affecte la valeur d'une cellule à une variable (MC1). Ensuite je cherche à savoir si la variable MC1 apparaît dans une chaîne de caractère qui est dans une celule. Pour cela j'utilise la fonction Like et les caractères * de la manière suivante :

MC1 = Sheets("Feuil1").Range("C3").Value 'Récupère ce qui a été entré dans la case C3 et le stocke dans la variable MC1

i = Sheets("Liste").Range("I1").Value 'Nombre de fichiers répertoriés

        'Si 1 mot-clé est renseigné
        If Sheets("Feuil1").Range("C3") <> "" And Sheets("Feuil1").Range("D3") = "" And Sheets("Feuil1").Range("E3") = "" Then
            For j = 2 To i + 1 'j va parcourir la liste de tout les fichiers référencés précédemment, i+1 car l'intervalle est [|2;i+1[|
                k = 18 + j
                If Sheets("Liste").Range("B" & j).Value Like "*" & MC1 & "*" Then
                    Sheets("Liste").Range("A" & j & ":F" & j).Copy Sheets("Feuil1").Range("A" & k & ":F" & k) 'Remplit la k-ième ligne du tableau de résultat
                    k = k + 1
                Else
                    j = j + 1
                End If
            Next
       End If

Le problème est que le programme ne passe pas dans la boucle For...

Si quelqu'un a une solution/explication, je suis toute ouïe.

If Sheets("Feuil1").Range("C3") <> "" And Sheets("Feuil1").Range("D3") = "" And Sheets("Feuil1").Range("E3") = "" Then

Mets en couleur ces 3 cellules dans la feuille1. Pour rentrer dans ta boucle, il faut que

C3 soit non vide ET D3 soit vide ET E3 soit vide.

Si visuellement cela semble respecté, vérifie que tu n'as pas oublié un espace ou autre dans les cellules D3 et E3.

Bonjour Noémie, bonjour le forum,

Si le programme ne passe pas la boucle For ... Next , c'est que la condition :

If Sheets("Feuil1").Range("C3") <> "" And Sheets("Feuil1").Range("D3") = "" And Sheets("Feuil1").Range("E3") = "" Then

n'est pas remplie. Je ne vois que cette explication...

Tu peux essayer la fonction INSTR au lien de LIKE. Regarde l'aide VBA mais ça donnerait :

If InStr(1, Sheets("Liste").Range("B" & j).Value, MC1, vbTextCompare) <> 0 Then

[Édition]

Bonjour D3d9x nos post se sont croisés...

j'ai vérifié et mes cases sont bien vides...


Bonjour TauTheme,

J'ai essayé avec ceci :

If InStr(Sheets("Liste").Range("B" & j).Value, MC1) <> 0 Then

Mais j'ai eu le même problème, à savoir que aucune correspondance est trouvée (alors qu'il devrait en avoir une...)

j'ai également supprimé la condition if pour forcer le programme à aller dans la boucle For mais il n'y entre toujours pas... Je ne vois pas l'erreur dans la boucle For...

Bonjour,

met un Stop au début et fais en pas à pas avec F8.

Dès que le programme fait autre chose que ce que tu as prévu contrôle la valeur de tes variables ou expressions en sélectionnant le texte et en mettant la souris dessus, ou en faisant glisser l'expression sélectionnée dans la fenêtre Espions (menu Affichage).

eric

Re à tous,

l'erreur venait du fait que la valeur de i se trouvais dans la case J1 et non pas I1 (oui j'ai très très honte...). Le problème maintenant est le suivant : Si plusieurs lignes correspondent, il ne les copie pas toutes...

PS : j'espère que ta citation est vraie, eriiic


C'est bon, problème résolu !! Merci à tous pour votre aide

PS : ce qui bloquait était la boucle

Else
    j = j+ 1

Elle passait certaines lignes (celles qui venaient juste après les lignes copiées)

Rechercher des sujets similaires à "apparition variable chaine caractere"