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 nombre de ligne dans une texbox [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Limiter nombre de ligne dans une texbox
    Bonjour à tous,

    voila je débute avec excel et les macros et je suis en train de créer un modèle de facture.
    Dans cette facture jài fusionné 3 cellules pour faire une saisie d`observation si nécesaire.
    J`ai créé une userform pour ouvrir une fenetre pour la saisie du texte qui en cliquant sur un bouton ajouter met le texte dans ma facture, dans les cellules fusionnées.
    Mon problème est que je ne sais pas comment limiter le nombre de ligne de ma textbox à 6 lignes par exemple.

    Merci de votre aide

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Voici un bout de code qui limite le nombre de lignes à 6 dans ta TextBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Tampon1 As String
    Private Sub TextBox1_Change()
        If Me.TextBox1.LineCount <= 6 Then
            Tampon1 = Me.TextBox1.Text
        Else
            MsgBox "Le nombre de lignes doit être inférieur à six"
            Me.TextBox1.Text = Tampon1
        End If
    End Sub
    Cordialement.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci gFZT82,
    ca fonctionne mais ca efface le texte des 6 premières lignes si je dépasse.
    Voila ce que j`avais entré comme code, ou dois-je mettre ton code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub cmdajouter_Click()
    'On active la feuille "facture"
    Worksheets("facture").Activate
    'On remplit les donnees dans notre tableau
    ActiveSheet.Cells(51, 3) = txtobservation.Text
    'On efface le formulaire
    txtobservation.Text = ""
    End Sub
    Merci beaucoup de ton aide

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Sur l'évènement KeyDown du 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
     
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        If TextBox1.LineCount > 6 Then
     
            MsgBox "6 lignes au maximum sont autorisées !"
     
            'défini le nombre maximal de caractères admis ce qui
            'ensuite interdira toutes autres entrées de caractère
            TextBox1.MaxLength = Len(TextBox1.Text) - 1
     
            'vire le premier caractère de la ligne 7
            TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
     
            'si "KeyCode = 0" empèche par la suite la suppression de caractère dans la chaine
     
        End If
     
    End Sub
    Hervé.

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Le code est celui du formulaire (Userform1).
    Je pense que le code s'effaçait parce que tu n'avait pas bien positionné la variable globale Tampon1.
    Essaie comme ça.

    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 Tampon1 As String
    Private Sub cmdajouter_Click()
        'On active la feuille "facture"
        Worksheets("facture").Activate
        'On remplit les donnees dans notre tableau
        ActiveSheet.Cells(51, 3) = txtobservation.Text
        'On efface le formulaire
        txtobservation.SetFocus
        txtobservation.Text = ""
    End Sub
    Private Sub txtobservation_Change()
        If Me.txtobservation.LineCount <= 6 Then
            Tampon1 = Me.txtobservation.Text
        Else
            MsgBox "Le nombre de lignes doit être inférieur à six"
            Me.txtobservation.Text = Tampon1
        End If
    End Sub
    Cordialement.

  6. #6
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    A la base, tu ne peux pas raisonner sur le nombre de caractères plutôt ?

    La propriété MaxLengh native des textbox t'éviterait une usine à gaz
    Spécifie le nombre maximal de caractères qu'un utilisateur peut taper dans un contrôle TextBox ou ComboBox.
    La notion de ligne est relative de toutes manières vu qu'elle dépend de la largeur de ton textbox

    cordialement,

    Didier

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci à tous les 3.

    - Ormonth, non j`ai vraiement besoin du nombre de ligne, le nombre de caractere ne suffit pas.

    - Theze, le problème c`est que ca affiche le message mais ca autorise encore d`autres lignes.

    - gFZT82, en placant ton code comme indiqué ca fonctionne mieux mais ca me donne une erreur 2185, impossible de lire la propriété LineCount, le contrôle doit avoir le focus.
    Et le débogage me surligne cette ligne en jaune:
    If Me.txtobservation.LineCount <= 6 Then

    Merci encore à vous de m`aider.

  8. #8
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Theze, le problème c`est que ca affiche le message mais ca autorise encore d`autres lignes.
    Alors là je suis surpris car une fois la propriété "MaxLength" défini, le TextBox n'accepte plus de caractère supplémentaire et dans mon code cette propriété est définie aux nombre de caractères qui sont contenus dans les six premières lignes et la ligne de code suivante retire le caractère inscrit dans la ligne 7 (celui qui a déclenché la condition à True).
    Sur mes tests, après six lignes il ne m'est plus possible d'en rajouter et le caractère de la ligne 7 est bien viré ???

    Hervé.

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,


    J’ai modifié le code afin de forcer le positionnement du focus dans la TextBox (txtobservation.SetFocus) avant le contrôle du nombre de lignes.

    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 Tampon1 As String
    Private Sub cmdajouter_Click()
        'On active la feuille "facture"
        Worksheets("facture").Activate
        'On remplit les donnees dans notre tableau
        ActiveSheet.Cells(51, 3) = txtobservation.Text
        'On efface le formulaire
        Me.txtobservation.Text = ""
    End Sub
    Private Sub txtobservation_Change()
        txtobservation.SetFocus
        If Me.txtobservation.LineCount <= 6 Then
            Tampon1 = Me.txtobservation.Text
        Else
            MsgBox "Le nombre de lignes doit être inférieur à six"
            Me.txtobservation.Text = Tampon1
        End If
    End Sub
    Nota : j'ai également essayé avec le code de Theze et je n'ai pas constaté d'anomalie.

    Cordialement.

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    merci beaucoup gFZT82, ça fonctionne impécablement bien.

    Theze, je vais ré essayer et je te dirai, j`ai peut être mal positionné le code.

    Merci encore de votre aide.

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

Discussions similaires

  1. [AC-2003] limitation du nombre de ligne dans une requête
    Par saiffadi dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 04/03/2012, 18h33
  2. Réponses: 3
    Dernier message: 28/04/2011, 09h40
  3. Réponses: 3
    Dernier message: 27/09/2006, 11h35
  4. [C#] Limité le nombre de lignes dans une DataView ...
    Par maitrebn dans le forum Accès aux données
    Réponses: 5
    Dernier message: 07/11/2005, 23h57
  5. Réponses: 8
    Dernier message: 20/06/2005, 15h10

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