XL 2013 Comment changer automatiquement la taille de police dans une cellule sous E

Jonochka

XLDnaute Nouveau
Bonjour,

Il me semble que je savais le faire dans une version précédente, mais là, sous Excel 2013, je ne trouve pas !

Dans un formulaire, j’ai parfois, dans certaines cellules, un texte trop long. J’aimerais trouver une solution pour que la police initiale s’adapte (en diminuant), sans que ni la hauteur ou largeur de la cellule ne soient modifiées, seulement la taille de la police et le retour à la ligne automatique me convenant.

J’ai bien entendu essayé les options suivantes, mais cela donne ceci :

Voir fichier "PrintScreen" annexé (suis pas certain d'avoir réussi l'annexe, désolé).

Quelqu’un aurait une idée ?

Merci par avance
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour Jonochka,

Voyez le fichier joint et la macro du bouton :
VB:
Sub AjusterPolice()
Dim cel As Range, police#, h#, i%
Set cel = [E3] 'à adapter
police = 50 'maximum à adapter
h = cel.RowHeight
Application.ScreenUpdating = False
cel.WrapText = True 'renvoi à la ligne
For i = 10 * police To 1 Step -1
    cel.Font.Size = i / 10 'pas de 0.1
    cel.Rows.AutoFit 'ajustement hauteur
    If cel.RowHeight <= h Then cel.RowHeight = h: Exit Sub
Next
End Sub
A+
 

Fichiers joints

Jonochka

XLDnaute Nouveau
Hello Job,

Grands mercis pour ton msg.
En plus cela fonctionne, fantastique !

Je ne suis en revanche pas le roi des macros (je n'y connais rien en fait) et je n'ai pas encore réussi à l'adapter à mon fichier. Mais j'y travaille !

Concernant cette macro, si j'ai plusieurs cellules de même taille qui auront un texte de longueur variable et non identique, comment je modifie ta ligne :

Set cel = [E3] 'à adapter

Du genre,
Set cel = [E3:E5] 'à adapter
ou
Set cel = [E3;E4;E5] 'à adapter
ou
Set cel = [E3] 'à adapter
Set cel = [E4] 'à adapter
Set cel = [E5] 'à adapter
ou ???

Enfin, j'imagine que si tu as fait cette macro, c'est parce qu'Excel n'offre pas (ou plus) l'option "automatique" de combiner "ajuster" et "envoyer à la ligne automatiquement" ?

Merci beaucoup pour le partage de tes compétences
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir
Enfin, j'imagine que si tu as fait cette macro, c'est parce qu'Excel n'offre pas (ou plus) l'option "automatique" de combiner "ajuster" et "envoyer à la ligne automatiquement" ?
excel ne l'a jamais fait ;)
quel intérêt y aurait il a ajuster pour faire un renvoie a la ligne qui sera inutile puisque ajusté :rolleyes:
ajuster tout court fait très bien l'affaire
et le calcul serait simple puisque columnwidth te donne le nombre caractères avec font size à 11 pour font name calibri
 

Jonochka

XLDnaute Nouveau
"Ajuster" reste sur une seule ligne (chez moi en tous cas) !
Donc l'association des deux rendrait la possibilité de lignes supplémentaires, et ainsi une lecture simplement visible
 

job75

XLDnaute Barbatruc
Pour ma réponse j'ai fourni un fichier Excel, vous pour vos questions aucun.

Salut patricktoulon.
 

Marcel32

XLDnaute Accro
Bonjour,

"Ajuster" reste sur une seule ligne (chez moi en tous cas) !
Oui, c'est le principe de l'option "Ajuster" : Excel diminue la taille de la police de caractères pour que tout le texte tienne dans la largeur de la cellule.

En revanche, l'option "Renvoyer à la ligne automatiquement" renvoie à la ligne autant de fois qu'il le faut pour que tout le texte tienne dans la largeur de la cellule dans le but de ne pas modifier la taille de la police de caractères.


Donc l'association des deux rendrait la possibilité de lignes supplémentaires, et ainsi une lecture simplement visible
Tu comprends maintenant qu'il est impossible d'associer les deux. ;)

Je pense qu'il faut passer par une macro qui fasse un peu de l'un et un peu de l'autre : dans tous les cas utilisation de l'option "Renvoyer à la ligne automatiquement", plus diminution de la police de caractères si tout le texte ne tient pas dans la cellule, le tout sans modification de la largeur bien sûr, mais de aussi de la hauteur de la cellule.
Tu risques tout de même d'éventuellement te retrouver avec des fins de texte non visibles... :(
 
