Liste Déroulante

Bonsoir à tous et au Forum

Je souhaiterai grace à ma liste déroulante Feuille devis, colonne I, Titre Status

faire afficher le prix en automatique dans la colonne J (sur la même feuille)

En fonction du choix Agent, Client, Prix K1 et Prix K2

Les prix ce trouvent dans le tableau = T_Produits

Merci pour votre Aide

9savrev00.xlsm (169.09 Ko)

Bonsoir man, bonsoir le forum,

J'ai modifié la liste de validation de données dans la colonne I de I'onglet Devis (pourquoi tous ces espaces dans le nom ?) qui est devenue :

Prix Agent;Prix Client;Prix K1;Prix K2

Puis ce code à placer dans le même onglet :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LI As Integer
Dim COL As Integer

If Not Application.Intersect(Target, Me.ListObjects(1).ListColumns(9).DataBodyRange) Is Nothing Then
    LI = Sheets("      Liste Produit      ").Columns(1).Find(Target.Offset(0, -6).Value, , xlValues, xlWhole).Row
    COL = Sheets("      Liste Produit      ").Rows(1).Find(Target.Value, , xlValues, xlWhole).Column
    Target.Offset(0, 1).Value = Sheets("      Liste Produit      ").Cells(LI, COL).Value
End If
End Sub

J'avoue que je suis loin de maîtriser les tableaux structurés ListObject...

Bonsoir ThauThème

Merci pour ton aide cela fonctionne !!!

Peux-tu me commenter la formule

Merci

bonsoir

une contribution sans vb

15man.xlsm (172.37 Ko)

cordialement

Re,

Le code fonctionne seulement si le changement a lieu dans la colonne 9 (= Colonne I) du tableau.

J'utilise alors deux fois la fonction Find.Range (regarde l'aide VBA à ce sujet).

Une première fois pour déterminer la ligne LI :

Je recherche dans la colonne 1 (=A) de l'onglet liste, la valeur de la cellule modifiée, décalée de 6 colonnes vers la gauche (Target.Offset(0, -6) = colonne C) en j'en récupère le numéro de ligne dans la la variable LI.

Une seconde four déterminer la colonne COL :

Je recherche la valeur de la cellule modifiée, dans la ligne 1 de l'onglet liste (c'est pour ça que j'ai changé la liste de validation de données car ça ne correspondait pas) en j'en récupère la colonne COL.

Ensuite, j'attribue à la cellule modifiée décalée d'une colonne à droite (Target.Offset(0, 1)) la valeur de la cellule de l'onglet liste en ligne LI et colonne COL.

Bonsoir a tous,

Merci Tulipe_4 pour ta contribution

Tauthème, merci pour les explications

par contre dans ma base de donnée, j'ai certain code SAP qui n'existe pas

En page liste produit

est-ce possible de faire afficher la cellule vide ? quand le code ne trouve pas le numéro SAP correspondant

car à la place j'ai Erreur d'éxécution 91

Variable objet ou variable de bloc With non défine

Merci d'avance

Re,

Essaie comme ça :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RL As Range
Dim RC As Range
Dim LI As Integer
Dim COL As Integer

If Not Application.Intersect(Target, Me.ListObjects(1).ListColumns(9).DataBodyRange) Is Nothing Then
    On Error Resume Next
    Set RL = Sheets("      Liste Produit      ").Columns(1).Find(Target.Offset(0, -6).Value, , xlValues, xlWhole)
    If Not RL Is Nothing Then LI = RL.Row Else Exit Sub
    Set RC = Sheets("      Liste Produit      ").Rows(1).Find(Target.Value, , xlValues, xlWhole)
    If Not RC Is Nothing Then COL = RC.Column Else Exit Sub
    Target.Offset(0, 1).Value = Sheets("      Liste Produit      ").Cells(LI, COL).Value
End If
End Sub

Bonjour à Tous

Grand Merci ThauThème

Rechercher des sujets similaires à "liste deroulante"