Saisie d'un code et résultat de la recherche =même cellule
Bonjour
Comme le dit le titre du sujet,
Je souhaiterais que le résultat de la recherche s'inscrive dans la cellule de recherchce:
dans le fichier joint il y a un tableau (A1-AR100) puis 3 zones (6 colonnes Au-AZ)
Actuellement j utilise une validation de données (liste) pour remplir les colonnes c/e/f (etc...) mais je souhaiterais également avoir une validation "automatique" en entrant un N° de code sans la cellule et la recherche entraine l'inscription de la réponse dans la cellule de départ.
exemple de solution pour apsa 1
en cellule E2, si je rentre 19, la recherche se réalise (index/equiv ou recherchev ou ???) et j'obtiens 4-Rugby en cellule E2
donc la saisie du code et sa réponse se trouvent bien dans la même cellule
Quelqu'un aurait-il une idée?
Au regard de ce qui est sur le forum, Ca doit être une private sub worsheet_change , mais je n'en sais pas plus.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E???)) Is Nothing Then
Application.EnableEvents = False
Target.Value = ????? ==> formule de recherche ????
Application.EnableEvents = True
End If
End Sub
merci de votre aide
peps59
Bonjour Peps59
Tu étais bien parti avec ton bout de code, le voici corrigé
le code est à mettre dans ta feuille
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sResult As String
' Si modification de plusieurs cellules
If Target.Count > 1 Then Exit Sub
' Si supression de valeur on sort
If Target.Value = "" Then Exit Sub
' Si la saisie se fait dans la colonne E
If Not Intersect(Target, Range("E:E")) Is Nothing Then
' En cas d'erreur dans la recherche on continue le code
On Error Resume Next
' Récupérer le résultat de la saisie
sResult = ""
sResult = Application.WorksheetFunction.VLookup(Target.Value, Range("code_apsa"), 2, False)
' vérifier si résultat non vide
If sResult <> "" Then
Application.EnableEvents = False
Target.Value = sResult
Application.EnableEvents = True
Else ' sinon
MsgBox "Valeur : " & Target.Value & ", non trouvée dans la plage [code_apsa]"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
' réactiver la gestion normale des erreurs
On Error GoTo 0
End If
End Sub
A+
Bonjour
merci ça fonctionne bien.
Comment généraliser cette private sub pour que cela fonctionne aussi sur les colonnes L S Z AG AN ?
merci
peps59
Re,
Il suffit d'ajouter autant de bloc
If Not Intersect(Target, Range("E:E")) Is Nothing Then
' En cas d'erreur dans la recherche on continue le code
On Error Resume Next
' Récupérer le résultat de la saisie
sResult = ""
sResult = Application.WorksheetFunction.VLookup(Target.Value, Range("code_apsa"), 2, False)
' vérifier si résultat non vide
If sResult <> "" Then
Application.EnableEvents = False
Target.Value = sResult
Application.EnableEvents = True
Else ' sinon
MsgBox "Valeur : " & Target.Value & ", non trouvée dans la plage [code_apsa]"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
' réactiver la gestion normale des erreurs
On Error GoTo 0
End If
Qu'il y a de zones à traiter, bien évidemment il faut changer
Not Intersect(Target, Range("E:E"))
et
sResult = Application.WorksheetFunction.VLookup(Target.Value, Range("code_apsa"), 2, False)
A+
Bonjour
OK ça fonctionne, j'ai mis bout à bout les 6 codes , je pensais qu'il était possible de faire une sorte de boucle sur
Range("E:E")
J'ai voulu disposer le tableau code_apsa (couper coller) sur une autre feuille et cela ne fonctionne plus
est ce normal?
=> le "code_apsa" doit obligatoirement se trouver dans la feuille "activités" pour que cela fonctionne?
merci
Peps59
Bonjour
Regarde si ce fichier correspond à ton attente
Amicalement
Nad
Bonjour
ok c'est nickel
merci Nad
peps59