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 :

Libellé de plus de 240 caractères


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut Libellé de plus de 240 caractères
    Bonjour,

    J'ai le code suivant me permettant de mettre en forme le libellé en entête de mes feuilles Excel sur plusieurs colonnes et d'aller à la ligne si il est long :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets(feuille).Range(Cells(1, 1), Cells(1, n_col)).HorizontalAlignment = xlCenterAcrossSelection
    Worksheets(feuille).Rows(1).WrapText = True
    Ce libellé est auparavant issu d'une variable et affecté à Cells(1,1)

    Mon problème est que quand ce libellé est très long (j'ai compté environ 240 caractères), j'obtiens #################### dans ma cellule

    Merci de votre aide

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Par défaut
    si une valeur est trop longue ( ne rentre pas dans la largeur de la colonne ) Excel affiche des ###

    - soit tu élargis ta colonne ( voir image jointe )
    - soit tu sélectionnes ta cellule puis "Format"/"Cellule"/ onglet "Alignement" et tu coches "Renvoyer à la ligne automatiquement"

  3. #3
    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
    Ou par macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Columns(NoColonne).AutoFit

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Mon libellé s'affiche sur plusieurs colonnes par l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .HorizontalAlignment = xlCenterAcrossSelection
    appliqué sur la ligne 1, colonnes de 1 à n

    et quand il est plus long que mes n colonnes, il s'affiche avec des retours à la ligne par l'instruction :

    appliqué sur la ligne 1 (ajuste la hauteur de la ligne)

    Ca marche bien, mon seul problème provient d'un seul cas ou mon libellé comporte plus de 240 caractères

    Réponse à Remit :

    J'utilise effectivement l'option "Renvoyer à la ligne automatiquement" par l'instruction Reponse à ouskel'n'or :

    J'ai déja effectué un sur toute mes colonnes et de plus ma cellule s'affiche sur plusieurs colonnes par l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .HorizontalAlignment = xlCenterAcrossSelection
    Apparamment 240 caractère est une limite, je sais pas trop

  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
    Je crois avoir compris ton pb mais j'ai besoin de savoir... Donne-nous un exemple de la totalité de ce que tu colles dans l'une des cellule qui ne vont pas.
    A+

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Par défaut
    tu pourrais pas nous faire un petit imprime-écran et nous le poster...

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Oui, on fait comment pour poster l'écran ?

    Effectivement ca serait plus parlant

  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
    Ce n'est pas ce qui m'intéresse. Tu colles l'entête de colonne sous la forme d'une chaîne de caractères. C'est un exemple de ces chaînes qui m'intéresse.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    3 exemples :

    1er Cas : le libellé est moins large que l'ensemble des colonnes et il s'affiche sans retour à la ligne, la hauteur de ligne est simple :

    Libellé --> "Description : Nom du contact simplifié 1 invalide : prénom manquant"

    2ème cas : le libellé est plus large que l'ensemble des colonnes et il s'affiche avec retour à la ligne, la heuteur de ligne est double ou triple suivant sa longueur

    Libellé --> "Description : L'état de l'occurrence correspondant à l'adresse principale est dit "incomplet" : ETACL = A"

    3ème cas (celui qui ne marche pas) : le libellé est très long (plus de 240 car), il affiche des ###### :

    Libellé --> "Description : La personne a des matricules Evolution différents selon l'occurrence Contrat ou Projet (POLIBASE ou POLIPROJ) que l'on regarde. (On ne lit les matricules que sur les contrats en cours s'il y en a, s'il n'y en a pas, on ne lit les matricules que sur les contrats résiliés ou expirés depuis moins de 2 ans)"

  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
    Je crois me souvenir que la largeur de colonne auto ne fonctionne pas dans ce cas là. Je t'offre cette solution à défaut d'une simple ligne de commande que je ne connaîtrais pas.

    Je reprends ton libellé. A la place, tu mets ta boucle pour récupérer chacun d'eux
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Explicit
     
    Sub PourChaqueLibelle()
    Dim Libelle As String, Ligne$
    Application.ScreenUpdating = False
    Libelle = "Description : La personne a des matricules Evolution différents selon l'occurrence Contrat ou Projet (POLIBASE ou POLIPROJ) que l'on regarde. (On ne lit les matricules que sur les contrats en cours s'il y en a, s'il n'y en a pas, on ne lit les matricules que sur les contrats résiliés ou expirés depuis moins de 2 ans)"
    'Ce que tu peux faire est régler la longueur des lignes de manière empirique
    Columns(5).ColumnWidth = 41
    RéglerLongueurLibelle (Libelle)
    Application.ScreenUpdating = True
    End Sub
     
    Sub RéglerLongueurLibelle(Libelle)
    Dim Tableau(), Ligne$, OldChaine$, i As Integer, j As Integer
    Dim NewChaine$
    'On règle la longueur des chaînes au dernier espace rencontré avant le 45ème caractère
    'Dans cet exemple, 45 correspond à la longueur max d'une ligne de texte
    'pour une largeur de colonne de 41
     
    'Recherche du dernier espace
    'Création du tableau
    OldChaine = Libelle
    Do While Len(OldChaine) > 45
    Ligne = Left(OldChaine, 45) '45 correspond à la longueur max désirée
        For i = Len(Ligne) To 1 Step -1
             If Mid(Ligne, i, 1) = Chr(32) Then Exit For
        Next
        j = j + 1
        ReDim Preserve Tableau(j)
        Tableau(j) = Left(OldChaine, i)
        OldChaine = Right(OldChaine, Len(OldChaine) - i)
    Loop
    j = j + 1
    ReDim Preserve Tableau(j)
    Tableau(j) = OldChaine
    For i = 1 To UBound(Tableau)
        NewChaine = NewChaine & Tableau(i) & vbLf
    Next
    'Suppression du dernier saut de ligne
    NewChaine = Left(NewChaine, Len(NewChaine) - 1)
    Cells(1, 5) = NewChaine
    MsgBox NewChaine
    End Sub
    Il te reste à adapter

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    Largeur des colonnes 255 caractères
    Longueur du contenu des cellules (texte) 32 767 caractères. Affichage de 1 024 uniquement dans une cellule et 32 767 dans la barre de formule.

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

Discussions similaires

  1. Plus de 255 caractères
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 13/03/2006, 17h01
  2. [xsl][xslfo][fop]pas plus de 512 caractères
    Par Invité dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/01/2006, 17h02
  3. SQL de plus de 255 caractères dans un recordset
    Par acama dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/01/2006, 15h50
  4. JDBC : requete de plus de 4000 caractères
    Par Endymion222 dans le forum JDBC
    Réponses: 1
    Dernier message: 01/12/2005, 17h00
  5. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07

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