Utilisation valeur inputbox dans IF [Fermé]

- - Dernière réponse :  sam - 8 nov. 2018 à 09:31
Bonjour,

N'étant pas du tout une expert en VBA (et ayant fouillée déjà pas mal de forum en tout genre sinon je ne vous dérangerais pas ^^'), j'aurais besoin de vos lumières s'il-vous-plait...

Je vous explique mon objectif :

Je dispose d'une base avec en colonne A des commentaires et je voudrais coder en colonne B le sujet que traite ces commentaires (par exemple A2= "la météo est vraiment agréable aujourd'hui" > B2 = 1, 1 faisant référence au sujet 1 : météo).

J'arrive à faire cette opération avec un contenu directement écrit dans la macro (si j'écris "météo" il arrive à me coder 1 lorsque ce mot apparait dans le commentaire) mais l'idée étant de pouvoir simplifier le codage, y compris à des collègues qui n'y connaissent rien en VBA, et pour divers sujets, j'ai entrepris d'avoir recours à une Imputbox.
Mon but : que pour n'importe quel fichier (construit de la même manière), chacun puisse noter dans l'Inputbox le sujet qui l'intéresse et que le codage se fasse. L'idée étant ensuite de pouvoir proposer plusieurs codes et non un seul (un même fichier peut traiter de météo -codé 1, de restaurant -codé 2..., selon ce que l'utilisateur décide).
J'espère que c'est compréhensible...?

Voilà le code que j'ai commencé.
Je me doute qu'il y a surement des choses qui peuvent être mieux faites (je prends bien sûr vos remarques) mais soyez indulgent pour l'instant le but était juste que ça fonctionne...

Merci de votre aide !


'ajouter formulaire pour que l'utilisateur détermine quels mots chercher
Dim Valeur1 As String
Valeur1 = InputBox("Entrez le premier mot à coder : ", "Coder le premier mot")

' Ajouter deux lignes avec le code et sa valeur
Rows("2:3").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
' valeur
Range("B2").Value = Valeur1
' code
Range("B3").Value = 1

' Analyse qualitative : si la cellule contient ... coder .
Dim i As Long
Dim maLigne As Long
maLigne = Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False

For i = 4 To maLigne
If Range("A" & i).Value Like Valeur1 Then ' ICI
Range("B" & i).Select
ActiveCell.FormulaR1C1 = "1" 'coder 1 si la valeur de l'Inputbox se trouve dans le commentaire
Else: Range("B" & i) = "0" ' 0 sinon
End If
Next i

Jusque là tout fonctionne, mon problème se trouve lorsque je passe au codage des commentaires (ICI).
Aucun message d'erreur, j'ai juste l'impression qu'il ne reconnait pas Valeur1 comme le résultat de mon InputBox mais comme la valeur qu'il doit chercher (évidemment aucun des commentaires ne contient ça donc je n'obtiens que des 0). Si vous pouvez m'éclairer parce que je ne vois pas ce qu'il faut changer pour que ça fonctionne...
Afficher la suite 

3 réponses

Messages postés
14865
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 novembre 2019
1192
0
Merci
Bonjour,

a voir, le lien est en anglais mais le contenu est en français :
https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/operators/like-operator
Messages postés
1857
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
12 juillet 2019
532
0
Merci
Bonjour,

En fait il suffit de modifier par l'instruction suivante :

If Range("A" & i).Value Like "*" & Valeur1 & "*" Then


Comme ça il cherche bien une chaîne contenant Valeur1
f894009
Messages postés
14865
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 novembre 2019
1192 -
Bonjour,
Tout à fait Thierry, mais un peu de lecture ne lui fera pas de mal........
0
Merci
Bonjour,
Magnifique ça fonctionne !
Merci beaucoup pour vos réponses (et la lecture)
Bonne continuation à vous