Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion gds35
  • 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 !

gds35

XLDnaute Impliqué
Bonjour , a tous mes AMIS du Forum ,

J'ai un soucis que je n'arrive pas a résoudre , dans un USF j'ai plusieurs textbox , dans l'une d'elle j'ai un nbre dans l'autre une valeur que doit rentrer l'utilisateur. si un nbre est entre l'entrée de la valeur est obligatoire. mais il se peut que la saisie du nbre soit une erreur , alors j'essai de revenir a la saisie du nbre soit pour le remettre a blanc soit pour que l'utilisateur entre la valeur .
Je bloque sur ma msgBOX voici le code :
Private Sub MTDOM_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'
' SI UN NB DE FORFAITS EST ENTRE OBLIGATION DE SAISIR
' LE MT UNITAIRE
'
Dim Message As String
'
If NBFDOM <> 0 And MTDOM.Text = vbNullString Then
Message = MsgBox("UN NB DE FORFAITS DOM A ETE SAISIE" & vbCrLf & _
"ENTRER LE MONTANT UNITAIRE DU FORFAITS OU SUPPRIMER LE NB DE FORFAITS", _
vbCritical + vbYes, "ERREUR !!!")
Cancel = True
NBFDOM = ""
NBFDOM.SetFocus
'
End If
End Sub
ce code ne fonctionne pas pourquoi , ne puis je revenir a la saisie du nbre de forfait . Merci de votre aide . Cordialement GDS35
 
Re : pb setFocus

bonjour gds, leforum

Si dans un évènement exit d'un textbox tu mets Cancel=True, cela empêche de sortir du textbox. Donc à l'intérieur du même évènement pour le même textBox tu ne peux pas mettre SetFocus pour un autre contrôle.

A+
 
Re : pb setFocus

Salut HASCO , et Merci donc si j'ai bien compris en enlevant CANCEL = TRUE cela doit Marcher et ben non ne peux revenir sur la zone de saisie NBFDOM , j'ai 2 fois l'affichage de mon MSGBOX puis je passe a la zone suivante ... ?????
Ou est ma connerie de prg ????
 
Re : pb setFocus

re,

C'est normal puisque le SetFocus fait sortir de ton Textbox MTDOM et que chaque sortie appelle l'évènement Exit.

solution 1 afficher le message et empêcher la sortie du textbox avec cancel=True

solution 2 Il faut organiser autrement (ailleurs) ton contrôle de saisie.
Sur validation de ton userform.

A+
 
Re : pb setFocus

Bonjour Gds35, Hasco, le forum 🙂,
J'avoue que j'ai été enquiquiné sur ce genre de problème il y a plus d'un an et n'ai pas trouvé la solution en Exit. Par contre, j'avais utilisé la procédure Change pour obliger un masque de saisie, peut-être cela pourra-t-il t'aider?
Code:
Private Sub PremièreParution_Change()
' Réinitialise le formulaire pour bouclage et parution
DateBouclage = ""
Ajustement = 0
' Masque de saisie pour la date
Dim Longueur As Integer
Longueur = Len(PremièreParution)
Message = "Saisie incorrecte !"
If Longueur = 8 Then
    Dim VérificationValidité As Boolean
    VérificationValidité = DateValide(PremièreParution)
    If VérificationValidité = False Then GoTo DateInvalide
    If CDate(PremièreParution) <= Now Then GoTo DateInvalide
End If
Select Case Longueur
    Case 1
        If Chiffre(PremièreParution) = True Then
            DateBouclage = ""
            DateBouclage.ForeColor = RGB(0, 0, 0)
            DateBouclage.Font.Bold = False
            DateBouclage.BackColor = RGB(255, 255, 255)
            Ajustement = 0
            Parution = ""
            Exit Sub
        Else
            Msg = MsgBox(Message, vbCritical, "ATTENTION !")
            PremièreParution = ""
            Exit Sub
        End If
    Case 2
        If Chiffre(Mid(PremièreParution, 2, 1)) = True Then
            PremièreParution = PremièreParution & "/"
            Exit Sub
        Else
            Msg = MsgBox(Message, vbCritical, "ATTENTION !")
            PremièreParution = Mid(PremièreParution, 2, 1)
            Exit Sub
        End If
    Case 4
        If Chiffre(Mid(PremièreParution, 4, 1)) = True Then
            Exit Sub
        Else
            Msg = MsgBox(Message, vbCritical, "ATTENTION !")
            PremièreParution = Mid(PremièreParution, 3, 1)
            Exit Sub
        End If
    Case 5
        If Chiffre(Mid(PremièreParution, 5, 1)) = True Then
            PremièreParution = PremièreParution & "/"
            Exit Sub
        Else
            Msg = MsgBox(Message, vbCritical, "ATTENTION !")
            PremièreParution = Mid(PremièreParution, 4, 1)
            Exit Sub
        End If
    Case 7
        If Chiffre(Mid(PremièreParution, 7, 1)) = True Then
            Exit Sub
        Else
            Msg = MsgBox(Message, vbCritical, "ATTENTION !")
            PremièreParution = Mid(PremièreParution, 6, 1)
            Exit Sub
        End If
    Case 8
        If Chiffre(Mid(PremièreParution, 8, 1)) = True Then
            DatePremièreParution = PremièreParution
            Exit Sub
        Else
            Msg = MsgBox(Message, vbCritical, "ATTENTION !")
            PremièreParution = Mid(PremièreParution, 7, 1)
            Exit Sub
        End If
End Select
Exit Sub
DateInvalide:
    Msg = MsgBox(Message, vbCritical, "ATTENTION !")
    PremièreParution = ""
    DateBouclage = ""
End Sub
Bon courage 😎
 
Re : pb setFocus

Re Gds, Jnp,

Une solution:

Code:
Dim bOk As Boolean      'Variable à mette en tête de Module de code du userform
 
Private Sub NBFDOM_Enter()
 bOk = True
End Sub
 
 
Private Sub MTDOM_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not bOk Then Exit Sub
    If Val(NBFDOM) <> 0 And MTDOM = vbNullString Then
        bOk = False
        MsgBox "UN NB DE FORFAITS DOM A ETE SAISIE" & vbCrLf & _
               "ENTRER LE MONTANT UNITAIRE DU FORFAITS OU SUPPRIMER LE NB DE FORFAITS", _
               vbCritical + vbYes, "ERREUR !!!"
        NBFDOM.SetFocus
    End If
End Sub

A+
 
- 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
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…