Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme setfocus

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, j’aimerai avoir votre aide
Je ne sais comment faire pour que le setfocus marchera.
Svp aidez moi

Code:
private Sub Tel_AfterUpdate()
Dim h As Double
Dim tablo
Dim strNum As String
Dim i As Byte
strNum = ""
If Not IsNumeric(Tel.Value) Then
        Cancel = True ' Annule la validation de contrôle
        MsgBox "Veuillez entrer un nombre !"
Else
With Tel
    If Len(Tel.Value) > 0 Then
        tablo = Split(Tel.Value, ".")
        For i = LBound(tablo) To UBound(tablo)
            If Len(tablo(i)) >= 10 Then
                strNum = strNum & ", " & Format(tablo(i), "00"" ""00"" ""00"" ""00"" ""00")
           Else:
                MsgBox "message"
               Tel.SetFocus
           End If
        Next i
    End If
    Tel.Value = Mid(strNum, 3)
End With
End If
End Sub
 
Re : probleme setfocus

Bonsoir Hicham, bonsoir le forum,

Puis-je te conseiller d'utiliser :
Code:
Private Sub Tel_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
....
End Sub

à la place de :
Code:
Tel__AfterUpdate()
....
End Sub
Tu pourras ainsi annuler la sortie de la TextBox Tel avec la ligne de code
Cancel = True (à la place de Tel_SetFocus)

Ligne que tu as utilisée d'ailleurs dans ton code mais hélas cela ne marche pas avec AfterUpdate.

Tel.SetFocus ne peut pas fonctionner non plus dans ton cas car le focus est toujours dans Tel... L'ordre des actions est d'abord Enter, puis BeforUpdate, puis AfterUpdate, puis Exit. Ce n'est qu'après que le focus passe au contrôle suivant...
 
Re : probleme setfocus

Bonjour Hicham, bonjour le forum,

Essaie comme ça :
Code:
Private Sub Tel_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 8
End Sub

Explications : l'événement KeyPress d'une Textbox s'effectue l'orsque l'utilisateur appuie sur une touche du clavier. Il faut que tu regardes je jeu de caractères ASCII (de 0 à 127) pour comprendre. Les nombres de 0 à 9 correspondent respectivement aux codes ascii 49 à 57. ce code ascii 8 correspond à la touche [retour arrière]. Donc, seules les touches correspondant aux valeurs 0 à 9 restent. Les autres s'effacent immédiatement donnant à l'utilisateur l'impression que rien n'a été tapé.


Si tu veux plus de renseignements, tapes Keyress dans l'aide VBA.
 
- 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
15
Affichages
788
Réponses
4
Affichages
735
Réponses
5
Affichages
914
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…