VBA - Ajustement automatique taille cellule en fonction de l'entrée

Bonjour,

je souhaite avoir de l'aide concernant ma macro. Mon problème est le suivant:

j'ai un champ de recherche dans mon fichier Excel qui affiche une box de recherche et lorsque le choix a été fait dans la liste de recherche, un certain nombres d'informations s'affichent sur le fichier Excel en fonction du choix de la recherche.

Et je souhaiterais que mes cellules où s'affichent les résultats de recherche s'adaptent à leur contenu au niveau de la taille. Pour le moment le texte est coupé à la taille de la cellule par défaut et ne s'adapte pas à la longueur du texte à l'intérieur.

Comment procéder pour que la cellule s'agrandisse ou diminue en taille automatiquement selon l'entrée automatique de texte de la formule?

Ma macro est la suivante (macro de mon userform):

Private Sub UserForm_Initialize()
    With ListBox1
        .ColumnCount = 5
        .ColumnWidths = "40;140;100;100"
    End With
    Me.ListBox1.List = Range("Tableau1[[Eligibilité]:[Libellé]]").Value
End Sub

Private Sub TextBox1_Change()
    Me.ListBox1.Clear
    i = 0
    For Each c In Application.Index(Range("Tableau1[[Eligibilité]:[Libellé]]"), , 4)
        If UCase(c) Like "*" & UCase(Me.TextBox1) & "*" Then
            Me.ListBox1.AddItem
            Me.ListBox1.List(i, 0) = c.Offset(0, -3).Value
            Me.ListBox1.List(i, 1) = c.Offset(0, -2).Value
            Me.ListBox1.List(i, 2) = c.Offset(0, -1).Value
            Me.ListBox1.List(i, 3) = c.Offset(0, 0).Value
            i = i + 1
        End If
    Next c
End Sub

Private Sub CommandButton1_Click()

    flag = True
    For i = 0 To ListBox1.ListCount - 1
          If ListBox1.Selected(i) Then
              flag = False
          End If
    Next i
    If flag Then
        MsgBox "Si l'activité n'apparait pas dans la nomenclature, il est probable qu'il s'agisse d'une activité non éligible. En cas de doute, tu peux solliciter un avis auprès du service micro-assurance: microassurance@adie.org "

        Exit Sub
    End If

    ligne = 4
    Range("B" & 8).Value = Me.ListBox1.Column(3)
    Range("B" & 11).Value = Me.ListBox1.Column(1)
    Range("B" & 12).Value = Me.ListBox1.Column(2)
    Range("B" & 16).Value = Me.ListBox1.Column(0)
    Me.Hide

End Sub

Et ci-joint une capture d'écran avec les cellules qui doivent s'adapter en taille (cellule "Clauses", "Commentaires").

capture d ecran 2019 01 14 a 09 13 48

Bonjour,

Un exemple avec la colonne C d'un fichier qui adapte sa largeur au contenu des cellules:

Columns("C:C").EntireColumn.AutoFit

Pour une ou plusieurs lignes également:

Rows("3:3").EntireRow.AutoFit

Merci beaucoup cela fonctionne parfaitement! Bonne journée

Bonjour, je l'ai appliqué à un fichier et cela a très bien fonctionné or mon second fichier qui est très semblable, à le seule différence que les cellules à ajuster sont fusionner (obligatoire), ne veut pas appliquer la macro d'ajustement..

Ce que j'ai rajouté à ma macro:

Columns("B:B").EntireColumn.AutoFit

Columns("C:C").EntireColumn.AutoFit

Rows("8:8").EntireRow.AutoFit

Rows("9:9").EntireRow.AutoFit

La macro semble fonctionner pour ajuster la largeur des colonnes mais n'ajuste pas la largeur des lignes, que faire?

Merci d'avance!

Le soucis avec la fusion c'est qu'Excel ne saura pas trop gérer, l'autofit ne fonctionnera pas sur des cellules fusionnées, c'est le soucis, et ça... même en manuel...

Je ne saurais malheureusement pas te guider là dessus, une solution pourrait être de défusionner, regarder la cellule de référence de la fusion (celle qui conservera la valeur de la cellule fusionnée), voir combien fait sa hauteur et sa largeur après ajustement, puis répartir les dimensions sur l'ensemble des lignes et colonnes de la cellule fusionnée, refusionner. Pas facile...

d'accord, c'est bon à savoir, j'ai dé-fusionné les cellules ducoup.

Merci bien!!

Bonjour,

il semblerait que le code d'ajustement fonctionne pas finalement, je ne comprend pas pourquoi..

1ère capture d'écran: lorsque j'ouvre mon fichier c'est ainsi que ce présente mon champ de recherche.

2ème capture d'écran: je choisis le libellé "Bar" et les cellules se compressent. Est ce lié au fait que les cellules s'ajustent à la longueur du nom du libellé et ainsi compressent les autres cellules en-dessous? Si c'est le cas, serait-il possible d'adapter la longueur du texte le plus long des cellules aux autres cellules et non pas seulement la cellule libellé qui s'appliquerait à toutes celles d'en dessous (une certaine cohérence dans l'ajustement de la taille des cellules tout simplement..)?

3ème capture d'écran: et pour certains choix du champ de recherche l'ajustement de la taille fonctionne bien dans dans le cas de ma troisième capture d'écran.

Pourriez vous m'aider à élucider ce problème? Devrais-je changer la macro, l'enlever d'une feuille et la laisser dans une autre ou faire un autre paramétrage?

Capture d'écran VBA: code d'ajustement largeur/longueur des cellules se trouvant sur la feuille concerné et le Userform.

Je vous remercie d'avance!!

Julia )

capture d ecran 2019 01 15 a 15 08 52 capture d ecran 2019 01 15 a 15 09 26 capture d ecran 2019 01 15 a 15 09 39 capture d ecran 2019 01 15 a 15 10 31

Bonjour,

J'ai du mal à répondre correctement à ta demande, comme je ne peux pas bidouiller ton fichier

En tout cas, je suis d'accord avec le fait que ça ne fonctionne pas très bien...

Peut-être faut-t-il fixer une largeur mini de colonne ou bien changer le programme..

Bonjour,

tout d'abord merci pour ta réponse.

Je t'envoie mon fichier (en format test, modifié) avec la macro rattaché afin que tu puisse m'aider sur le sujet plus facilement (en pièce jointe).

La cellule de champ de recherche est celle du Libellé et la nomenclature est la base pour la recherche.

Merci d'avance!

)

Bonjour,

C'est bon j'ai trouvé, en fait j'ai oublié qu'Excel était radin...

Si tu pars d'une colonne qui fait 10 de large, et que tu choisis bar, il va à peine agrandir la colonne, en revanche, si tu mets 200 de largeur à la colonne par exemple, puis que tu fais autofit, il ajustera au plus juste...

J'ai juste ajouté ça avant le autofit:

Columns("C:C").ColumnWidth = 200

Du coup ça devrait être bon maintenant!

Je te laisse voir

Bonjour,

merci beaucoup, cela semble fonctionner lorsque je choisis des libellés avec des clauses plus ou moins longues, celles-ci s'adaptent comme je le souhaite!

Néanmoins, il y a encore une petite chose que je souhaiterais mettre à jour: j'aimerais que lorsque je recherche mon libellé, les cellules ne se rétractent pas (voir capture d'écran) et que lorsque j'ai cherché un libellé long en caractères puis que j'efface les entrées qui en découlent dans les cellules, que celles-ci se remettent en format longueur/largeur normale (et non pas aussi longue que la dernière recherche). Voir les deux autres captures d'écrans.

Si cela n'est pas possible, ca ne fait rien, je te remercie déjà d'avoir réglé mon problème, ce ne sont pas des finalités ici )

Thanks

capture d ecran 2019 01 17 a 11 05 11 capture d ecran 2019 01 17 a 11 05 53 capture d ecran 2019 01 17 a 11 06 17

C'est possible mais je n'ai pas très bien compris!

Je reviens plus tard pour essayer de comprendre à nouveau la demande

Bonjour,

merci beaucoup!

Aussi si jamais tu as la réponse à cette demande/problème que j'ai avec mon fichier Excel, je te laisse jeter un coup d'oeil:

https://forum.excel-pratique.com/viewtopic.php?f=2&t=119271

Merci d'avance!

Bonjour,

par rapport à ta demande, quelque chose comme ça ferait l'affaire?

Si tu supprimes le contenu de C3, la colonne reprendra la largeur 10.71

Rechercher des sujets similaires à "vba ajustement automatique taille fonction entree"