Supprimer une valeur d'un combobox à l'autre

Y compris Power BI, Power Query et toute autre question en lien avec Excel
l
loulou54425
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 22 avril 2015
Version d'Excel : 2007

Message par loulou54425 » 7 mai 2015, 10:55

Bonjour !

Bon accrochez vous a à vos barbe ! ::B.

Alors je vais essayer d'expliquer mon problem au mieux... :wink:

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 :roll: :roll: :roll:
'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
    [surligner]Me.ComboBox4.RemoveItem Me.ComboBox3.ListIndex[/surligner]
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
    [surligner]Me.ComboBox3.RemoveItem Me.ComboBox4.ListIndex[/surligner]
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 !
l
loulou54425
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 22 avril 2015
Version d'Excel : 2007

Message par loulou54425 » 7 mai 2015, 14:33

Petit up :)
c
cousinhub
Membre impliqué
Membre impliqué
Messages : 1'949
Appréciations reçues : 5
Inscrit le : 28 mai 2009
Version d'Excel : xl 2016

Message par cousinhub » 7 mai 2015, 14:37

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...)
1/ on se demande à quoi servent les correcteurs d'orthographe....
2/ Notre seule récompense est un "Merci".....
l
loulou54425
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 22 avril 2015
Version d'Excel : 2007

Message par loulou54425 » 7 mai 2015, 16:41

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 :) :) :)
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'326
Appréciations reçues : 290
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 7 mai 2015, 17:19

Bonjour

Un essai à tester. Te convient-il ?
Bye !
Essai v1.xlsm
(20.66 Kio) Téléchargé 55 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message