[VBA] remplissage d'une valeur sur choix dans un menu déroulant

remplissage d'une valeur sur choix dans un menu déroulant [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 06-07-2007 à 19:01:59    

Bonjour :)
 
j'ai besoin d'un petit coup de pouce :
 
sous Excel, dans l'onglet 2, j'ai fais une base de données du style :
 
Légume           Prix
Pomme            3
Poire               4
Haricot            5
 
Dans l'onglet 1, pour facturer plus rapidement, j'ai fait un menu déroulant, ainsi on clique sur la cellule, sélectionne le légume et il s'affiche sans avoir besoin de le taper.
 
Cependant, j'aimerais que dans la cellule à côté s'affiche automatiquement le prix correspondant
 
 
Je pense que c'est faisable, mais je ne vois pas bien comment faire  :??:  
 
un script qui tourne en permanence et regarde si la valeur dans la cellule légume est égale à un légume de la base de donnée, et remplit donc la case prix si c'est le cas ?
 
 
Merci d'avance pour votre aide  :hello:

Reply

Marsh Posté le 06-07-2007 à 19:01:59   

Reply

Marsh Posté le 06-07-2007 à 19:22:04    

dans l'évenement change de la feuille, tu fais un test sur la colonne de la modif (target.column) et tu traites selon le résultat du test.

Reply

Marsh Posté le 06-07-2007 à 19:34:34    

d'accord, je vais chercher sur cette piste :)
 
merci bien

Reply

Marsh Posté le 06-07-2007 à 22:22:04    

Pour l'instant, j'ai écrit une partie de programme qui marche, sauf sur un point :
 
excel détecte un changement n'importe où sur toute la feuille, donc si la programme vient à modifier la valeur d'une cellule ailleur, il s'arrête et reprend de zéro, et ainsi de suite jusqu'à l'infini ...
 
il me faudrait un moyen de restreindre la recherche de changement de valeur seulement sur les plages B17:B23
 
c'est possible ?
 

Code :
  1. Dim Facture As Excel.Worksheet
  2. Dim DB As Excel.Worksheet
  3.  
  4.  
  5.  
  6. Private Sub Worksheet_Change(ByVal Target As Range)
  7.    
  8.    Marqueur = 0
  9.    Marqueur = 1
  10.    
  11.    Set Facture = ThisWorkbook.Worksheets(1)
  12.    Set DB = ThisWorkbook.Worksheets(2)
  13.    
  14.    If Target.Count = 1 Then
  15.        
  16.        If Target.Value <> "" Then
  17.        For Each Cellule In DB.Range("A1:A100" )
  18.        
  19.        
  20.                If Target.Value = Cellule.Value Then
  21.                    LigneFacture = Target.Row
  22.                    LigneDB = Cellule.Row
  23.                   Facture.Cells(LigneFacture, 5).Value = DB.Cells(LigneDB, 2).Value
  24.                    Exit For
  25.                End If
  26.         Next
  27.  
  28.  
  29.  
  30. ........


Message édité par Xocs le 06-07-2007 à 22:22:28
Reply

Marsh Posté le 06-07-2007 à 22:27:18    

if target.row >16 and target.row < 24 and target.column = 2 then

Reply

Marsh Posté le 06-07-2007 à 22:32:21    

D'accord, je suis vraiment un boulet ...
merci à toi :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed