sortir d'une procédure

  • Initiateur de la discussion Initiateur de la discussion meldja
  • 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 !

meldja

XLDnaute Impliqué
Bonjour,

Tout d'abord, il n'y a pas d'urgence, je travaille sur un fichier juste pour le fun (pour me familiariser avec VBA).

Voila mon problème, je me suis amusé à charger un combobox dans une feuille qui peut prendre différente valeur.
Les valeurs qui seront traités sont "dm3" et "m3"
Sur l'évènement change de cette combobox, il doit effectuer une conversion (un nombre qui se trouve en cellule C5).

Seulement, si l'élément sélectionné de cette liste est différent de "dm3" ou "m3", il doit renvoyer un message d'erreur et quitter la procédure.
Tout fonctionne, sauf qu'il ne quitte pas la procédure tout de suite et on est obligé de clicker 2 fois sur le msgbox.
Je pensais qu'avec Exit sub ça le ferait mais apparemment non.
Voici le code :
Code:
Private Sub ComboBox2_Change()

Select Case ComboBox2.Value
Case Is = "dm3"
Range("J9").Value = Range("C5") / 1000
Case Is = "m3"
Range("J9").Value = Range("C5") / 1000000
Case Is <> "dm3"
MsgBox "impossible de convertir", , "ERREUR"
Exit Sub
Case Is <> "m3"
MsgBox "impossible de convertir", , "ERREUR"
Exit Sub
End Select
End Sub

J'espère que ma demande est claire, merci d'avance
 
Re : sortir d'une procédure

Re,
J'ai un peu amélioré le code qui était illogique, mais toujours le même problème, à savoir, obligé de clicker 2 fois sur le msgbox.
Select Case ComboBox2.Value
Case Is = "dm3"
Range("J9").Value = Range("C5") / 1000
Case Is = "m3"
Range("J9").Value = Range("C5") / 1000000
Case Else
MsgBox "impossible de convertir", , "ERREUR"
End Select
 
Re : sortir d'une procédure

Bonjour

comme ceci peut-être 🙄

Code:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Select Case ComboBox1.Value
Case Is = "dm3"
Range("J9").Value = Range("C5") / 1000
Case Is = "m3"
Range("J9").Value = Range("C5") / 1000000
Case Else
MsgBox "impossible de convertir", , "ERREUR"
End Select

End Sub
 

Pièces jointes

Dernière édition:
Re : sortir d'une procédure

Désolé, j'ai copié/collé ton code à la place du mien (en prenant soin de remplacer combobox1 par combobox2) et lorsque je clique sur une autre valeur que "dm3" ou "m3", rien ne se passe.
En plus, il fait toujours la même conversion, il divise toujours par 1000 000.
Voici le code que j'ai collé à la place du mien :
Code:
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Select Case ComboBox2.Value
Case Is = "dm3"
Range("J9").Value = Range("C5") / 1000
Case Is = "m3"
Range("J9").Value = Range("C5") / 1000000
Case Else
MsgBox "impossible de convertir", , "ERREUR"
End Select

End Sub
 
Re : sortir d'une procédure

Normal

dans la propriété linkedcell il y avait k3
qui redonnait la valeur de k3 dans la combobox
d'où deux fois la sortie par Case Else

oups pas besoin de l'exit sub à la ligne Case Else
voilà rectifié
 

Pièces jointes

Dernière édition:
- 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

Discussions similaires

Réponses
9
Affichages
386
Réponses
2
Affichages
274
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
904
Réponses
2
Affichages
772
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Retour