Probleme avec macro recherche excel
lindette
Messages postés
38
Statut
Membre
-
Polux31 Messages postés 7219 Statut Membre -
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
J'ai créer une macro déclenche par crtl + h qui ouvre une boite de dialogue dans laquelle on rentre le nom à rechercher dans la colonne A (nom et prénom client)
mais j'ai un probleme si je fais une recherche sur le nom SIMON et bien il me place sur AMEDEE SIMON alors que Simon est les prénom et j'ai un autre client qui lui a pour nom SIMON (je n'ai pas de prénom) . Et moi j'aimerais vraiment qu'il fasse la rechercher par le nom et si nécessaire aprés par le prénom. Quelqu'un aurait il une petite idée?
voici ma macro
Sub recherche()
Dim rngTrouve As Range
Dim strChaine As String
strChaine = InputBox("Nom à rechercher :")
Set rngTrouve = ActiveSheet.Columns(1).Cells.Find(what:=strChaine)
If rngTrouve Is Nothing Then
MsgBox "Pas trouvé"
Else
Cells.Find(what:=strChaine).Activate
End If
Set rngTrouve = Nothing
End Sub
Merci d'avance
Linda
J'ai créer une macro déclenche par crtl + h qui ouvre une boite de dialogue dans laquelle on rentre le nom à rechercher dans la colonne A (nom et prénom client)
mais j'ai un probleme si je fais une recherche sur le nom SIMON et bien il me place sur AMEDEE SIMON alors que Simon est les prénom et j'ai un autre client qui lui a pour nom SIMON (je n'ai pas de prénom) . Et moi j'aimerais vraiment qu'il fasse la rechercher par le nom et si nécessaire aprés par le prénom. Quelqu'un aurait il une petite idée?
voici ma macro
Sub recherche()
Dim rngTrouve As Range
Dim strChaine As String
strChaine = InputBox("Nom à rechercher :")
Set rngTrouve = ActiveSheet.Columns(1).Cells.Find(what:=strChaine)
If rngTrouve Is Nothing Then
MsgBox "Pas trouvé"
Else
Cells.Find(what:=strChaine).Activate
End If
Set rngTrouve = Nothing
End Sub
Merci d'avance
Linda
Configuration: Windows XP Internet Explorer 6.0
6 réponses
-
Bonjour,
C'est normal que ta recherche se place sur le premier élément trouvé. Tu fais une recherche sur une chaine de caractère contenu dans une cellule. Ce que tu demandes est un plus complexe et le fait d'avoir le nom et le prénom dans la même colonne complique encore plus la recherche. Il faudrait une fonction qui te retourne la première chaîne de caractère d'une cellule(avant le premier espace) et que tu compare ensuite au nom entré par l'utilisateur, mais les noms composés passeront au travers.
Voilà un exemple de fonction qui retourne la première chaîne de caractère, celle juste avant un espace:
Public Function returnPremChaine(Byval str As String) As String Dim i As Integer Dim lg As Integer lg = Len(str) For i = 1 To lg If Mid(str,i,1) = " " Then returnPremChaine = Mid(str,1, i - 1) End If Next i End Function
Bon courage
;o)
Polux -
Bonjour
merci pour ta réponse mais je n'arrive pas à l'appliquer.Je continues néanmoins à essayer...
merci encore
Lindette -
bonsoir,
Voilà un exemple pour utiliser la fonction:
Public Sub searchName() Dim strChaine As String Dim i As Integer i = 1 strChaine = InputBox("Nom à rechercher :") With Worksheets("Feuil1") While .Range("A" & i).Value <> " " If strChaine = returnPremChaine(.Range("A" & i).Value) Then .Range("A" & i).Activate End If i = i + 1 Wend End Sub
Bon courage
;o)
Polux -
Bonjour Polux
J ai eu quelques problemes de connexion internet mais c'est maintenant résolu. Je vais donc travaillé sur les codes que tu as eu la gentillesse de m'envoyer.
Je te tiens au courant
merci
Lindette -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Rebonsoir
bon j'ai essayer de mettre en application le code mais message d'erreur "dépassement de capacité" et c'est par rapport à i = i + 1
et je séche complétement. As-tu une idée?
Merci
Linda -
bonjour,
Ca vient peut être de là :
While .Range("A" & i).Value <> " "
met ça : While .Range("A" & i).Value <> ""
remplace : Dim i As Integer par Dim i As Long
Tiens moi au courant stp
Polux