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 :

Setfocus ne fonctionne pas [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Par défaut Setfocus ne fonctionne pas
    Bonjour à tous,

    Je souhaite résoudre un petit soucis que je ne comprend pas.
    Pour résumé je teste la valeur du Textbox 'TB_ID' et si l'ID n'existe pas dans la base ou que ce qui est saisi n'est pas au format numérique je fais un msgbox puis je supprime le contenu du Textbox et je fais un setfocus sur 'TB_ID'.
    Et c'est là que le problème apparaît : Du fait que le code est sur l'action AfterUpdate du textbox je dois sélectionner autre chose ou faire entrer. Tout le code fonctionne sauf le setfocus qui m'envoi sur ce que j'ai saisi pour déclencher AfterUpdate ou sur mon combobox suivant si j'ai fais entrer.

    En passant il y a un deuxième truc que je n'ai pas saisi : je suis obligé de passer par la variable x pour la valeur Sheets("BDMat").Range("A65000").End(xlUp).Row sinon ce n'est pas traité. Il me semblait que .row possédait une valeur de type Long ce qui devrait fonctionner non? J'ai résolu en mettant x en tant qu'integer mais je souhaiterai comprendre.

    Merci d'avance.

    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
    Dim x As Integer
    x = Sheets("BDMat").Range("A65000").End(xlUp).Row + 1
    If Me.TB_ID.Value > 1 And Me.TB_ID.Value < x Then
     
        MsgBox (Sheets("BDMat").[A65000].End(xlUp).Row)
        Else
            If Not IsNumeric(Me.TB_ID.Value) Then
            MsgBox "L'ID est obligatoirement au format numérique !", vbCritical
            Me.TB_ID.Value = "" 'Vide le control
            Me.TB_ID.SetFocus 'renvoi le focus sur la case ID
            Exit Sub
            Else
                MsgBox "L'ID entrée n'existe pas !", vbCritical
                Me.TB_ID.Value = "" 'Vide le control
                Me.TB_ID.SetFocus 'renvoi le focus sur la case ID
                Exit Sub
            End If
    End If

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je ne réponds pas directement à votre problème, mais vous pouvez contrôler la saisie dans votre textbox avec l'événement keypress où dans "1234567890", vous définissez les caractères autorisés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TB_ID_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    Quant à x, je ne vois pas.

    Cordialement.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Par défaut
    Merci à vous Eric pour cette astuce qui peut effectivement remplacer le isnot numeric et le >1.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu peux faire ton contrôle sur le bouton valider, et là donner le focus!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Par défaut
    Bonjour rdurupt,
    Qu'entends tu par "bouton Valider" ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dans ton formulaire tu rajoute un bouton et sur bouton_click te contrôles tes valeurs et tu redonnes le focus ou tu écris dans Excel.

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

Discussions similaires

  1. TextBox.SetFocus ne fonctionne pas
    Par wipMan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2013, 11h23
  2. setfocus texbox ne fonctionne pas
    Par chris45 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/12/2010, 17h20
  3. [Lazarus] SetFocus ne fonctionne pas
    Par cavaco dans le forum Lazarus
    Réponses: 5
    Dernier message: 09/08/2007, 23h17
  4. [VBA-E] SetFocus sur TextBox dans UserForm_Initialize ne fonctionne pas ?
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/11/2006, 11h39
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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