MsgBox en fonction de deux valeurs

Salutations !

Je rencontre des difficultés dans un userform :

Je souhaite qu'une MsgBox s'ouvre lorsque deux valeurs de mon Userform sont identiques, car si je conserve ces deux valeurs et que j'effectue le calcul qui utilize ces valeurs, un message d'erreurs s'affiche et renvoie à Microsoft visual basic, ce qui n'est pas très joli.

Voilà mon code :

Private Sub MemesVilles_Click()

If TextBox6.Value = TextBox7.Value Then
    MsgBox "Veuillez saisir une ville d'arrivée différente de la ville de départ", "Ok", "Erreur"
End If

End Sub

Je voudrai que dès qu'on a sélectionné la meme ville dans le combobox4 que dans le combobox3, ce message s'affiche (sachant que si je sélectionne une ville dans mon combobox, la textbox 6 ou 7 prend une valeur automatiquement)

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
End Sub

Private Sub ComboBox3_Click()

'on veut définir ici quelles sont les cases de la userform qui vont prendre une valeur lorsqu'on clique sur une ville de départ dans le combobox3

    TextBox6.Value = Worksheets("Liste_Villes").Cells(ComboBox3.ListIndex + 3, 11).Value
End Sub

Private Sub ComboBox4_Click()

'même chose pour la ville d'arrivée ici

    TextBox7.Value = Worksheets("Liste_Villes").Cells(ComboBox4.ListIndex + 3, 11).Value
End Sub

En espérant avoir été assez clair, dans l'attente

Merci d'avance !

Bonjour,

Pourquoi ne pas interdire de saisir 2 fois la même ville, et ne plus proposer la ville de départ, dans le combobox "ville d'arrivée"?

Comme ceci :

Private Sub ComboBox3_Change()
If Me.ComboBox3 <> "" Then
    Me.ComboBox4.List() = Worksheets("Liste_Villes").Range("villes").Value
    Me.ComboBox4.RemoveItem Me.ComboBox3.ListIndex
Else
    Me.ComboBox4.Clear
End If
End Sub

Private Sub UserForm_Initialize()
Me.ComboBox3.List() = Worksheets("Liste_Villes").Range("villes").Value
End Sub

Bon courage

Que signifie "Me" devant les combobox ?

C'est bizarre parce qu'après avoir entré ce code, lorsque je lance le userform, les combobox sont vides. Le 3 comme le 4


J'ai rentré ce code du coup.

'On interdit ici à la combobox4 d'afficher la même ville que la combobox3

Private Sub ComboBox3_Change()

If Me.ComboBox3 <> "" Then
    Me.ComboBox4.List() = Worksheets("Liste_Villes").Range("villes").Value
    Me.ComboBox4.RemoveItem Me.ComboBox3.ListIndex
Else
    Me.ComboBox4.Clear
End If

End Sub

Private Sub UserForm1_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

'Ici, "Me" pour reprendre le sub Combobox3_Change()

Me.ComboBox3.List() = Worksheets("Liste_Villes").Range("villes").Value

' Voir pour ajouter ComboBox.Clear avant chaque ligne

End Sub

Il y a peut etre un conflit entre

ComboBox3.List() = Worksheets("Liste_Villes").Range("ville").Value
ComboBox4.List() = Worksheets("Liste_villes").Range("Ville").Value

Et ce que tu m'as conseillé de mettre. Si j'enlève l'un ou l'autre le problem reste le meme..

Le fait de rentrer Combobox4.Clear ça m'enleve tout ce que j'avais dans ma liste ?

Re-,

Le Me permet de référencer un objet à l'userform qu'il désigne.

Lorsque tu tapes Me suivi du point, VBA te propose alors la liste des objets qu'il contient, ou les propriétés qui peuvent lui être appliquées.

ça permet de ne pas faire d'erreur dans la liste des objets...

Maintenant, si tes combobox sont vides, c'est que ta zone nommée "villes" ne doit pas être correctement définie...

Si tu avais joint un fichier exemple dès le début, j'aurai pu travailler dessus, à la place d'en faire un (qui forcément, n'ira pas...)

@ te relire avec ce fichier exemple.


Re-,

J'avais fait les essais avec la zone "villes" (avec un "s")

Dans ton fichier, il ne semble pas y en avoir....

Malheureusement il s'agit d'un sujet de devoir je n'ai pas trop envie de le diffuser sur le forum...

Je viens de m'apercevoir d'un truc.

J'ai copier-coller le code que tu m'a fait sans regarder... Il y a parfois un "s" à ville, et parfois il n'y est pas...

Je vais corriger ça et on va voir.

J'espère ne pas trop m'arracher les cheveux là-dessus car je ne peux en effet pas communiquer ce fichier.

Malheureusement il s'agit d'un sujet de devoir je n'ai pas trop envie de le diffuser sur le forum...

Je viens de m'apercevoir d'un truc.

J'ai copier-coller le code que tu m'a fait sans regarder... Il y a parfois un "s" à ville, et parfois il n'y est pas...

Je vais corriger ça et on va voir.

J'espère ne pas trop m'arracher les cheveux là-dessus car je ne peux en effet pas communiquer ce fichier.


OK j'ai compris !

En fait, il y avait 2 soucis :

- le nom "ville" qui ne prend pas de "s" faisait planter le truc

- dans mon code c'est : Sub Userform_Initialize() et ça marche comme ça

Lorsque je modifie en Private Sub, là mes combobox sont vides...

Je suis content que la solution que tu m'a apporté fonctionne !

Je vais me débrouiller pour faire en sorte que si on sélectionne la ville d'arrivée en premier, le combobox3 fasse la meme chose en retirant la ville déjà sélectionnée

Merci encore

Re-,

Effectivement, dans ton code, tu mets :

Private Sub UserForm1_Initialize()

Il ne faut pas mettre le nom de l'usf dans la méthode Initialize...

Regarde bien ce que j'ai mis...

Private Sub UserForm_Initialize()

Y'a pas le 1

Bon courage

Rechercher des sujets similaires à "msgbox fonction deux valeurs"