Supprimer une valeur d'un combobox à l'autre
Bonjour !
Bon accrochez vous a à vos barbe !
Alors je vais essayer d'expliquer mon problem au mieux...
J'ai 2 combobox qui me permettent de sélectionner une ville de depart et une ville d'arrivée dans un USF..
Je souhaite que, lorsque je sélectionne une ville de depart ou d'arrivée, la liste de l'autre combobox cache la selection de la premiere ville sélectionnée.
Je dis cache car de base dans mon code cette valeur est supprimée, ça doit entrainer un des problem que je cite plus bas (index)
Les consequences : Je ne peut faire qu'une fois la selection ville de depart - ville d'arrivée sinon après je peux de nouveau me retrouver avec la meme ville au depart et a l'arrivée...
Si j'ai la meme ville de depart que d'arrivée, quand je calcule la distance orthodromique entre les deux ça plante.
Autre problem : Si je sélectionne une 2e ville qui se trouve juste en dessous dans l'index, je me retrouve avec un message d'erreur "erreur d'execution '-2147024809 argument non valide"
Voilà le code
'Si une ville de départ et choisie dans le combobox3, elle n'apparaitra pas dans le combobox4 ville d'arrivée
'Problème : Si on retourne dans le combobox3, la ville d'arrivée du combobox4 est là et si on la sélectionne => plantage
Private Sub ComboBox3_Change()
If Me.ComboBox3 <> "" Then
Me.ComboBox4.List() = Worksheets("Liste_Villes").Range("ville").Value
'c'est la que ça coince
Me.ComboBox4.RemoveItem Me.ComboBox3.ListIndex
Else
Me.ComboBox4.Clear
End If
If ComboBox4 <> "" Then
Me.ComboBox4.AddItem Me.ComboBox3.ListIndex
End If
End Sub
'Et inversement
Private Sub Combobox4_Change()
If Me.ComboBox4 <> "" Then
Me.ComboBox3.List() = Worksheets("Liste_Villes").Range("ville").Value
'la ca coince aussi du coup
Me.ComboBox3.RemoveItem Me.ComboBox4.ListIndex
Else
Me.ComboBox3.Clear
End If
If ComboBox4 <> "" Then
Me.ComboBox3.AddItem Me.ComboBox4.ListIndex
End If
End Sub
Sub Userform_initialize()
'définir les choix des listes déroulantes de nos combobox
ComboBox3.List() = Worksheets("Liste_Villes").Range("ville").Value
ComboBox4.List() = Worksheets("Liste_villes").Range("Ville").Value
Me.ComboBox3.List() = Worksheets("Liste_Villes").Range("ville").Value
Me.ComboBox4.List() = Worksheets("Liste_Villes").Range("ville").Value
' Voir pour ajouter ComboBox.Clear avant chaque ligne
End Sub
La raison pour laquelle il y a deux fois le premier Sub c'est que je veux que ça marche dans les deux sens
Voilà ! Personnellement je ne sais plus quoi faire pour résoudre ce problem..
Merci d'avance et désolé pour la longueur du post !
Bonjour,
Comme ce serait une véritable usine à gaz (à donner des nœuds au cerveau...), on va agir autrement...
Si tu sélectionnes la même valeur dans les 2 Cbb, un message d'alerte, on efface le dernier Cbb, et on attend.
Essaie avec ce code :
Private Sub ComboBox3_Change()
If Me.ComboBox3 <> "" And Me.ComboBox3 = Me.ComboBox4 Then
MsgBox "La ville de départ doit être différente " & vbLf & "de la ville d'arrivée!"
Me.ComboBox3 = "": Exit Sub
End If
End Sub
Private Sub UserForm_Initialize()
Me.ComboBox3.List() = Worksheets("Liste_Villes").Range("ville").Value
Me.ComboBox4.List() = Worksheets("Liste_Villes").Range("ville").Value
End Sub
Private Sub ComboBox4_Change()
If Me.ComboBox4 <> "" And Me.ComboBox4 = Me.ComboBox3 Then
MsgBox "La ville d'arrivée doit être différente " & vbLf & "de la ville de départ!"
Me.ComboBox4 = "": Exit Sub
End If
End Sub
Bon courage
PS : même si tu ne peux pas mettre ton fichier original en ligne, fais quand même un effort pour joindre un fichier exemple, avec l'onglet qui va bien, et un userform simplifié, contenant tes 2 combobox...(tu verras, tu auras bien plus de réponses...)
Salut Cousinhub
Ouai tu as raison je ferai mieux de mettre un fichier exemple la prochaine fois !
En fait j'ai posté ce message et j'ai finalement réussi à contourner le problem via mon commandbutton calcul de la distance qui fait en gros ce que tu as mit dans ton code. Je n'ai plus de message d'erreur quant à la selection d'une deuxieme ville située sous la premiere dans l'index donc tout roule (on peut toujours après un certain nombre de manip se retrouver avec ville depart = ville arrive mais c'est corrigé avec le code du bouton calcul)
Merci tout de meme