VBA Cherche Valeur, trouve valeur, renvoi valeur d'une autre cellule

Bonjour à tous,

Nouvellement inscrit et débutant en VBA, je viens vous demander de l'aide. Je travaille sous Excel 2013, mon classeur actuel contient deux feuilles. La première ressemble à un formulaire de saisie, la deuxième est une base de données.

Dans la feuille de saisie, la cellule I13 est réservée à la saisie manuelle d'un numéro de parc. Une fois un numéro entré, d'autres cellules se remplissent automatiquement par le biais de formules qui vont récupérer les données dans la base de données.

Jusque là, tout va bien.

Maintenant, pour des raisons "pratiques", je dois ajouter dans la cellule I14 de la feuille de saisie, la possibilité de saisir l'immatriculation.

Je souhaiterais donc lier la cellule I14 à I13.

Donc, si je rempli I14, j'aimerais que la valeur saisie soit cherchée dans la feuille base de données (colonne "L") et quand elle la trouve, elle me remplisse automatiquement I13 en récupérant la valeur contenue dans la colonne "A" de la base de données correspondant à la ligne.

Pour exemple,

Si je saisi en I14 (formulaire de saisie) : "DP-980-AA"

En VBA, cherche et trouve cette valeur en "L120" de la feuille base de données

Renvoi la valeur "43000021"(numéro de parc) trouvé en "A120" de la même feuille

vers I13 de la feuille de la feuille de saisie.

Je suis certains que cela est simple pour un initié. Personnellement, j'ai beaucoup de mal.

Votre aide me sera d'un grand secours. Merci d'avance de vos réponses.

PS: je suis actuellement en déplacement à l'étranger et j'ai très peu de débit internet. Raison pour laquelle je préfère ne pas envoyer de fichier.

Bonjour,

copier la formule suivante en cellule I13

=INDEX('base de données'!A:A;EQUIV(I13;'base de données'!L:L;0))

en vba

Set sh1 = Sheets("base de données")
Set sh2 = Sheets("formulaire")
sh2.Range("I13") = Application.Index(sh1.Range("A:A"), Application.Match(sh2.Range("I14"), sh1.Range("L:L"), 0))

Bonjour Isabelle,

Merci pour ta réponse rapide. J'avais bien pensé à cette idée de passer par une formule mais le problème est que I14 est une cellule de saisie.

Raison pour laquelle je souhaite passer par VBA. J'ai essayé de passer par l'enregistreur de Macro mais cela ne vaut que pour une saisie spécifique qui me donne pour exemple:

Sub Macro3()
'
' Macro3 Macro

    Range("I14").Select
    ActiveCell.FormulaR1C1 = "DP 982 AA"
    Sheets("FRIEDLANDER GABON POG").Select
    Selection.Find(What:="DP 982 AA", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Range("I13").Select
    Columns("L:L").Select
    Selection.FindNext(After:=ActiveCell).Activate
    Range("A185").Select
    ActiveCell.FormulaR1C1 = "44000659"
    Sheets("Demande d'intervention").Select
    Range("I13").Select
    ActiveCell.FormulaR1C1 = "44000659"
    Range("I14").Select
End Sub

Oooh punaise ! Pardon Isabelle, je n'avais lu qu'une partie de ton message.

Vraiment désolé. Je fatigue.

Merci encore pour ta réponse. Je fais le test et te fais un retour.

Je ne dois vraiment pas être doué. Quand je saisi, une immatriculation, il ne se passe rien.

N'y aurait il pas quelque chose a mettre avant et après ton code Isabelle ? Je pense que je ne l'écris pas correctement ou peut être faut il autre chose pour activer la formule.

Private Sub Rechercheimmat()
Set sh1 = Sheets("FRIEDLANDER GABON POG")
Set sh2 = Sheets("Demande d'intervention")
sh2.Range("I13") = Application.Index(sh1.Range("A:A"), Application.Match(sh2.Range("I14"), sh1.Range("L:L"), 0))
End Sub

re,

Vraiment désolé. Je fatigue.

non, c'est moi qui a édité le msg pour y ajouter le code vba, désolé

est ce que tu veux une fonction perso

ou que la valeur s'inscrive en I13 suite à l'événement du changement de valeur de la cellule I14 ?

Merci Isabelle. Alors le code fonctionne très bien quand je l'exécute. Super nouvelle

J'aimerais si possible que celui-ci s'exécute au changement d'état de la cellule I14 et que l'on clique sur une autre cellule par exemple.

Encore vraiment de grands merci pour ton aide précieuse.

Je n'ose dire le temps que j'ai passé à chercher une solution.

re,

copie cette macro sur la page code de l'onglet formulaire,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$14" Then
    Set sh1 = Sheets("base de données")
    Set sh2 = Sheets("formulaire")
    sh2.Range("I13") = Application.Index(sh1.Range("A:A"), Application.Match(sh2.Range("I14"), sh1.Range("L:L"), 0))
End If
End Sub

Isabelle

Tu as résolu mon problème et je t'en remercie énormément. C'est formidable. Bravo, bravo, bravo.

Trop content.

Vivement le prochain problème. LOL

Merci Stephane pour ce retour, au plaisir!

Rechercher des sujets similaires à "vba cherche valeur trouve renvoi"