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 !

Petit up

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

Bonjour

Un essai à tester. Te convient-il ?

Bye !

112essai-v1.xlsm (20.66 Ko)
Rechercher des sujets similaires à "supprimer valeur combobox"