|
|
|
|
Bonjour,
Dans un classeur Excel j’utilise la fonction suivante :
=SI($E$28="";"";RECHERCHEV($E$6; Données!E2:F12;2;FAUX))
pour récupérer la valeur de la deuxième colonne de la feuille "Données". Quand la valeur de référence est trouvée, je récupère bien la bonne valeur. Par contre quand la valeur de référence n'est pas trouvée j'ai comme retour #N/A, ce qui est normal puisque la valeur de référence n'est pas reconnue.
Je souhaitais, dans un premier temps, pouvoir remplacer #N/A par quelque chose de plus parlant, dans le style :
- Numéro adhérent inconnu.
Ici même et avec la complicité de « Vaucluse » ma formule est devenue :
=SI($E6="";"";SI(ESTERREUR(RECHERCHEV($E6;Données!E2:F12;2;FAUX));"Numéro d'adhérent inconnu..";RECHERCHEV($E6;Données!E2:F12;2;FAUX)))
Cela fonctionne puisque je remplace #N/A par "Numéro d'adhérent inconnu…".
Par contre je souhaiterais maintenant aller plus loin. Serait-il pas possible quand une correspondance n’est pas trouvée et après affichage du message d’erreur d’ouvrir une boite de dialogue avec un message explicite, sur la raison du message d’erreur, et une ou deux zones de saisie pour entrer le nom et prénom. Cette boite de dialogue pourrait être appelé par une valeur précise dans la cellule de la colonne « D » (SC par exemple) ?
Dans mon exemple la valeur de la cellule « D6 » n’est pas reconnu et a pour conséquence d’afficher dans la cellule « F6 » "Numéro d'adhérent inconnu…". Dans ce cas si on remplace le contenu de « D6 » par « SC » ne pourrait-on pas afficher une boite de saisie (InputBox, je crois) avec un texte libre et deux champs, un pour le nom l’autre pour le prénom, qui serait ensuite inscrit dans la cellule « F6 » en respectant la syntaxe des champs de la colonne « F ».
Si cela est possible vous serez t il possible de me proposer une macro que je pourrais utiliser.
Ci-dessous un lien pour un fichier exemple.
http://cjoint.com/?kmjOq1ZC8K
Désolé d'avoir été aussi long mais je veux être clair...
En vous remerciant par avance.
Cordialement.
Mistral
Configuration: Windows XP Internet Explorer 7.0
Répondre à gbinforme
|
Bonjour
Private Sub Worksheet_Change(ByVal sel As Range)
If sel.Column = 4 Then
If Cells(sel.Row, 6).Value = "Numéro d'adhérent inconnu.." Then
Dim nom As String
Dim pnom As String
nom = Application.InputBox("Nom de l'adhérent", "Saisie du nom inconnu", , sel.Left, sel.Top)
If nom = False Then Exit Sub
pnom = Application.InputBox("Prénom de l'adhérent", "Saisie du prénom inconnu", , sel.Left, sel.Top)
If pnom = False Then Exit Sub
nom = UCase(Left(nom, 1)) & Mid(nom, 2)
pnom = UCase(Left(pnom, 1)) & Mid(pnom, 2)
ActiveSheet.Unprotect ("123")
Cells(sel.Row, 6).Value = nom & " " & pnom
ActiveSheet.Protect ("123")
End If
End If
End Sub
Si tu ne veux pas saisir il suffit de faire "echap" ou clic sur "cancel". La feuille est déprotégée puis protégée. Si tu veux des précisions n'hésite pas. Toujours zen
|
Bonjour
|
Bonjour
|
Répondre à gbinforme
|
Bonjour
|
Bonjour
|