Macro Recherche avec condition

  • Initiateur de la discussion Initiateur de la discussion jcf83
  • 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 !

jcf83

XLDnaute Nouveau
Bonjour à tous !
Je bloque sur un problème de macro et je n'arrive pas à m'en sortir, je viens rechercher votre aide.😱

Soit : un tableau Excel de 5 colonnes : N° de colis ; Objet ; Date d'envoi ; Date de retour ; Expéditeur (je le met en pièce jointe...)

Ennoncé du problème : recherche dans la colonne E ("Expediteur"), une valeur, mais avec la condition que la cellule C ("Date d'envoi") soit vide, si cette cellule est vide, la recherche continue.

Là où ça coince : ma recherche fonctionne bien, tant qu'il trouve un résultat associé à une cellule vide, de la colonne C.
(dans mon tableau exemple, en lançant une recherche sur "eric" par exemple, ça buggue...)

--------------------

Sub recherche()
Dim resultat_trouve As Range
Dim recherche_donnees As String
recherche_donnees = InputBox("Renseigner l'expéditeur : ")
Set resultat_trouve = ActiveSheet.Columns(5).Cells.Find(what:=recherche_donnees)
If resultat_trouve Is Nothing Then
MsgBox "Il n'y a pas de " & recherche_donnees
Else
While resultat_trouve.Offset(0, -2).Value <> ""
Set resultat_trouve = Cells.Find(what:=recherche_donnees, After:=resultat_trouve.Cells, LookIn:=xlFormulas, SearchDirection:=xlNext)
Wend
MsgBox "Le n° du colis est le : " & resultat_trouve.Offset(0, -4).Value & " ( sur la ligne : " & resultat_trouve.Row & " )"
End If
Set resultat_trouve = Nothing
End Sub
 

Pièces jointes

Re : Macro Recherche avec condition

Bonjour
Sub recherche()
Dim recherche_donnees As String
recherche_donnees = InputBox("Renseigner l'expéditeur : ")
trouve = 1
With ActiveSheet.Columns(5)
Set c = .Find(recherche_donnees, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If Len(Cells(c.Row, 3).Value) = 0 Then
trouve = 0
Exit Do
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
If trouve = 0 Then
MsgBox "Le n° du colis est le : " & Cells(c.Row, 1).Value & " à la ligne " & c.Row
Else
MsgBox "Toutes les commandes de ce client ont été honoré"
End If
End With
End Sub
Cette macro est pour une date d'envoi nul...
pour une date d'envoi deja hononre c'est
If Len(Cells(c.Row, 3).Value) <> 0 Then

A+ François
 
- 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

Discussions similaires

Réponses
2
Affichages
282
Réponses
2
Affichages
519
Réponses
12
Affichages
884
Réponses
4
Affichages
1 K
Réponses
22
Affichages
3 K
Retour