colonne de combobox

colonne de combobox - VB/VBA/VBS - Programmation

Marsh Posté le 03-09-2011 à 17:21:43    

Bonjour à toutes et tous,
 
Je sais que c'est une formation complète qu'il me faudrait mais ...
 
Je vais de forums en forums et ...  :cry:  
 
Voilà ce que je voudrais faire et je pense que ça doit déjà exister :
 
Je suis sous Excel 2010 et je voudrais que dans une colonne apparaisse systématiquement une combobox lorsque je commence par exemple à renseigner la première cellule de la ligne. Autrement dit, quand l'utilisateur crée une nouvelle ligne, à la colonne X il n'a que le choix d'un certains nombre d'items.
 
Quelqu'un peut-il m'aider SVP ? (suis néophyte)
 
Merci

Reply

Marsh Posté le 03-09-2011 à 17:21:43   

Reply

Marsh Posté le 03-09-2011 à 19:36:04    

Hello,
 
Si je comprends bien, tu voudrais par exemple que si la colonne A contient des continents et la colonne B des pays, en saisisant Europe dans la celulle A1, on puisse choisir entre les différents pays européens dans la cellule B1 ?


---------------
Si seulement tu connaissais le pouvoir du côté obscur. Obi-Wan ne t’a jamais dit ce qui est arrivé à ton père.
Reply

Marsh Posté le 03-09-2011 à 20:08:10    

neozenfragance a écrit :

Hello,
 
Si je comprends bien, tu voudrais par exemple que si la colonne A contient des continents et la colonne B des pays, en saisisant Europe dans la celulle A1, on puisse choisir entre les différents pays européens dans la cellule B1 ?


 
C'est à peu près ça. Je suis même un tout petit peu moins gourmand. Quel que soit ce que je mets en A1, je veux avoir le choix des pays en B1. Et si je décide de mettre autre chose en A2, je veux avoir le choix des pays en B2 et ainsi de suite, sans limitation (sinon, je mettrais N combobox et ce serait réglé)
 
Ceci dit, si en prime, tu peux répondre à ce que tu me dis alors c'est vraiment top !
 
Merci d'avance

Reply

Marsh Posté le 03-09-2011 à 22:26:26    

Voilà le code pour le cas que je t'ai décrit :
 

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Cellule As Range, ListeValidation As String
  3.     Set Cellule = Target.Cells(1, 1)
  4.    
  5.     If Cellule.Column = 1 Then ' On vérifie que la cellule appartient à la colonne A
  6.        
  7.         Cellule.Offset(0, 1).Validation.Delete ' On supprime l'ancienne validation de la cellule de la colonne B correspondant au Target
  8.        
  9.         If Cellule <> "" Then
  10.                    
  11.                     Select Case Cellule ' On définit la nouvelle liste de validation
  12.                     Case "Amérique":    Cellule.Offset(0, 1).Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="Argentine,Brésil,Etats-Unis"
  13.                     Case "Asie":        Cellule.Offset(0, 1).Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="Chine,Inde"
  14.                     Case "Europe":      Cellule.Offset(0, 1).Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="Angleterre,Belgique,France"
  15.                     End Select
  16.                    
  17.         End If
  18.        
  19.     End If
  20.    
  21.    
  22. End Sub

 
 
J'ai utilisé une liste de validation qui est beaucoup plus simple à gérer qu'un ComboBox. A chaque fois qu'une cellule de la colonne A est modifiée (on utilise l'évènement worksheet_change de la feuille de saisie), si la valeur entrée est un continent, ici Amérique, Asie ou Europe, la liste des pays correspondant est affichée dans la cellule correspondante de la colonne B. Les listes de validation peuvent ensuite être paramétrées.
 
Le code est à placer dans le module de code de la feuille de saisie.

Reply

Sujets relatifs:

Leave a Replay

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