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 :

Validation automatique d'un Textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 116
    Par défaut Validation automatique d'un Textbox
    Bonjour voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub TextBox10_Change()
    'exemple pour format xx/xx/xxxx
    Dim Valeur As Byte
    TextBox10.MaxLength = 7 'nb caracteres maxi dans textbox
    End Sub
    Je voudrai que le textbox ce valide automatiquement une fois les 7 caractère ecrit, je me casse la tête .

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Où se trouve le textbox ? Dans une feuille de calculs ou dans un userform ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 116
    Par défaut
    Dans un Userform pour le moment il est validé avec un Button mais j'aimerai qu'il ce valide tout seul après avoir marqué les 7 caractères

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour valider Textbox1 et limiter la saisie à 7 caractères, il faut qu'il perde le focus.
    Pour perdre le focus, il est nécessaire d'avoir un autre objet à disposition ou de fermer l'userform.
    Pour ça, tu peux tester le nombre de caractères dans TextBox1_KeyUp
    Un exemple avec deux textbox, TextBox1 et TextBox2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Len(TextBox1) = 7 Then TextBox2.SetFocus
    End Sub
    Tu sauras adapter ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 116
    Par défaut
    J arrive a limiter mon TEXTBOX a 7

    je te montre le code qui valide mon TEXTBOX

    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
    20
    21
    22
    Private Sub CommandButton5_Click()
    Selection.AutoFilter
     
              Dim plage As Range, Cell As Range
            Dim FL1 As Worksheet, critere As String
            Set FL1 = Worksheets("Feuil1")
     
            Set c = Cells.Find(What:=TextBox10.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
     
     
          On Error GoTo Erreur
            If c = "" Then
            UserForm1.Hide
            End If
            c.Activate 'active la cellule trouvée
     
            DA = ActiveCell.Offset(0, 19).Value 'décale pour trouver le fournisseur
            TextBox12.Value = DA
    Erreur:
     
    End Sub
    Voila le code qui valide le TEXTBOX, et j'aimeré automatisé cela sans touche.
    Car plus tard la référence sera rentré dans le TEXTBOX avec un lecteur de code barre

    J'espère que c plus clair

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'aime bien quand les informations arrivent au compte-gouttes, on est plus sûr de répondre à côté.
    Tu as la solution dans ton propre code, si tu ajoutes le changement de focus que je t'ai mis.
    Tu places tout ton code dans l'événement change et si Len(textbox1) = 7 tu exécute ce que tu as mis dans le clic du bouton.
    Par contre, tu te compliques la vie en ajoutant une gestion d'erreur.
    Quelques remarques concernant ton code
    'Selection.AutoFilter 'on se demande ce que ça vient faire là vu qu'on ne sait pas ni ou te trouves ni ce que tu filtres ni si tu mets un filtre ni au contraire si tu le retires
    Pour savoir si un filtre est posé, regarde FilterMode dans l'aide en ligne
    Ici tu déclares Cell as Range et tu ne l'utilises pas dans ta procédure
    Dim plage As Range, Cell As Range
    Dim FL1 As Worksheet, critere As String
    Set FL1 = Worksheets("Feuil1")
    Ici tu utilises c que tu n'as pas déclaré (as range)
    Set c = Cells.Find(What:=TextBox10.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    etc.
    Un exemple à tester... si j'ai bien compris ce que tu souhaites
    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 TextBox10_Change()
    If Len(TextBox10) < 7 Then Exit Sub
    Dim plage As Range, Cell As Range
    Dim FL1 As Worksheet, critere As String
            Set FL1 = Worksheets("Feuil1")
     
            Set Cell = FL1.Cells.Find(What:=TextBox10.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
     
            If Cell Is Nothing Then
                Unload UserForm1 'Hide masque l'userform mais ne le décharge pas
                Exit Sub
            End If
            'Inutile de l'activer pour récupérer la valeur de la colonne
            'cell.Activate 'active la cellule trouvée
     
            TextBox12.Value = Cell.Offset(0, 19).Value 'décale pour trouver le fournisseur
     
    End Sub
    Et dans UserForm_Initialize mais pas forcément justifié...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
        TextBox10.MaxLength = 7
    End Sub
    La précision qui manque :
    Que fais-tu de ton userform si la donnée n'est pas trouvée ? Tu le masques ou tu le décharges ?
    Bon après-midi

    PS - Un autre élément manquant : Tu ne précises pas la colonne de la recherche. Si tu as la donnée que tu cherches n'importe où dans la feuille, sur une autre colonne, tu vas la trouver... et l'offset(0, 19) sera faux

Discussions similaires

  1. Validation automatique d'une fenêtre non WinDev
    Par ahmet57 dans le forum WinDev
    Réponses: 4
    Dernier message: 18/08/2006, 08h35
  2. [DTD] pas de validation automatique ?
    Par Emplyst dans le forum Valider
    Réponses: 2
    Dernier message: 23/07/2006, 23h25
  3. [Javascript] validation automatique à partir d'une liste
    Par lau_the_raptor dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/06/2006, 07h05
  4. Validation automatique de formulaire (sans clic)
    Par budiste dans le forum Langage
    Réponses: 6
    Dernier message: 13/04/2006, 16h31
  5. [C#] Remplissage automatique de 2 TextBox
    Par dacamp dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/09/2004, 17h50

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