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 :

limiter la saisie dans une cellule


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
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut limiter la saisie dans une cellule
    Bonjour à tous.

    Je cherche à limiter la saisie dans une cellule d'une feuille Excel mais je ne vois pas quelle fonction utiliser et je ne sais pas s'il en existe une d'ailleur.

    Pour le moment j'arrive à limiter la saisie par l'événement Validation de la cellule

    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
     
     
    With Selection.Validation
            .Delete
            .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
            Operator:=xlLessEqual, Formula1:="10"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = "Le commentaire ne doit pas dépasser les 10 caractères"
            .ShowInput = True
            .ShowError = True
        End With
    certe ce fonctionnement n'est pas trop mal mais si l'utilisateur clique sur "oui" dans la MSGBOX alors le texte est gardé et surtout il est > à 40 caratères. Puis pareil si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     AlertStyle:=xlValidAlertStop
    là mon texte est tout simplement effacé.

    Donc voila pouvez vous me dire comment faire pour que lors de la saisie dans une cellule, celle ci ne puisse pas accepter un certain nombre de caractères...

    Merci d'avance !

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour,

    Sans mobiliser du VBA, tu peux utiliser la validation de données:
    xl 2000

    validation-données longueur du texte

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Il y a plusieur solutions, l'une d'elle serrait de ne pas mettre 2 boutons dans le MsgBox mais seulement 'OK' et d'annuler automatiquement la saisie.
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut
    D'accord pour ne mettre q'un seul bouton dans la msgbox seulement comment faire ? vu que celle-ci est générée par la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AlertStyle:=xlValidAlertWarning
    Ensuite si j'annule la saisie je vais surement perdre le texte, non ?

  5. #5
    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
    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
    Public Adres
    Private Sub Worksheet_Change(ByVal Target As Range)
    Adres = Target.Address
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If not Target.address (false, false) = Adresse de ta cellule then exit sub
    'Ici ton test
    if len(target) > 40 then
        'On efface tout
        Range(Adres).ClearContents
        'et on retourne sur 
        Range(Adres).Select
    endif
    End Sub
    Tu peux simplement vérifier que tu es dans la bonne colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If not Target.column = NoColonne then exit sub
    ... si j'ai bien compris

    Edit
    Et pour le second test tu peux raccourcir simplement la saisie... au lieu de l'effacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Len(Taget) > 40 then 
         Target = Left(Target, 40)
         Range(Adres).Select
    Endif

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour Ouskel'n'or,
    J'ai aussi pensé comme toi, mais mon avis il veux garder l'ancien texte..
    Si oui, mettre une variable globale et mémoriser le contenu de la cellule dans la variable dans l'événement Change, et dans l'annulation suite au MsgBox, remettre le contenu de la variable dans la cellule.
    Comme toi... Si j'ai bien compris.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut
    Oui le principe est de garder l'ancien texte. En fait voilà, est-il possible d'appliquer une sorte de mask de saisie pour une cellule donnée ??

    Car si j'applique le code de Ouskel'n'or en memorisant le texte puis en le réaffichant cela revien a gardé l'erreur de dépassement de caractères, euh vous voyez à peut près ?

  8. #8
    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
    As-tu lu mon édit ?
    Rien ne t'empêche d'ajouter un message et pas besoin de mémoriser Target. L'adresse de la cellule suffit.
    A+

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Nous ne sommes pas sur les mêmes rails ?
    D'après moi c'est la cellule qui est modifiée (donc plus le texte), mais je me trompe probablement ?

  10. #10
    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'ai rien compris.

Discussions similaires

  1. limiter la saisie dans une cellule à une valeur maximale
    Par ilissnmiden92 dans le forum Excel
    Réponses: 2
    Dernier message: 17/03/2015, 12h04
  2. Réponses: 3
    Dernier message: 28/02/2008, 21h28
  3. Interdire la saisie dans une cellule
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/11/2007, 12h49
  4. [VBA-E]controle de saisie dans une cellule
    Par greg778 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/03/2006, 16h43
  5. [SQL] Limiter la saisie dans une table
    Par dolphi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/09/2005, 11h43

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