Dernière édition:

Jonochka

XLDnaute Nouveau
Salut Marcel,

Oui je suis au courant des deux variantes !

Ma question est plutôt qu'elles étaient compatibles !

Tu peux aussi imaginer un retour à la ligne avec une réduction de la taille de la police, non ?

Merci

(PS : et c'était possible)
 

Jonochka

XLDnaute Nouveau
Oui, la macro je l'ai,

Mais c'était possible ! (j'en suis sûr)

Plus peut-être, à vérifier, mais je suis optimiste !

Merci
 

Marcel32

XLDnaute Accro
Les deux principes étant antagonistes, ce que tu demandais au départ n'est bien évidemment pas possible tel quel. ;)
En revanche, ça devient possible (actuellement par macro) si tu ajoutes une condition à ta question initiale : la condition en question est d'avoir une taille minimale de police de caractères.

Il me semble que la macro que tu as contient une ligne de code qui modifie la hauteur de la ligne (si besoin). ;)


Le principal dans tout ça est que tu aies obtenu une réponse qui te convienne ! :cool:
 
Dernière édition:

Jonochka

XLDnaute Nouveau
Les deux principes étant antagonistes, ce que tu demandais au départ n'est bien évidemment pas possible tel quel. ;)
En revanche, ça devient possible (actuellement pas macro) si tu ajoutes une condition à ta question initiale : la condition en question est d'avoir une taille minimale de police de caractères.

Il me semble que la macro que tu as contient une ligne de code qui modifie la hauteur de la ligne (si besoin). ;)


Le principal dans tout ça est que tu aies obtenu une réponse qui te convienne ! :cool:
Moyen

Une macro demande une action

J'aurai des lignes venant directement du net dans mon fichier - taille pas claire - et bien plus simple si automatisé, sans devoir appuyer sur le bouton
 

Marcel32

XLDnaute Accro
J'aurai des lignes venant directement du net dans mon fichier - taille pas claire - et bien plus simple si automatisé, sans devoir appuyer sur le bouton
Dans ce cas tu appelles ta macro juste après avoir inséré dans ton fichier les "lignes venant directement du net", et ainsi pas besoin d'appuyer sur un bouton. ;)
 

Jonochka

XLDnaute Nouveau
Alors suis pas assez calé pour ce faire

Suis déjà dans les soucis avec la macro !

Merci & bonne soirée
 

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Si l'on veut traiter automatiquement tous les textes de la colonne E voyez ces macros du fichier (2) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim police#, cel As Range, h#, i%
police = 11 'maximum à adapter
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
With [E:E] 'à adapter
    .WrapText = True 'renvoi à la ligne
    For Each cel In .SpecialCells(xlCellTypeConstants)
        h = cel.RowHeight
        For i = 10 * police To 1 Step -1
            cel.Font.Size = i / 10 'pas de 0.1
            cel.Rows.AutoFit 'ajustement hauteur
            If cel.RowHeight <= h Then cel.RowHeight = h: Exit For
    Next i, cel
End With
End Sub

Sub RAZ()
With [E:E] 'à adapter
    .WrapText = False
    .Font.Size = 11
End With
End Sub
Cela dit en général on ne touche pas à la police, on ajuste la largeur des colonnes ou la hauteur des lignes.

Bonne journée.
 

Fichiers joints

job75

XLDnaute Barbatruc
L'exécution de la macro Worksheet_Change peut bien sûr prendre du temps.

J'ai testé le fichier précédent en multipliant par 1000 le nombre de lignes.

Donc 4000 cellules à traiter, chez moi cela se fait en 5,5 secondes.
 

Jonochka

XLDnaute Nouveau
Bonsoir,

Je reviens vers vous car je n’y arrive pas, malgré votre aide.

J’ai essayé d’adapter la macro de Job75, mais n’ai pas réussi –(((

Qqn pourrait me dire comment créer UNE macro (dans la case rouge), afin de redimensionner les cellules en évidence en jaune dans le fichier joint ? (colonnes K, M, Y) toutes les tailles de cellules devraient être respectées, la police de base étant le Arial Unicode 10, au max, donc à réduire si nécessaire)

Merci par avance
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas