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

hicham28

XLDnaute Occasionnel
bonsoir , et merci d'avance de votre aide, svp j'aimerai bien faire fonctionner le lostfocus sur le code ci joint, merci
Code:
Private Sub Montant_AfterUpdate()
Dim Mont As Double
If IsNumeric(Montant) Then
Mont = Montant
Montant = Format(Montant.Value, "#,##0.00")
Else
MsgBox ("vous devez faire la saisie d'un chiffre"), vbOKCancel
Cancel = True
Montant.SetFocus
End If
End Sub
 
Re : lostfocus

Bonjour Hicham

Perso pas tout compris de ta demande.... Où se trouve (USF ou feuille) et quel type de contrôles sont utilisés... un petit fichier avec ce que tu as et résultat attendu serait le bienvenu...

bon dimanche
@+
 
Re : lostfocus

Hello tout le monde, Hicham, Pierrot 🙂

Peut-être comme ça
Code:
Private Sub Montant_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Montant = Format(Montant.Value, "#,##0.00")
        
    If Not IsNumeric(Montant) Then
        MsgBox "vous devez faire la saisie d'un chiffre"
        Cancel = True
        Montant.Value = ""
        Montant.SetFocus
    End If
    
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    If Montant.Value = "" Then End

End Sub
ou bien avec un CommandButton
Code:
Private Sub CommandButton1_Click()
    
    Montant = Format(Montant.Value, "#,##0.00")
    
    If Not IsNumeric(Montant) Then
        Select Case MsgBox("vous devez faire la saisie d'un chiffre", vbOKCancel)
            Case vbOK
                Montant.Value = ""
                Montant.SetFocus
            Case vbCancel
                End
        End Select
    End If

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    If Montant.Value = "" Then End

End Sub
 
Re : lostfocus

Bonjour le fil 🙂,
Code:
Private Sub Montant_AfterUpdate()
Dim Mont As Double
If IsNumeric(Montant) Then
Mont = Montant
Montant = Format(Montant.Value, "#,##0.00")
Else
MsgBox ("vous devez faire la saisie d'un chiffre"), vbOKCancel
Cancel = True
Montant.SetFocus
End If
End Sub
A mon avis, tu boucles sur une impossibilité : tu formates des chiffres en texte, donc tu Update ton montant, et tu le retestes alors qu'il est devenu texte, donc application de la 2ème condition 😱...
En plus, tu utilises un Cancel = True, alors que AfterUpdate n'admet pas de
Code:
ByVal Cancel As MSForms.ReturnBoolean
Enfin, logiquement, SetFocus s'appliquerait plutôt sur un évènement Exit.
Code:
Private Sub Montant_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Mont As Double
If IsNumeric(Montant) Then
Mont = Montant
Montant = Format(Montant.Value, "#,##0.00")
Else
MsgBox ("vous devez faire la saisie d'un chiffre"), vbOKCancel
Cancel = True
Montant.SetFocus
End If
End Sub
fonctionne chez moi.
Bon courage 😎
Ajout : Salut Hulk
 
Dernière édition:
Re : lostfocus

merci a vous, mon soucie, c'est que j'aimerai que l'affichage de la zone de texte prends une forme avec le separateur des melliers et la virgules. ca marche pas que si je met
Montant = Format(Montant.value, "#,##0.00")
mais dans ce cas, la valeur pris est consideré comme text.
j'espere etre un peu claire
et merci
 
Dernière édition:
Re : lostfocus

Oui merci, mais j'ai réussie a avoir le même résultat autrement, mais j'aimerai que la zone de texte prend la forme numérique avec les séparateurs des milliers et aussi avec deux chiffres après le virgule, c la ou je suis bloqué.
Merci
 
- 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

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
358
Réponses
2
Affichages
272
Réponses
4
Affichages
521
Réponses
4
Affichages
586
Retour