Incrementer une combobox

mathieuV

XLDnaute Nouveau
Bonjour a tous,

J’ai beaucoup cherche sur internet et ai un peu avance mais la je bloque.
J’utilise excel 2010.
Je suis ultra novice VBA, donc je c’utilise que des trucs que je trouve sur le net, je suis desole.
Donc j’ai une colonne de cases dans laquelle je veux une liste deroulante.
J’ai ultilise combobox-VBA, car cela donne beaucoup plus de souplesse (notamment en matiere de taille de caractere) que la function donnees validation-liste.
J’ai trouve sur le net un VBA tres abouti qui me faitapparaitre la liste deroulante quand je clique sur la cellule. J’ai egalement integer le fait que je veux que cette liste soit choisie dans la meme ligne que la cellule (function Application.Transpose(Range("c2:f100").Value)).
Cf exemple ci joint plus concret

Maintenant j’aimerai que a chaque ligne, la liste deroulante choisie (independamment des autres lignes) soit celle de la ligne ou on travaille:
Ex:en A3, je voudrai la liste nom1 prenom3 ddn3 fu3 et ainsi de suite en a4, a5…

Auriez vous une solution simple plutot que de repeater 250 fois le VBA pour chque cellule de cette premiere colonne? SVP

Merci de votre aide, patience et de votre indulgence pour mon inexperience VBA.

Tres cordialement

xls ci Joint
et
code:

Code:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([A2:A100], Target) Is Nothing And Target.Count = 1 Then
    Me.ComboBox1.List = Sheets("bd").Application.Transpose(Range("c2:f2").Value)
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
    'If Val(Application.Version) > 10 Then SendKeys "{esc}"
    'Me.ComboBox1.DropDown
  Else
    Me.ComboBox1.Visible = False
  End If
End Sub
 

Pièces jointes

  • Copy of DVComboBox.xls
    46.5 KB · Affichages: 45

Papou-net

XLDnaute Barbatruc
Re : Incrementer une combobox

Bonjour mathieuV, et bienvenue parmi nous,

Pas sûr d'avoir tout compris de la question, mais je te propose de modifier la 3ème ligne comme ceci:

Code:
Me.ComboBox1.List = Sheets("bd").Application.Transpose(Range("c" & Target.Row & ":f" & Target.Row).Value)
A +

Cordialement.
 

mathieuV

XLDnaute Nouveau
Re : Incrementer une combobox

OK,
genial
cela marche du tonnerre, MAIS dans le fichier original.
Maintennat, j'essaie de creer ce module de classe dans un autre fichier,
mais c'est un Echec:

je vais dans mon nouveau fichier
j'ouvre le VBA
je selectionne mon worksheet dans la colonne VBA Projects
je colle le code
en adaptant aux cellules que je veux
je modifie egalement le nom de la feuil utilisee

et la il me souligne en jaune la premiere ligne (qui est exactement la meme que dans le fichier qui marche)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

et puis il surligne egalement
.ComboBox1
sur la ligne 3
Avec le message d'erreur
Compile erroe
Method or data member not found

Sorry.

Tres cordialement
et merci pour la reponse tgv!!
 

Papou-net

XLDnaute Barbatruc
Re : Incrementer une combobox

RE:

Es-tu certain du nom du ComboBox dans ton nouveau fichier? Apparemment, c'est ce contrôle qui n'est pas reconnu.

Pour plus de précision, peux-tu joindre une copie allégée de ton fichier, avec des données non confidentielles?

A +

Cordialement.
 

mathieuV

XLDnaute Nouveau
Re : Incrementer une combobox

voici le fichier simplifie sans donnees confidentielles
pour ta question, je ne sais pas du tout. en fait je pensais que Combobox etait une commande de code VBA, et que cela fonctionnait partout...mais je me sens tres incompetent pour cela en fait...
merci!!
 

Pièces jointes

  • DKHZ ccTGA ECHSAmv22.xls
    84.5 KB · Affichages: 42

Papou-net

XLDnaute Barbatruc
Re : Incrementer une combobox

RE:

C'est bien ce que je pensais, le Combobox1 était absent dans la feuille.

Je l'ai donc créé et il me semble que tout fonctionne comme tu le désires, mais je te laisse vérifier par toi-même.

A +

Cordialement.
 

Pièces jointes

  • Copie de DKHZ ccTGA ECHSAmv22.xls
    94 KB · Affichages: 46

Papou-net

XLDnaute Barbatruc
Re : Incrementer une combobox

Superbe. cela fonctionne
donc apperement il suffit de rajouter, au dessus, le code suivant, c'est la soluce?

Private Sub ComboBox1_Change()
ActiveCell = ComboBox1
End Sub

Merci!

Oui, tout-à-fait. Mais auparavant, il faut insérer un ComboBox depuis la barre d'outils Contrôles ActiveX du menu Développeur...Insérer (voir copie d'écran en PJ). Un double-clic sur le contrôle dans la feuille de calcul ouvrira le Private Sub ComboBox1_Change() dans lequel tu n'auras plus qu'à ajouter la ligne ActiveCell = ComboBox1.

A +

Cordialement.
 

Pièces jointes

  • Inserer CombBox XL.jpg
    Inserer CombBox XL.jpg
    52 KB · Affichages: 43

mathieuV

XLDnaute Nouveau
Re : Incrementer une combobox

OKI,
Great, many thanks!!!
...
aurais je le droit a une question subsidiaire?? allez, je me Lance:

disons que, au lieu de appliquer cette combobox a toutes les cellules c1:c148
je lappliquer que aux lignes ou la colonne d contient un element
(ou inversement, ne pas avoir de liste deroulante dans les lignes ou la colonne d est vide)

Est ce possible, ou bien cela coute il trop cher
:p

Merci encore pour tant d'expertise!
 

Papou-net

XLDnaute Barbatruc
Re : Incrementer une combobox

RE:

Oui c'est possible, et c'est même pas cher comme tu pourras le constater par toi-même.

Il suffit de modifier la deuxième ligne comme ceci:

Code:
If Not Intersect([c1:c148], Target) Is Nothing And Not Target.Offset(0, 1) = "" And Target.Count = 1 Then
A +

Cordialement.
 

mathieuV

XLDnaute Nouveau
Re : Incrementer une combobox

marche pas:
en fait je pense que c'est parceque jai modifie la place des colonnes:
j'ai bien Change [c1:c148] en [J1:J148]
mais le critere "case vide ou pas" est dans une autre colonne (deplacee): la colonne c

fichier en PJ

merci pour votre patience!
 

Pièces jointes

  • DKHZ ccTGA ECHSAmv23.xls
    96 KB · Affichages: 40

Papou-net

XLDnaute Barbatruc
Re : Incrementer une combobox

RE:

Voici le code adapté à la nouvelle configuration:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect([j1:j148], Target) Is Nothing Then Exit Sub
If Not Target.Offset(0, -7) = "" And Target.Count = 1 Then
    Me.ComboBox1.List = Sheets("dataset vertic2").Application.Transpose(Range("c" & Target.Row & ":i" & Target.Row).Value)
    Me.ComboBox1.Font.Size = 25
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
    Else
    Me.ComboBox1.Visible = False
  End If
End Sub
A +

Cordialement.
 

mathieuV

XLDnaute Nouveau
Re : Incrementer une combobox

Merci beaucoup.
Cela va sauver beaucoup de temps.
Et aidera a mieux comprendre comment mieux traiter les enfants malades du Coeur!
bravo pour votre Expertise et votre Dispo exceptionnelle.

Tres cordialement
 

Discussions similaires

Réponses
12
Affichages
268
Haut Bas