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 :

Gérer les retour à la ligne avec VBA (marge de droite)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Gérer les retour à la ligne avec VBA (marge de droite)
    Salut tout le monde,

    Je transfère des données d'une base de données Access vers Excel avec DAO.

    Dans ces données, il y'a une longue phrase que je suis obligé de mettre dans trois champs différents d'access afin de mettre le premier champ dans la première ligne excel, le second champ dans la 2e ligne excel et le 3e champ dans la 3e ligne excel.

    Je me demandais si il n'était pas possible de mettre la ligne complète dans un champs access et que VBA gère les retour à la ligne automatiquement dès qu'il rencontre la fin de la ligne excel, c'est à dire la marge de droite.

    Donc si le pipe à la fin de ma phrase correspond au début de la marge de droite :

    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa|
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbb|
    cccccccccccccccccccccccccccccccccccccccccccccccccc ccccccccccccccc|
    Dès que le pipe est rencontré, il va à la ligne automatiquement en ajoutant le reste de la phrase.

    est-ce possible avec VBA ?

    Je vous en remercie d'avance.

    beegees

  2. #2
    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
    Bonjour,

    Donc si je comprend bien, au départ tu as une phrase de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa|bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbb|cccccccccccccccccccccccccccccccccccccccccccccccccc ccccccccccccccc|
    Tu peux par exemple utiliser la fonction Split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
    Dim Chaine As String, Tablo As Variant, i As Byte
     
    Chaine = "La Phrase"
    Tablo = Split(Chaine, "|")
     
    For i = 0 to Ubound(Tablo) -1 
        Range("A" & i + 1) = Tablo(i)
    Next
     
    End Sub

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Je me suis mal expliqué.

    J'ai une phrase :

    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccc ccccccccccccccc

    J'aimerais que la phras soit coupée automatiquement au début de chaque bord droit (donc en fin de ligne).

    Mais je me demande si c'est faisable car un mot pourrait alors être coupé en plein milieu .

    Merci encore pour ton aide.

    beegees

  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
    aah ok...ce que tu appelles "bord droit" est la limite de la colonne ?

    La seule solution que moi je vois est de te fixer une limite de caractères selon la largeur de ta colonne (par exemple 40 caractères) et lorsqu'on atteint cette limite on coupe la phrase à l'espace juste avant cette limite

    Une accrobatie du genre :
    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 chaine As String, Result As String
    Dim i As Integer, tablo As Variant
     
    tablo = Split(Range("A1"), " ")
     
    For i = 0 To UBound(tablo)
        If chaine = "" Then
            chaine = tablo(i)
        Else
            chaine = chaine & " " & tablo(i)
        End If
        If Len(chaine) > 40 Then
            Result = Result & Left(chaine, Len(chaine) - Len(tablo(i)) - 1) & Chr(10)
            i = i - 1
            chaine = ""
        End If
    Next
     
    If chaine <> "" Then Result = Result & chaine
    Range("A1") = Result
     
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/10/2012, 12h13
  2. [DOM] Gérer les noeuds textes et les retours à la ligne
    Par fredericD dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 08/01/2012, 17h20
  3. Réponses: 11
    Dernier message: 09/02/2011, 03h15
  4. Réponses: 10
    Dernier message: 25/03/2009, 23h29

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