IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Utilisation de Setfocus [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    technicien matériaux
    Inscrit en
    Septembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien matériaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 39
    Par défaut Utilisation de Setfocus
    Bonjour,

    Après avoir fait une recherche sur le forum, je n'ai pas trouvé ma réponse.

    J'ai créé ce code :
    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 TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
    Dim T2 As String
    Dim ErreurOF As Byte
     
     
    If IsNumeric(TextBox3.Text) = False Then T2 = "N'accepte que des chiffres entiers": ErreurOF = 1: GoSub Saut03
    If Int(TextBox3.Text) <= 0 Then T2 = "Saisir un chiffre positif non nul": ErreurOF = 1: GoSub Saut03
    GoSub Saut04
     
    Saut03:
     
     
    If ErreurOF = 1 Then: MsgBox "N°OF incorrect" & Chr(10) & T2: TextBox3.Text = ""
     
    Saut04:
     
     
    End Sub
    Je n'arrive pas à placer Setfocus pour que mon curseur retourne dans la case textbox3 dès que l'on clique sur OK de la msgbox.
    J'ai essayé de le mettre un peu partout dans le code sans résultat.

    Quelle solution pouvez-vous m'apporter ? Ai-je trop compressé mon code ? Dois-je utiliser autre chose que Setfocus ?

    En vous remerciant

  2. #2
    Membre confirmé
    Homme Profil pro
    Apprenti GEII
    Inscrit en
    Janvier 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprenti GEII
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 83
    Par défaut
    Bonjour, je pense que le Setfocus sert à pointer informatiquement un objet, et ne modifie pas la position de ton curseur

  3. #3
    Membre averti
    Femme Profil pro
    technicien matériaux
    Inscrit en
    Septembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien matériaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 39
    Par défaut
    Bonjour,

    Le but : Quand j'ai mon message d'erreur via la Msgbox, le curseur doit retourner sur cette même case. Donc repointer sur cette textbox et ne pas pointer sur celui d'après.

    Si j'utilise une autre formulation cela fonctionne mais elle ne me convient pas. Je souhaite rester avec ce code.

    Cordialement

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    il te suffit pour cela de passer dans ton code la variable Cancel à True
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour,
    test ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If IsNumeric(Me.TextBox1) = False Then MsgBox "vous devez saisir un nombre entier positif <> 0": Me.TextBox1 = "": Me.TextBox1.SetFocus: Exit Sub 'C'est un numérique
    If CInt(Me.TextBox1) <> CDbl(Me.TextBox1) Then MsgBox "vous devez saisir un nombre entier positif <> 0": Me.TextBox1 = "": Me.TextBox1.SetFocus: Exit Sub  'c'est un nombre entier
    If Abs(Me.TextBox1) <> CInt(Me.TextBox1) Then MsgBox "vous devez saisir un nombre entier positif <> 0": Me.TextBox1 = "": Me.TextBox1.SetFocus: Exit Sub 'c'est un nombre positif
    If Abs(Me.TextBox1) = 0 Then MsgBox "vous devez saisir un nombre entier positif <> 0": Me.TextBox1 = "": Me.TextBox1.SetFocus: Exit Sub 'c'est =0
    Dernière modification par Invité ; 15/10/2014 à 10h43.

  6. #6
    Membre averti
    Femme Profil pro
    technicien matériaux
    Inscrit en
    Septembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien matériaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 39
    Par défaut
    Bonjour à vous deux,

    J'ai essayé Rudurupt, c'est le même résultat qu'avec mon code. J'avais fait la même chose avec GoSub. Le curseur va dans la textbox suivante, ce que je ne veux pas si la msgbox apparaît.
    En cliquant sur OK, il faudrait que le curseur retourne sur ce textbox. Aurais-je bloqué quelquechose qui l'en empêche dans les propriétés?

    jpcheck comment puis-je passer cancel à true ? Je ne comprends pas.
    Je débute et ceci je ne l'ai pas encore vu.

    Edit : Merci Jpcheck j'ai trouvé. En effet il faut passer cancel à true.

    Sujet résolu, merci à vous

  7. #7
    Invité
    Invité(e)
    Par défaut
    effectivement, mois je l'ai fait sur le bouton valider car tu ne peux pas faire un setfocus sur l’événement exit. car si tu sort du contrôle tu ne peux pas y passer le focus!

    de toute les façons tu t'en moque de ce que saisie l'utilisateur, ce que tu veux c'est qu'il ne pollue pas ton fichier alors qualifie les données à la validation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Apprendre à utiliser le Setfocus
    Par minsongui dans le forum Débuter
    Réponses: 2
    Dernier message: 19/03/2010, 15h13
  2. [AC-2002] Utilisation de setfocus
    Par ROUSSIGNE dans le forum IHM
    Réponses: 6
    Dernier message: 12/03/2010, 15h08
  3. Utilisation SetFocus pour dialog box
    Par ricky78 dans le forum MFC
    Réponses: 1
    Dernier message: 18/07/2007, 08h46
  4. Utilisation du setFocus
    Par manest dans le forum Flash
    Réponses: 3
    Dernier message: 21/05/2007, 19h30
  5. utilisation de SetFocus
    Par rico63 dans le forum IHM
    Réponses: 8
    Dernier message: 13/03/2007, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo