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 :

Ajustement Texte multilignes dans Cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Points : 88
    Points
    88
    Par défaut Ajustement Texte multilignes dans Cellule
    Bonjour,


    Je récupère un champs String à l'aide d'un text box multilignes (Possibilité d'appuyer sur entrée dans le textbox).

    En l'insérant dans une cellule je souhaiterais que le format de cette dernière s'ajuste automatiquement à la taille du texte.

    J'ai essayé de fusionner plusieurs cellule avant d'insérer mon texte, ca marche pour la longueur mais pas pour la hauteur.

    Si il n'existe pas une solution plus simple, alors je souhaiterais savoir quelle est le nom de la fonction qui permet de compter le nombre d'occurence d'un caractère dans un string. Comme cela j'adapte la hauteur de ma cellule en fonction du nombre de ligne...

    Merci,

    Laurent

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    J'ai exactement le même problème

    J'ai essayé en comptant le nombre de caractère puis d'ajuster ma hauteur de ligne en fonction du nombre de caractère, mais c'est un peu le bordel car ca marche bien quand les lignes sont completes.... Or des fois, j'ai deux trois mots sur ma ligne et j'ai un retour à la ligne apres...

    Bref... si ca peut t'aider, j'ai fais un truc de ce style :

    - Je sais que chaque ligne contient X caracteres
    - Une ligne c'est environ "15" de hauteur
    - Je compte donc le nombre total de caractere que je divise par X, et multiplie par 15 pour avoir ma hauteur de ligne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Nb_caract_ligne = X
    Nb_caract_total = Len (MaFeuille.MaCellule)
     
    'Formule pour la hauteur de ma ligne...
    Rows(Maligne:Maligne).RowHeight = (Nb_caract_total / Nb_caract_ligne) * 15
    Mais bon, comme je l'ai dit, c'est assez aléatoire en fonction du contenu. Si quelqu'un a une VRAI solution, je suis preneur aussi....

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Si j'ai compris, vous voulez que la ligne s'agrandisse en fonction du text ?

    Si c'est cela, mettre la propriété 'Renvoi à la ligne automatique' à true dans les propriétés cellules.

    A+
    Edit: enfin... Cocher 'Renvoi à la ligne automatique' (Déformation VB6)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    En ce qui me concerne, j'ai déjà essayé mais ça ne marche pas. A l'intérieur de la cellule, le texte est bien renvoyé à la ligne, mais la hauteur de ma cellule ne change pas...(je ne vois donc pas tout le contenu)

    Je sais pas si tu me suis....

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    As tu essayé


    michel

  6. #6
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Activecell.Row.EntireRow.AutoFit
    Ca marche pas ???
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par Guidhy
    En ce qui me concerne, j'ai déjà essayé mais ça ne marche pas. A l'intérieur de la cellule, le texte est bien renvoyé à la ligne, mais la hauteur de ma cellule ne change pas...(je ne vois donc pas tout le contenu)
    Quel version d'EXCEL ?
    J'ai la version Excel 2000 et la ligne se redimentionne automatiquement !!
    A+

    Edit: j'ai également essayé par VBA et c'est encore concluant

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    -Version Excell 2003

    J'ai essayé aussi :

    Rows(NumLigne).AutoFit
    Activecell.Row.EntireRow.AutoFit

    Mais Excell me réduit ma ligne à hauteur normale

    A noter : Ma cellule est en fait quatre cellules fusionnées (B30 et C30 et D30 et E30) Je ne sais pas si cela a de l'influence.....?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Points : 88
    Points
    88
    Par défaut
    - Version Excel 2000

    J'ai exactement le même résultat. Ma hauteur de cellule ne bouge pas du tout...

    PS: Moi aussi j'ai été obligé de fusionner plusieurs cellules afin de ne pas modifier la largeur de la colonne toute entiere.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Points : 88
    Points
    88
    Par défaut
    Rahhh je me rends fou la j ai tout essayé..enfin pas tout vu que j y arrive pas!

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Points : 88
    Points
    88
    Par défaut
    Bon j'ai trouvé ca sur un forum. Ca marche niquel.

    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
    'Ajuste la hauteur de la cellule en fonction du nombre de lignes dans la cellule
     
    Sub AutoFitMergedCellRowHeight()
     
    Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
    Dim CurrCell As Range
    Dim ActiveCellWidth As Single, PossNewRowHeight As Single
     
     If ActiveCell.MergeCells Then
       With ActiveCell.MergeArea
         .WrapText = True 'enclenche le renvoi à la ligne automatique (modif fs)
         If .Rows.Count = 1 Then 'And .WrapText = True Then
           Application.ScreenUpdating = True
           CurrentRowHeight = .RowHeight
           ActiveCellWidth = ActiveCell.ColumnWidth
           For Each CurrCell In Selection
               MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
           Next
          .MergeCells = False
          .Cells(1).ColumnWidth = MergedCellRgWidth
          .EntireRow.AutoFit
           PossNewRowHeight = .RowHeight
          .Cells(1).ColumnWidth = ActiveCellWidth
          .MergeCells = True
          .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, CurrentRowHeight, PossNewRowHeight)
         End If
       End With
     End If
     
    End Sub

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    J'essai dans tous les sens mais je comprends pas....

    Par exemple pour ma cellule fusionnée (B30, C30, D30 et E30)... je fais comment ?

    Est-ce que tu pourrais me donner le code en fonction de ma cellule stp ? Je débute et j'avoue ne rien comprendre à ce qu'il y a d'écri....

    Merci..

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Points : 88
    Points
    88
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    'Fusionne les cellules
     
    Range("B30:E30").Select
     
    Selection.Merge
     
    'Ajuste la hauteur de la cellule à son texte
     
    Range("B30").Select
    Call AutoFitMergedCellRowHeight

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    Merci bien l'ami !

    Ca marche déjà beaucoup mieux ! Cependant lorsque j'ai trop de contenu dans ma cellule, j'ai l'impréssion qu'il se fixe une hauteur limite et donc tout n'est pas affiché....

    Si quelqu'un sait pourquoi.... se serait terrible, sinon, c'est quand même déjà beaucoup mieux qu'avant.

    Merci encore

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    les fonctions 'Merges' autorise le fusionnement de cellules, ligne ou colonne mais ne corresponde pas à la modification de la hauteur de la ligne concernée.
    Je ne vois pas où est le problème vu que chez moi la ligne se redimentionne en fonction du texte inscérer. Il y a probablement un élément de propriété qui n'est pas bien initialiser sur vos options. Mais je ne vois pas lequel !!

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

Discussions similaires

  1. [XL-2007] Message texte automatique dans cellules vide
    Par mitsue dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2012, 09h10
  2. Réponses: 1
    Dernier message: 07/09/2011, 10h33
  3. [WD16] Dessiner texte multiligne dans un champ image
    Par Pascal26120 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/08/2011, 03h36
  4. [WD16] Texte multiligne dans combo de table
    Par lololebricoleur dans le forum WinDev
    Réponses: 5
    Dernier message: 10/04/2011, 18h56
  5. [AC-2003] Zone de texte multiligne dans un état ?
    Par OtObOx dans le forum IHM
    Réponses: 7
    Dernier message: 06/10/2010, 16h34

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