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 :

Fonction Left Vba [XL-2002]


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
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut Fonction Left Vba
    Bonjour à tous,

    Je viens vers vous car j'ai un soucis que je ne comprends pas.

    Je souhaite faire une Fonction Left en VBA qui coupe la description si elle contient plus de 30 caractères , j'ai donc regardé l'aide de VB et je suis tombé sur ce code ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim AnyString, MyStr
    AnyString = "Bonjour à tous"    ' Définit la chaîne.
    MyStr = Left(AnyString, 1)    ' Renvoie "B".
    MyStr = Left(AnyString, 7)    ' Renvoie "Bonjour".
    MyStr = Left(AnyString, 20)    ' Renvoie "Bonjour à tous".
    Que j'ai édité en fonction de mes besoins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function Limitation()
    Dim AnyString, MyStr
     
    AnyString = Cells(3, 6) 'Cellule F3
     
    MyStr = Left(AnyString, 30) 'Ne garde que les 30 premiers caractères
     
    End Function
    Mais ca ne fonctionne pas. Rien ne se passe et je n'ai aucun message d'erreur.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir http://excel.developpez.com/faq/?page=Fonctions sinon voir aide en ligne sur fonction excel intégrée Gauche()

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut
    Salut Kiki, donc si je comprends bien l'aide de VB ne met d'aucune utilité, il faut que j'utilise ce code ci, qui pour moi est le plus approprié :

    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
     
    Function Limitation()
        Dim strChaine As String
     
        strChaine = Cells(3, 6)
        'La procédure va supprimer les caractères ; : !
        'dans la variable "Chaine"
        strChaine = SupprimeCaracteres(Left(strChaine, 30))
        MsgBox strChaine
    End Function
     
    Function SupprimeCaracteres(LeTexte As String, ParamArray A_Supprimer1())
        Dim i As Integer
        'Boucle sur les éléments du tableau
        For i = 0 To UBound(A_Supprimer1())
            'Supprime les caractères spécifiés
            LeTexte = Replace(LeTexte, A_Supprimer1(i), "")
        Next i
        SupprimeCaracteres = LeTexte
    End Function
    Donc j'ai bien le msgbox qui m'affiche les 30 premiers caractères, mais je n'arrive pas a ce qu'il m'efface dans la cellule les caractères en trop.

    Je pense que c'est un problème avec les function non ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Pour conserver les 30 caractères de gauche d'une cellule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(3, 6) = Left(Cells(3, 6), 30)
    L'aide d'Excel, ne peux pas prévoir tous les cas de figure.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut
    Alors la je ne comprends pas Corona, je l'ai essayé ce code ci. J'avais du faire une erreur au moment de l'écrire.

    En tout cas merci beaucoup ! C'est tout à fait ca !

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'erreur que tu as peut-être commise, c'est de ne pas préciser à la fois le classeur et la feuille en plus du range.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(3, 6) = Left(Cells(3, 6), 30)
    est dangereux, parce-que tu risques d'écrire sur la feuille et/ou le classeur actif qui n'est peut-être pas celui que tu souhaites.
    Le code ci-dessous est plus sûr.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim wkb As Workbook: Set wkb = ThisWorkbook
     Dim sht As Worksheet: Set sht = wkb.Worksheets("maFeuille")
     sht.Cells(3, 6) = Left(sht.Cells(3, 6), 10)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2007] Fonction Left sous VBa EXCEL
    Par FramanKalima dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 18/06/2015, 21h50
  2. [AC-2007] Fonction Left vba
    Par rabihm81 dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/08/2009, 14h51
  3. fonction left
    Par HULK dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/12/2004, 11h19
  4. fonction left avec sql server 6.5
    Par shake dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/06/2004, 08h48
  5. Fonction LEFT sur champ de type "text" : méthodes
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2004, 11h15

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