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 :

Masque de saisie VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut Masque de saisie VBA
    Bonjour,

    Voila je cherche à limiter la saisie dans une cellule à trois caractères (3 lettres ou 3 chiffres)

    Je poste dans vba car ma cellule est déja "valider" (données-->Validation) par une liste donc cette solution n'est pas possible dans mon cas.

    Quelqu'un à une idée ?

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonsoir

    regardes du coté de la fonction vba "format"

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Salut

    A mettre dans le code de la feuille concernée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    'tu peux remplacer A1 par une autre cellule ou une plage de cellule
    's'il faut l'appliquer à toute la feuille supprimer ce premier if
      If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
      On Error Resume Next
      'la vérification ce fait ici
      'pour cet exemple je ne vérifie que la longueur de la chaine
      If Len(Target.Value) > 3 Then
        MsgBox ("trop long")
      End If
    End If
    End Sub
    il y a peut être plus simple mais pour l'instant je ne vois pas.
    en espérant avoir répondu à ton attente.

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonsoir,

    Si je peux me permettre, l'idée est la bonne mais il faudrait ajouter une ligne de code sinon rien n'empêchera d'écrire "anticonstitutionnellement"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
    'tu peux remplacer A1 par une autre cellule ou une plage de cellule
    's'il faut l'appliquer à toute la feuille supprimer ce premier if
      If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
      On Error Resume Next
      'la vérification ce fait ici
      'pour cet exemple je ne vérifie que la longueur de la chaine
      If Len(Target.Value) > 3 Then
        MsgBox ("trop long")
        Target.Value = Left(Target.Value, 3) '<-- ajout de cette ligne
      End If
    End If
    End Sub

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Comme je l'avais précisé dans les commentaires

    'pour cet exemple je ne vérifie que la longueur de la chaine

    pour ma part j'utiliserais plutot un inputbox avec la valeur tronqué en proposition ce qui permet de confirmer ou modifier le texte saisi et au cas ou annuler est choisi une chaine vide est renvoyée.

    du syle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      Do
        resultat = InputBox("Le texte saisie ne doit comporter que trois caractère", "Limitation de la saisie", Left(Target.Value, 3))
        If Len(resultat) <= 3 Then Exit Do
      Loop
      Target.Value = resultat
    le seul problème et de savoir ce que veux e040098k

Discussions similaires

  1. [XL-2003] Erreur masque de saisie vba
    Par alizearn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2011, 08h29
  2. [AC-2000] Pb en sortie vba d'un champ avec masque de saisie
    Par davidcurty dans le forum VBA Access
    Réponses: 6
    Dernier message: 06/10/2009, 14h14
  3. [VBA] Comparer une valeur à un masque de saisie
    Par spaiku dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/08/2008, 12h46
  4. VBA Masque de saisie dans une inputBox
    Par Secco dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/06/2008, 15h44
  5. Définir propriété masque de saisie en VBA
    Par spidev dans le forum Access
    Réponses: 4
    Dernier message: 21/06/2005, 14h10

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