De la Formule au VBA

Bonjour le Forum !!

Me voilà avec un petit problème, Je dit petit car je ne doute pas que vous serrez le résoudre..

Pour exécuter une liste déroulante dans une cellule j'ai utilisé dans "Validation des données" cette formule:

=SI(B2="Jim";JIM;SI(B2="Alex";Alex;SI(B2="TOM";TOM;"")))

Elle fonctionnait bien mais j'ai changé d'avis et passe par un UserForm.

Du coup dans mon ComboBox2 ça donnerai une formule du genre: (Malheureusement il me la faut en VBA xD)

=SI(combobox1="Jim";JIM;SI(combobox1="Alex";Alex;SI(combobox1="TOM";TOM;"")))

Sachant que Jim, Alex et TOM ce sont des noms que j'ai défini en passant par "Gestionnaire de noms"

Les autres combobox j'ai pu passer par RowSource mais là je sèche

Merci d'avance pour ceux qui ce pencherons sur le sujet !

Slt,

mets ton code vba c'est mieux

Je n'en ai pas justement..

Je voulais savoir comment transformer ma formule Excel en VBA

Bonjour,

à quel endroit le résultat doit s'inscrire ?

Ça doit me faire une liste dans ma combobox suivant le mot qui va se trouver dans mon autre combobox..

Les autres combobox j'ai pu passer par RowSource mais là je sèche

et tu dis que t'as pas de code

montre nous ton code Sebyg

Mais je n'ai pas de code.

Pour avoir mes listes dans mes autres combobox j'ai juste noté le nom dans "rowsource" que j'ai donné à un gestionnaire de nom..

J'ai essayé mais ça ne fonctionne pas ..

Private Sub ComboBox2_Change()
If ComboBox1.Value = "Jim" Then
ComboBox2.RowSource = Sheets("Feuil2").Range("B7:B31").Value
End If
End Sub

Me suis-je mal fait comprendre ou personne ne trouve de solution ?

J'essai de ré-expliquer plus correctement.

Dans mon UserForm j'ai deux ComboBox.

Ma ComboBox1 j'ai une liste déroulante.

Dans ma ComboBox2 je cherche à avoir une liste déroulante nommé "JIM" par le Gestionnaire de nom quand je sélectionne Jim dans ma ComboBox1. Mais si je sélectionne "TOM" dans ma ComboBox1 alors proposer la liste déroulante tom dans la ComboBox2.

Bonjour tout le monde,

Peut-être ainsi:

Private Sub ComboBox1_Change()

 With Sheets("Feuil2")
  Plage = .Range("B7:B31").Address
 End With

 If ComboBox1.Value = "Jim" Then
  ComboBox2.RowSource = "Feuil2!" & Plage
 End If

End Sub
3test.xlsm (20.93 Ko)

Cordialement,

Bonjour xorsankukai,

Ça me semble être celà, ceci dit si après je met Paul ça me laisse la liste A,B,C etc

Private Sub ComboBox1_Change()

 With Sheets(Feuil2.Name)
  Plage = .Range("B7:B31").Address
 End With

 If ComboBox1.Value = "Jim" Then
  ComboBox2.RowSource = "Feuil2!" & Plage
 End If

End Sub

Si toute fois ma Feuil2 change de nom je n'arrive pas à adapter le passe "Feuil2!"

Re,

Un exemple avec plages nommées....

Private Sub ComboBox1_Change()
 a = ComboBox1.Value
  ComboBox2.RowSource = a
End Sub
4plage-nommee.xlsm (21.13 Ko)

cordialement,

Excuse moi mais je ne comprend pas du tout du tout le code avec ce "a"...

Les plages sont nommé dans le gestionnaire de nom.

Je comprenais mieux le code d'avant..

Re,

Si toute fois ma Feuil2 change de nom je n'arrive pas à adapter le passe "Feuil2!"

Private Sub ComboBox1_Change()

 With Sheets(Feuil2.Name)
  Plage = .Range("B7:B31").Address
 End With

 If ComboBox1.Value = "Jim" Then
  ComboBox2.RowSource = Feuil2.Name & "!" & Plage
 Else
  ComboBox2.RowSource = Clear
 End If

End Sub

Excuse moi mais je ne comprend pas du tout du tout le code avec ce "a"...

Les plages sont nommé dans le gestionnaire de nom.

Je comprenais mieux le code d'avant..

Excuse, le "a" ne sert à rien, on peut écrire :

Private Sub ComboBox1_Change()
  ComboBox2.RowSource = ComboBox1.Value
End Sub
  • J'ai nommé des listes
    capture
  • Puis dans la combobox, en choisissant un nom, on appelle la liste correspondante....
donc si tu choisis Jim, tu alimentes la combobox2 avec la liste Jim...

J'espère que c'est clair pour toi...

Ah !!!!!!!!!!!!!!!!!!!!!!

C'est génial comme méthode ça fonctionne très bien c’est parfait merci beaucoup !!

(je faisais une erreur aussi je le mettait dans le mauvais sub combobox)

Rechercher des sujets similaires à "formule vba"