VBA - Macro de Recherche dans une liste

  • Initiateur de la discussion Initiateur de la discussion Chouffy
  • Date de début Date de début

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 !

C

Chouffy

Guest
Bonjour,

N'y connaissant pas grand chose en VBA 🙁 , j'ai besoin de vos lumieres.

J'essaie de creer une fonction de recherche sur une liste de produits... pour le moment la prog (c'est pas la mienne, mais c'est des bouts de code piqués à droite et à gauche puis assemblés... merci aux différents auteurs 😉 ressemble à ça .

Sub cherch()

'ANNONCE PROD A CHERCHE
Message = "Entrez le nom (ou une partie du nom) du produit à chercher"
Title = "Recherche"
Dfault = "à entrer ici"
ficnum$ = InputBox(Message, Title, Dfault)

'rechercher la valeur
Sheets("Liste cycle").Select
Range("B:B").Select
'Définie la valeur à rechercher
'ficNUM$ = tbCARTE.Value
'Effectue la recherche

Do
On Error Resume Next
Selection.Find(What:=ficnum$, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Select
If Err <> 0 Then
Sheets("Faire un Devis").Select
MsgBox "Produit inconnu : êtes vous sur de l'orthographe ?"
Exit Sub
End If
Dim Retour As Integer
Retour = MsgBox("Question à poser", vbYesNo + vbCritical + vbDefaultButton2, "Continuer ?")
If Retour = vbYes Then
Range("A1000") = "OUI"
Else
Range("A1000") = "NON"
End If
Loop While Range("A1000").Value = "OUI"

End Sub

Ca fonctionne, mais je souhaiterai pouvoir (grace a la message box) relancer la recherche sur les produits qui sont plus bas dans la liste, car certains peuvent avoir une partie de l'orthographe commune. Hors a chaque fois que je clique sur "oui", pour relancer la boucle, il revient sur le produit précedement trouvé et ne descend pas dans la suite de la liste.

Si vous avez une idée pour corriger ce probleme,

Merci, Florian
 
Bonsoir Chouffy et le Forum

La macro passe en revue les différentes occurences d'un produit.

Sub Chercher()
Dim Msg As String, Style, Title As String, Default As String
Dim MyValue As String
Dim countTot As Long
Dim counter As Long
Dim foundCell As Variant
Dim loopAddr As Variant
Dim returnValue As String
'Mot à chercher
Msg = "Entrez le nom (ou une partie du nom) du produit à chercher"
Title = "Recherche"
Default = "à entrer ici"
MyValue = InputBox(Msg, Title, Default)

'Afficher la feuille
Sheets("Liste cycle").Activate
If MyValue = "" Then Exit Sub
countTot = countTot + Application.CountIf(Sheets("Liste cycle").UsedRange, "=" & MyValue)
If countTot = 0 Then
returnValue = MsgBox(" La valeur " & MyValue & " n'est pas enregistrée ", vbOKOnly, " Message ")
Else
counter = 0
With ActiveSheet
.Activate
Set foundCell = .Cells.Find(What:=MyValue, LookIn:=xlValues, LookAt:=xlPart)
If Not foundCell Is Nothing Then
loopAddr = foundCell.Address
Do
counter = counter + 1
foundCell.Activate
If counter = countTot Then
returnValue = MsgBox("Dernière valeur !", vbOKOnly, "Message")
Else
returnValue = MsgBox(" Le produit " & MyValue & " est présent " & countTot & " fois " & vbLf & _
" Voulez vous continuer la recherche ? ", vbYesNo, "Message")
If returnValue = vbNo Then Exit Sub
Set foundCell = .Cells.FindNext(After:=foundCell)
End If
Loop Until counter = countTot
End If
End With
End If
End Sub

J'espère qu'elle répond à ton attente ?

Cordialement

CbernardT
 
Bonjour,

Merci beaucoup pour votre aide.

Apres test de votre proposition, ce n'est pas encore le résultat que je cherche.

Avec cette macro :

* Pour obtenir un résultat de recherche, il faut que rentrer exactement le mot cherché : ex. : si je cherche le produit "voiture" je dois entrer "voiture". Si je rentre "voit", la macro ne trouve rien. De la même manière la rechecherche est sensible à la casse : ex. : si je cherche le produit "voiture" je dois entrer "voiture". Si je rentre "Voiture" (avec un V majuscule), la macro ne trouve rien.

* Le nombre d'occurence affiché est faussé : il m'affiche à chaque fois le nombre total / 2. Ex. 😛our un total reel de 6 occurences, la macro me dit qu'elle n'en trouve que 3.

Si vous avez des pistes,

Merci d'avance 😉 Florian
 
* Le nombre d'occurence affiché est faussé : il m'affiche à chaque fois le nombre total / 2. Ex. 😛our un total reel de 6 occurences, la macro me dit qu'elle n'en trouve que 3.

J'ai trouvé d'ou vient ce pbm... c'est de mon côté que ca cloche car j'ai 2 colonnes avec les mêmes produits sur la même feuille
 
En fairt j'ai trouvé une partie de mon bonheur ici : http://bipbipcoyote2000.site.voila.fr/Excel/RechercheEtColorier/Pages/RechercheEtColorier.html

Je vais faire un mix de cette solution avec la votre. Merci encore pour tout !
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
537
Réponses
4
Affichages
244
Réponses
7
Affichages
165
Retour