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 :

Couper un texte [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut Couper un texte
    bonsoir
    est il possible de couper un texte si¡'il est superieur a 90 caracteres, et de mettre la suite du texte sur la ligne suivante avec des espaces devant.
    et ainsi de suite sur les 30 lignes suivantes.
    merci
    cris

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Essaies ceci (le etxt initial en A1 de feuil3, les résultat à partir de A2 vers le bas)
    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
    Sub Test()
    Dim Mot As String, Txt As String
    Dim i As Integer, j As Integer, Nb As Integer
    Dim Tb
     
    Nb = 1
    j = 2
    With Sheets("Feuil3")
        Mot = .Range("A1").Value
        Tb = Split(Mot)
        Do
            Do While Len(Txt) <= Nb And i < UBound(Tb)
                Txt = Txt & " " & Tb(i)
                i = i + 1
            Loop
            .Range("A" & j).Value = Trim(Txt)
            j = j + 1
            Txt = ""
        Loop Until i = UBound(Tb)
    End With
    End Sub

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonjour,

    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
    Sub Test()
    Dim depart As Integer
    Dim texte As String
    Dim nouvellePhrase As String
     
       MsgBox "Découpe une phrase en chaines de 90 caractères maxi" _
       & Chr(13) & "sans couper les mots"
        depart = 5
        texte = [A1]
     
        Do While Len(texte) >= 90
            nouvellePhrase = Left(texte, 90)
            nouvellePhrase = InStrRev(nouvellePhrase, " ")
            Cells(depart, 1) = Left(texte, nouvellePhrase - 1)
            texte = Mid(texte, nouvellePhrase + 1)
            depart = depart + 1
        Loop
     
        Cells(depart, 1) = texte
     End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut
    bonsoir jpierreM
    j'ai utiliser ton code, ca fonctionne, je souhaiterais partir de la cellule B23, car c'est la qu'est ma premiere phrase,
    elle se divise bien, et va a la ligne suivante.
    mais si j'ai un autre texte en dessous, il faudrait que j'insere une ligne.
    comment faire une fois que le texte est bien decouper, que le code recherche, s'il y a un autre texte dans les lignes suivantes et les decouper aussi, en inserant a chaque fois une ligne pour decaler le texte qui suis sur la ligne suivante, je ne sais pas si j'ai ete assez clair.
    merci cris

    Mercatog
    le code que tu m'a donne, coupe toute la phrase, a chaque mot.
    merci

    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
     
    Sub Test()
    Dim depart As Integer
    Dim texte As String
    Dim nouvellePhrase As String
     
       MsgBox "Découpe une phrase en chaines de 90 caractères maxi" _
       & Chr(13) & "sans couper les mots"
        depart = 24
        texte = [B23]
     
        Do While Len(texte) >= 90
            nouvellePhrase = Left(texte, 90)
            nouvellePhrase = InStrRev(nouvellePhrase, " ")
            Cells(depart, 1) = Left(texte, nouvellePhrase - 1)
            texte = Mid(texte, nouvellePhrase + 1)
            depart = depart + 1
        Loop
     
        Cells(depart, 1) = texte
     End Sub

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Oui bien sûr, j'avais omis de préciser que la variable Nb doit comporter le nombre max de lettres (J'avais mis 1 pour tester les extrêmes)
    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
    23
    Sub Test()
    Dim Mot As String, Txt As String
    Dim i As Integer, j As Integer, Nb As Integer
    Dim Tb
     
    Nb = 90                                                              'Nb de lettres max par ligne
    j = 24                                                               'Ligne de début de collage du résultat
    Application.ScreenUpdating = False
    With Sheets("Feuil3")                                                'A adapter
        Mot = .Range("B23").Value
        Tb = Split(Mot)
        Do
            Do While Len(Txt) <= Nb And i <= UBound(Tb)
                Txt = Txt & " " & Tb(i)
                i = i + 1
            Loop
            If .Range("B" & j).Value <> "" Then .Rows(j).Insert
            .Range("B" & j).Value = Trim(Txt)
            j = j + 1
            Txt = ""
        Loop Until i >= UBound(Tb)
    End With
    End Sub
    [EDIT]
    J'ai édité le code initial pour pallier à une petite coquille

  6. #6
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut
    bonsoir mercatog
    le code bug a
    j = j + 1
    il tourne sans cesse, je suis obliger de faire plusieurs fois esc, pr arreter le code.
    cris

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/07/2008, 16h11
  2. Couper un texte trop long
    Par cirano dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 10/01/2008, 13h06
  3. Couper du texte dans un TEdit ou un TMemo
    Par AT dans le forum Débuter
    Réponses: 11
    Dernier message: 05/12/2007, 08h12
  4. [Tableaux] Couper un texte tous les xx mots
    Par sonno dans le forum Langage
    Réponses: 8
    Dernier message: 15/07/2007, 22h46

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