Je viens vous soumettre le problème suivant que je n'arrive pas à résoudre; à savoir récupérer dans une cellule la valeur saisie dans une Inputbox pour la comparer avec la valeur trouvée (sélectionnée) par celle-ci et m'assurer que ces 2 valeurs sont bien égales.
Ces valeurs cherchées dans une colonne sont des noms (et des prénoms) et je voudrais si je saisis le nom "Pierre" (prénom Jean) que la macro ne sélectionne pas le nom "Dupond" (prénom Pierre).
Je pense donc que pour cela il faut comparer le nom saisi dans l'InputBox avec celui qui va être sélectionné et afficher un message d'erreur si dans l'exemple ci-dessus le Prénom "Pierre" est sélectionné et pas le Nom "Pierre".
Le code que j'utilise est le suivant :
Code:
Private Sub CommandButton31_Click()
On Error GoTo GestErreur
noms = InputBox("Saisissez le Nom du Locataire", "Sélection du Locataire", xpos:=300, ypos:=300)
Range("G6").Select
a = [G6:G57].Find(What:=noms, after:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Address
If a = "" Then
GestErreur:
MsgBox "Ce Nom n'existe pas dans la Liste des Locataires!"
End
Else
Range(a).Select
End If
End Sub
Peut-être est-il plus simple d'afficher le message d"erreur tant que le Nom et le Prénom n'ont pas été saisis correctement ?
Je vous remercie pour vos réponses et vous souhaite une bonne soirée.
Re : Récupérer dans une cellule la valeur saisie dans l'InputBox
Bonsoir Nonno 94,
je sais pas si cela correspond à cela ?
Code :
Private Sub CommandButton31_Click()
On Error GoTo GestErreur
noms = InputBox("Saisissez le Nom du Locataire", "Sélection du Locataire", xpos:=300, ypos:=300)
Range("G6").Select
a = [G6:G57].Find(What:=noms, after:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Address
If a = "" And noms = "" Then ' a = la recherche dans la liste et noms la variable qui
' qui contient le noms saisie de l 'iputbox (Enfin and =
' et entre les deux le comparateur absolu si ls deux
' deux condition sont réuni "la condition est vrais")
GestErreur:
MsgBox "Ce Nom n'existe pas dans la Liste des Locataires!"
Re : Récupérer dans une cellule la valeur saisie dans l'InputBox
Bonsoir,
Code:
Private Sub CommandButton31_Click()
Dim nom$, a As Range
nom = InputBox("Saisissez le Nom du Locataire", "Sélection du Locataire", xpos:=300, ypos:=300)
Set a = [G6:G57].Find(nom, LookIn:=xlValues, LookAt:=xlPart)
If a Is Nothing Then MsgBox "Ce Nom n'existe pas dans la Liste des Locataires!": Exit Sub
a.Select
End Sub
Re : Récupérer dans une cellule la valeur saisie dans l'InputBox
Bonsoir Laurent950 et Job 75 et merci pour vos réponses.
Celles-ci ne correspondent malheureusement pas à ma demande car vos codes sélectionnent les mots ou parties de mots présents dans la colonne.
Ainsi, dans la liste suivante,
- si je saisis "Ba"dans l'InputBox, je vais sélectionner "Bachelin" alors que je voudrais que s'affiche un message d'erreur car "Bailly" correspond également à la saisie dans l'InputBox.
- si je saisis "Fr", je vais sélectionner "Bachelin" parceque le prénom de Bachelin est "François".
- si je saisis "et", je vais sélectionner "Bachelin" parceque le "Locataire est "Bachelin Frank et Karine.
Dans ces 3 cas, la saisie dans l'Inputbox est erronée et ne devrait pas permettre de sélectionner un "Locataire" !
Code:
Bailly Christelle
Bachelin Frank et Karine
Ferreira Sandrine
Lala Arf
Lala Arf 2
Aussi, ce que souhaiterais est d'être obligé de saisir le Nom et le Prénom pour être sur de bien sélectionner le "Locataire" voulu.
Dans le cas d'une saisie incomplète, un message d'erreur s"afficherait indiquant que ce nom n'existe pas dans la liste.
Est-ce possible ?
Faut-il comparer (tester) la Saisie dans l'InputBox avec le Locataire sélectionné et afficher un message d'erreur tant qu'ils ne sont pas identiques; à savoir Nom et Prénom saisis = Nom et Prénom du "Locataire" sélectionné dans la colonne ?
Re : Récupérer dans une cellule la valeur saisie dans l'InputBox
Re Nonno 94,
Comme maintenant nous savons que le nom est toujours avant le prénom avec l'espace comme séparateur :
Code:
Private Sub CommandButton31_Click()
Dim nom$, a As Range
nom = InputBox("Saisissez le Nom du Locataire", "Sélection du Locataire", xpos:=300, ypos:=300)
Set a = [G6:G57].Find(nom & " *", LookIn:=xlValues, LookAt:=xlWhole)
If a Is Nothing Then MsgBox "Ce Nom n'existe pas dans la Liste des Locataires!": Exit Sub
a.Select
End Sub
Edit : Bien évidemment si vous voulez qu'on entre nom+prénom (laborieux...), il suffit d'utiliser :
Code:
Private Sub CommandButton31_Click()
Dim nom$, a As Range
nom = InputBox("Saisissez le Nom du Locataire", "Sélection du Locataire", xpos:=300, ypos:=300)
Set a = [G6:G57].Find(nom, LookIn:=xlValues, LookAt:xlWhole)
If a Is Nothing Then MsgBox "Ce Nom n'existe pas dans la Liste des Locataires!": Exit Sub
a.Select
End Sub
Re : Récupérer dans une cellule la valeur saisie dans l'InputBox
Re Job 75,
je voulais peut-être prolonger le "suspense" ?
Bravo pour ce code qui permet de sélectionner le Nom voulu.
Mais, quid si 2 locataires portent le même nom ?
La liste n'est pas classée dans l'ordre alphabétique mais dans un ordre chronologique).
De ce fait, si Dupont Jean se trouve sur la ligne 1, Dupont Pierre sur la 50 (caché en bas de page) et si je saisis Dupont ignorant qu'il y a 2 Dupont dans la liste, je ne sélectionnerai jamais Dupont Pierre !
Une solution "à la Nonno" = renommer Dupont Pierre Dupond Pierre !
Une solution "informatiquement" correcte me semble s'imposer !
Re : Récupérer dans une cellule la valeur saisie dans l'InputBox
Bonjour Job 75,
il est exact que la fonction "Recherche" me conviendrait parfaitement; à condition que la liste soit triée dans l'ordre alphabétique.
Ce n'est pas le cas. Aussi, je vais utiliser un des 2 codes transmis.