Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
J'utilise Find pour trouver un mot et allouer un variable à la valeur correspondant au mot. Malheureusement, bien que le mot existe Find ne le trouve pas ?
la méthode Find() n'aime tout simplement pas les cellules fusionnées donc, soit tu "défusionnes" soit tu boucles sur chaque cellule :
Code:
Sub Test()
Dim Plage As Range
Dim Cel As Range
Dim Mot As String
Dim VE
Set Plage = Range("b1:b100")
Mot = "Encaisseuse"
For Each Cel In Plage
If Cel.Value = Mot Then VE = 0 Else VE = Cel.Offset(1, 2).Value: Exit For
Next Cel
MsgBox VE
End Sub
Peut-être que le 4ème argument de Find était sur xlWhole... Essayez :
Code:
Sub Cherche()
Dim x$, c As Range
x = InputBox("Entrez le texte recherché :")
If x = "" Then Exit Sub
Set c = Cells.Find(x, , xlValues, xlPart)
x = "'" & x & "'"
If c Is Nothing Then msgbox x & " pas trouvé..." Else msgbox x & " trouvé en " & c.Address(0, 0)
End Sub
Edit : "Encaisseuse" est trouvé mais "M305-AVE 300 ML"n'est pas trouvé...
Ton code contient plusieurs erreurs :
• Le texte recherché doit être entre guillemets "Encaisseuse".
• Si tu déclares plusieurs variables sur la même ligne, tu dois en spécifier le type pour chacune d'entre elles.
• Si tu as plusieurs fois le même texte recherché (c'est le cas pour "Encaisseuse"), ton code ne renverra que la première occurrence trouvée.
• Par la suite, n'utilise pas ActiveCell mais Trouve pour récupérer les valeurs...
En revanche, je ne comprends pas pourquoi avec la variable Plage, ça ne marche pas ?!...
VB:
Dim O As Worksheet
Dim VE As Integer, VECB As Integer
Dim Trouve As Range
Set O = Worksheets("Feuil2")
'Valeur présente
Set Trouve = O.Cells.Find("Encaisseuse", lookat:=xlWhole)
If Trouve Is Nothing Then
VE = 0
Else
VE = Trouve.Offset(1, 2)
End If
Set Trouve = Nothing
'Valeur absente
Set Trouve = O.Cells.Find("Étiquetteuse", lookat:=xlWhole)
If Trouve Is Nothing Then
VECB = 0
Else
VECB = Trouve.Offset(1, 2)
End If
Set Trouve = Nothing
End Sub
[Édition] Bonjour Theze, Job, nos posts se sont croisés...
"M305-AVE 300 ML" sera trouvé si l'on démarre la recherche après la dernière cellule de la feuille (XFD1048576) :
Code:
Sub Cherche()
Dim x$, c As Range
x = InputBox("Entrez le texte recherché :")
If x = "" Then Exit Sub
Set c = Cells.Find(x, Cells(Rows.Count, Columns.Count), xlValues, xlPart)
x = "'" & x & "'"
If c Is Nothing Then msgbox x & " pas trouvé..." Else msgbox x & " trouvé en " & c.Address(0, 0)
End Sub
Theze :
Voici le résultat :
'Mot encaisseeuse présent valeur = 219 OK
'Mot étiquetteuse absent valeur = 219 devrait être 0
Robert :
Pour le texte entre guillemets l'aide me disait de ne pas en mettre. 🙁
Plage était pour délimiter la zone de recherche
Fonctionne très bien.
Job75:
Malheureusement le code fonctionne sur 2 fichiers et j'ai 15 mots à trouver (toujours les mêmes), c'est pourquoi je ne peux utiliser le Inpubox.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD