Bonjour,
Je vous explique ce qui me pose problème depuis maintenant deux heures. Malgré mes essais, je ne trouve pas la solution.
J'ai un formulaire composé d'un contrôle onglet. J'ai 5 onglets. Chaque onglet est composé de cases à cocher, 1 liste déroulante et 1 textbox. J'ai mis en place (grâce à LedZeppII) une procédure qui relève une erreur dans une MsgBox si certaines conditions ne sont pas remplies. (ex: si une certaine case est coché cela dévérouille 3 autres cases. Au moins une de ces 3 cases doit être coché sinon une erreur est levée.)
J'ai mis le code qui relève les erreurs sur l'évènement Change du contrôle onglet. Le but est que lorsque la personne change d'onglet on lui indique directement ce qui ne va pas via une MsgBox. Cela fonctionne bien.
Le problème que j'ai :
Lorsque la MsgBox arrive pour indiquer l'erreur et que la personne clic sur OK. Elle se retrouve sur le nouvel onglet choisi. Je souhaite qu'elle revienne sur l'onglet ou se trouve l'erreur. j'ai donc mis :Le problème c'est que lorsque je rebascule sur l'onglet précedent, l'évènement change est réactivé (logique) et la MsgBox réapparait. Je souhaiterais qu'elle ne soit visible qu'une seule fois c'est à dire lorque la personne change d'onglet et non lorsqu'elle retourne sur l'ancien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me!monongleterreur.SetFocus
Je me demande donc comment désactiver l'évènement change lorsque le SetFocus s'active !! (ou tout autre solution...)
Je sais pas si mon explication est claire.. Hésitez pas à demander pour plus de détails.
voici une partie de mon code (je précise qu'il fait appel à un module)
Si quelqu'un a réussi à comprendre ce que j'ai essayé d'expliquer et pense avoir une solution, je lui en serait très reconnaissant !! MERCI
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Private Sub CtlTab1_Change() Dim strErrsTheme As String, strThm As String Dim NbThemesErr As Long strThm = "Pai" strErrsTheme = ValiderControleTheme(Me.IDcontroledossier, strThm) If Len(strErrsTheme) > 0 Then NbThemesErr = NbThemesErr + 1 MsgBox strErrsTheme, , strThm Me!Paiement.SetFocus End If ' Final If NbThemesErr > 0 Then ' Il y a eu des erreurs Exit Sub End If End Sub
Partager