Bonjour à tous !!
Pour quoi as tu opté ?
-ajuster ne m'arrange pas, l’écriture devient vraiment minuscule..
-renvoie à la ligne non plus, ça élargit ma cellule..
-l'espace non plus, le faire sur > 2000lignes..
N'y a t il pas un moyen de tout simplement stopper le texte au bord de la cellule ?
Bien à vous
TH
bonsoir à tous,
il n'y a pas 36 solutions, soit,
tu occupes la cellule en face mais tu n'en veux pas
tu élargies la colonne mais tu n'en veux pas
tu essayes de diminuer la police mais tu dis que c'est riqiqi mini
tu renvoies à la ligne mais tu n'en veux pas
...
bref, il ne te reste plus qu'à raccourcir ton texte !? mais tu ne voudras pas non plus !
perso, lorsque j'ai une colonne susceptible de recevoir une trop grande longueur de texte
je place cette colonne en dernier dans mon tableau.
pas toujours évident, mais bon, il faut bien à un moment donné trancher !
Sub TailleCarac_Par_Taillecellule2()
'ajuster les caractère à la taille de la cellule (largeur)
Dim NbCar%, TailleC%, Large&, Taille%, Text$, Hauteur&
Text = Cells(2, 3).Value
TailleC = Cells(2, 3).Font.Size
NbCar = Len(Text)
'----------------
Large = Cells(2, 3).ColumnWidth
TailleC = (Large * 11.3) / NbCar
Cells(2, 3).Font.Size = TailleC
Hauteur = TailleC * 1.3
Cells(2, 3).RowHeight = Hauteur
If Hauteur < 15 Then Cells(2, 3).RowHeight = 15
Cells(2, 3).VerticalAlignment = xlCenter
Range("C2").Font.Name = "Arial Narrow"
End Sub
Sub TailleCarac_Par_Taillecellule3()
'ajuster les caractère à la taille de la cellule (largeur)
'ou cellules fusionnées sur la même ligne
Dim NbCar%, TailleC%, Large&, Taille%, Text$, Hauteur&
Dim Adr$, Adr1$, Lg&, Col%, NbF%, i%
Adr = ActiveCell.Address
Col = Range(Adr).Column
Text = Range(Adr).Value
NbF = ActiveCell.MergeArea.Cells.Count 'Nb colonne
TailleC = Range(Adr).Font.Size
NbCar = Len(Text): If NbCar = 0 Then Exit Sub
Large = Range(Adr).ColumnWidth
'--- Largeur total cellules fusionnées ---
Lg = 0
For i = Col To NbF + Col - 1
Large = Cells(1, i).ColumnWidth
Lg = Large + Lg
Next i
'-----------------------------------------
TailleC = (Large * Lg) * 0.8 / NbCar
Range(Adr).Font.Size = TailleC
Hauteur = TailleC * 1.3
Range(Adr).RowHeight = Hauteur
If Hauteur < 15 Then Range(Adr).RowHeight = 15
Range(Adr).VerticalAlignment = xlCenter
Range(Adr).HorizontalAlignment = xlCenter
Range(Adr).Font.Name = "Algerian" '"Arial Narrow"
End Sub
Ce n'est pas un problème avec ce code :-l'espace non plus, le faire sur > 2000lignes..
Sub LimiteTexte()
ActiveSheet.UsedRange.Replace " ", "", xlWhole 'RAZ
With ActiveSheet.UsedRange 'redéfinit le UsedRange
.Columns(.Columns.Count + 1) = " "
On Error Resume Next 'si aucune SpecialCell
.SpecialCells(xlCellTypeBlanks) = " "
End With
End Sub
S'il y a des cellules fusionnées on utilisera un tableau VBA, très rapide :@job, bien le code, mais il supprime le texte des cellules fusionnées.
Sub LimiteTexte()
Dim t, ub%, i&, j%
ActiveSheet.UsedRange.Replace " ", "", xlWhole 'RAZ
With ActiveSheet.UsedRange 'redéfinit le UsedRange
With .Resize(, .Columns.Count + 1)
t = .Formula 'matrice, plus rapide
ub = UBound(t, 2)
For i = 1 To UBound(t)
For j = 1 To ub
If t(i, j) = "" Then t(i, j) = " "
Next j, i
.Formula = t 'restitution
End With
End With
End Sub