Récupérer la valeur d'une cellule suite à une comparaison

Bonjour,

Je sollicite votre aide parce que je ne sais pas comment effectuer une opération. Je m'explique

j'ai un feuille data qui contient 1colonne("C") avec des nom de lieux et une 2ème colonne("D") qui contient le kilométrage par rapport au lieu.

Ex: bienne,18

Ensuite j'ai une page, Janvier, sur laquelle j'aimerais que, lorsque je j'écris bienne dans la colonne lieu("B"), dans la colonne km("C"), vienne s'inscrire la valeur correspondante. C à d, 18.

Mais la je sèche.

Merci d'avance pour votre précieuse aide.

Bonjour

Si j'ai bien compris votre demande, vous pouvez faire cela avec la formule RECHERCHEV

Explications dans ce lien --> https://www.excel-pratique.com/fr/fonctions/recherchev

Si ok-->

Cordialement

Bonjour,

en colonne C votre formule sera dans le genre : =RECHERCHEV(B1;DATA!C:D;2;FAUX)

Dan plus rapide. bonjour Dan

Merci pour vos promptes réponses.

J'ai malheureusement oublier de préciser que je fias ça en VBA.

Dans ce cas préciser aussi l'évènement vba déclencheur du remplissage en colonne C.

Ou mieux un fichier exemple.

Hum...

Alors un fichier exemple serait tout indiqué (sans données confidentielles)

XmenPL ...on se croise le fer là...

Ok. Alors je joins le fichier ave la macro.

Le document est majoritairement en allemand, à cause du chef. Donc si y a des questions, n'hésitez pas.

Merci encore pour votre aide.

11spesen.xltm (62.14 Ko)

Bonjour, le code pour exemple est dans la Feuille janvier.

Cependant je pense que c'est une mauvaise idée car il faudra le copier dans tous les onglets... ceci va ralentir inutilement alors qu'une simple formule

le faisait sans problème.

5spesen-1-2.xlsm (61.62 Ko)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

For i = 4 To 26
If Range("C" & i) <> "" Then
On Error Resume Next
X = Application.WorksheetFunction.VLookup(Range("C" & i), Sheets("Data").Range("D:E"), 2, 0)
Range("D" & i).Value = X
Else
Range("D" & i).Value = ""
End If
Next

End Sub

Merci pour la réponse.

Je vais tester dès que j'ai 5.

Salut,

Merci Xmenpl, ça marche au poil.

J'aurais juste encore une question, où dois-je placer le code pour qu'il fonctionne?

Dans Module1, le code fonctionne en mode F8
Dans ThisWorkbook, rien.

Merci encore pour l'aide apportée.

Bonjour,

C'est un code pour un évenement feuille donc dans les feuilles ( worksheet ) pas dans le fichier ( workbook )

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dans mon exemple il est dans la feuil3 (janv)

Ha, ok. Merci pour la précision.

J'ai remarqué un comportement bizarre. Quand les noms des villes se trouvent dans la feuille Data, ça marche nickel, mais, si je mets un nom qui n'existe pas dans la feuille Data, ça me renvoie quand même une valeur.

C'est pour ça que j'étais partis sur Application.Match mais comme je voyais pas comment récupérer la valeur associée, j'ai demandé de l'aide.
En cherchant, j'ai trouvé qu'on pouvait mixer vlookup et match, mais je suis pas sûr que cela fonctionne dans mon cas...

Une idée?

C"est pour celà que je préfère une formule car çà limite les erreurs lors des saisies ( manque majuscule nom de ville pas trouvé ) erreur de frappe...

Au moins la formule renvoi erreur si le nom n'est pas trouvé.

Re,

Voilà j'ai un peu de temps.

Voilà comment j'ai compilé le système (en me basant sur tes infos Xmenpl):

Sur chaque feuilles

Private Sub worksheet_change(ByVal target As Range)

    If Not Intersect(target, Range("C4:C26")) Is Nothing Then
        Call kilometrage
    End If

End Sub

Ensuite la macro

Sub kilometrage() 'pour ajouter automatiquement les kilomètres selon la destination

Dim err As Integer

err = 0
lieu = Application.WorksheetFunction.CountA(Range("C4:C26")) + 3
ville = Sheets("Data").Range("D" & Rows.Count).End(xlUp).Row

     For i = 4 To lieu '26
     ok = Application.Match(Range("C" & i), Sheets("Data").Range("D2" & ":D" & ville), 0) 'check si la ville existe dans la liste
        If Range("C" & i) <> "" And Not IsError(ok) Then 'si la cellule n'est pas vide que le match est ok, on continue
            On Error Resume Next
            km = Application.WorksheetFunction.VLookup(Range("C" & i), Sheets("data").Range("D:E"), 2, 1)
            Range("D" & i).Value = km
        Else
            Range("D" & i).Value = ""
            err = err + 1
        End If
     Next

    If err > 0 Then
        MsgBox "Ville inconnue"
    End If

End Sub

Encore merci infiniment pour l'aide apportée.

A une prochaine.

Rechercher des sujets similaires à "recuperer valeur suite comparaison"