Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Combobox : Affichage d'un item par default en fonction du choix d'un autre

  • Initiateur de la discussion Initiateur de la discussion dreamalain
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dreamalain

Guest
Bonjour

J'ai des comboboxs qui allimente une base donnée de cette manière :
VB:
Private Sub ComboVM1_Change()
'With Sheets("VIANDES")
With Workbooks("Liste.xlsx").Sheets("VIANDES")
    If ComboVM1.ListIndex = -1 Then
        Me.ComboPv1 = ""
        Me.TextBoxEfv1 = ""
        Me.TextBoxRv1 = ""
        Me.ComboOuV1 = ""
       Me.ComboCoV1 = ""
     Exit Sub
    End If
  Me.ComboPv1 = .Cells(ComboVM1.ListIndex + 2, 2)
  Me.TextBoxEfv1 = .Cells(ComboVM1.ListIndex + 2, 3)
  Me.TextBoxRv1 = .Cells(ComboVM1.ListIndex + 2, 6)
  Me.ComboOuV1 = .Cells(ComboVM1.ListIndex + 2, 9)
  Me.ComboCoV1 = .Cells(ComboVM1.ListIndex + 2, 10)
End With
End Sub

Existe t-il un moyen pour qu'un combobox affiche par défaut la valeur d'un autre combobox sachant qu'ils sont sur deux userforms différents (les deux userforms étant ouverts en même temps)

Merci pour vos suggestions !!
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Bonjour

Il suffit pour transférer les données d'indiquer l'userform qui contient le combobox
Userform1.combobox1.value = Userform2.combobox1.value

ou alors utiliser des variables publiques qui contiennent les données à transférer.
A tester

JP
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Re,

essaye ainsi, à utiliser dans le module de l'usf 2 :
Code:
ComboBox1.Value = UserForm1.ComboBox1.Value
nom des objets à adapter.

bon après midi
@+

Edition : bonjour jp, un peu en retard moi....
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Merci Pierrot ça fonctionne
Plus compliqué peut être : lorsque je change la valeur de la combobox de l'userform 2 en cas de réouverture de cet userform y a t-il moyen de conserver cette nouvelle valeur ?
Je vais essayer de détailler le déroulement de mon code :

Intialisation de mes userform :
VB:
Private Sub UserForm_Initialize()


On Error Resume Next
 Dim cell As Range
   
    With Workbooks("Liste.xlsx").Sheets("VIANDES")
    If Err = 0 Then MsgBox " Base de donnée ouverte " Else MsgBox " La base de donnée n'a pas été ouverte!!!!"

        Me.ComboVM1.List = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Value
End With
     'j'ai actuellement le même résultat que la solution de Pierrot grâce à cette ligne :   
    ComboVM1.Value = Cells(8, 2)
End Sub

Initialisation de mes combobox
VB:
Private Sub ComboVM1_Change()
'With Sheets("VIANDES")
With Workbooks("Liste.xlsx").Sheets("VIANDES")
    If ComboVM1.ListIndex = -1 Then
        Me.ComboPv1 = ""
        Me.TextBoxEfv1 = ""
        Me.TextBoxRv1 = ""
        Me.ComboOuV1 = ""
       Me.ComboCoV1 = ""
     Exit Sub
    End If
  Me.ComboPv1 = .Cells(ComboVM1.ListIndex + 2, 2)
  Me.TextBoxEfv1 = .Cells(ComboVM1.ListIndex + 2, 3)
  Me.TextBoxRv1 = .Cells(ComboVM1.ListIndex + 2, 6)
  Me.ComboOuV1 = .Cells(ComboVM1.ListIndex + 2, 9)
  Me.ComboCoV1 = .Cells(ComboVM1.ListIndex + 2, 10)
End With
End Sub

L'enregistrement :
VB:
Private Sub CmdEnregistrer_Click()

Application.ScreenUpdating = False
'With Sheets("VIANDES")
With Workbooks("Liste.xlsx").Sheets("VIANDES")


lg = 0
Select Case ComboVM1.ListIndex
Case -1
If ComboVM1 <> "" Then lg = .Range("A65536").End(xlUp).Row + 1
Case Else
lg = ComboVM1.ListIndex + 2
End Select
If lg > 0 Then
.Cells(lg, 1) = Me.ComboVM1
.Cells(lg, 2) = Me.ComboPv1
.Cells(lg, 3) = Me.TextBoxEfv1
.Cells(lg, 6) = Me.TextBoxRv1
.Cells(lg, 9) = Me.ComboOuV1
.Cells(lg, 10) = Me.ComboCoV1
End If


With ActiveSheet

.Cells(8, 2) = ComboVM1.Value

Workbooks("Liste.xlsx").Sheets("VIANDES").[A2].Sort key1:=Workbooks("Liste.xlsx").Sheets("VIANDES").[A2], Order1:=xlAscending, Header:=xlGuess

Application.ScreenUpdating = True
Unload Me

J'espère que cela vous donnera un aperçu pour répondre à ma question

A bientôt de lire vos suggestions
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Bonjour
Salut Pierrot


Pour conserver une valeur exploitable quand l'userform est fermé il faut utiliser des variables publiques ( a écrire dans un module ).
Public Toto as string
Public Action as byte

La variable action permet de définir le cas de figure pour exploiter le contenu de Toto.

JP
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Bonjour,

peut être stockée la valeur de ta combo dans une variable "public", par contre à la fermeture du classeur celle-ce sera effacée... A voir si c'est cela que tu veux.... une autre solution, stockée la valeur dans une cellule à la fin de ta feuille....

Aarf, désolé jp, encore un peu lent moi...
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Bonsoir JP
Mes connaissances en VBA ne me permettent pas de comprendre ta solution.
Si tu pouvais développer ta réponse ou me donner un fichier test pour que je m'y penche ça me permettrais (peut être) de l'adapter à mon classeur.
Merci en tout ca pour ta réponse

@+
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Re Pierrot

Voilà une solution qui me parait faisable et à laquelle je n'avais pas pensé

Merci Pierrot génial ton idée !
 
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Re bonsoir

Puis je inclure à mon code une fonction qui permettrais de remplir la valeur de la combobox1 si la cellule est vide et la valeur de la cellule si celle ci est renseignée ?
 
Dernière modification par un modérateur:
Re : Combobox : Affichage d'un item par default en fonction du choix d'un autre

Bonjour,

peut être un test comme ceci :
Code:
If Not IsEmpty(Range("A1").Value) Then ComboBox1.Value = Range("A1").Value

bon dimanche
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
11
Affichages
2 K
E
  • Question Question
Réponses
16
Affichages
3 K
P
Réponses
12
Affichages
2 K
Pauliakov
P
A
Réponses
5
Affichages
1 K
A
D
Réponses
5
Affichages
2 K
dreamalain
D
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…