[Résolu] Hauteur de ligne à 22,5 minimum puis ajustement automatique (VBA)

Rafiou

XLDnaute Nouveau
Bonjour à tout le forum,

Première question pour moi sur ce forum (et pas la dernière je pense), il faut bien un début à tout :p.

Je sais qu'il y a déjà plusieurs discussions avec ce type de demande, mais j'ai bon essayer toutes les macros qui ont été proposées, à chaque fois il y quelque chose qui ne va pas. Je me suis donc décidé à recréer une discussion pour préciser mon problème :eek::

Pour mon travail, je crée des tableaux d'une dizaine de colonnes avec un nombre de lignes variant entre 10 et 2000. Je suis appelé à souvent modifier le contenu de certaines cellules où le contenu va passer d'un simple mot, à un texte de plusieurs lignes.

Je souhaiterai une macro qui me ferai des hauteurs de lignes de 22,5 minimum (sans jouer sur la taille de police) puis faire un ajustement automatique pour les autres lignes qui ont besoin d'un agrandissement de hauteur de lignes en ajoutant éventuellement 2 pixels de plus. Voici ce que j'ai trouvé sur une autre discussion:

Code:
Sub hauteur_de_ligne()

Selection.EntireRow.AutoFit ' hauteur ligne automatique
Selection.EntireRow.RowHeight = Selection.EntireRow.RowHeight + 2 ' + 2 pixels
If Selection.EntireRow.RowHeight < 22.5 Then Selection.EntireRow.RowHeight = 22.5 ' hauteur de ligne 25 mini

End Sub
J'ai 2 problèmes avec cette macros:
Elle ne fonctionne que ligne par ligne. Si j'en sélectionne plusieurs d'un coup, le résultat n'est plus là, il devient aléatoire. :confused:
Le deuxième problème est qu'elle me rajoute 2 pixels aussi a mes 22.5, et là, j'en ai pas besoin.

J’espère avoir été clair dans l'énoncé de mon problème.

Merci pour votre attention et vos réponses surtout! :D
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Re : Hauteur de ligne à 22,5 minimum puis ajustement automatique

Bonsoir Rafiou, le forum

Une idée mais pas sûr d'avoir bien compris ...
En partant du principe que les cellules ayant un longueur de texte trop longue se situent en colonne "A" (sinon à adapter)

Code:
Option Explicit
Sub Hauteur_de_ligne()
Dim WB As Workbook, WS As Worksheet
Dim Cell As Range, Plage As Range
Set WB = ThisWorkbook
Set WS = WB.Worksheets("Feuil1")
With WS
Set Plage = .Range("A2:A" & .Range("A65536").End(xlUp).Row) '<<<< sinon à adapter
End With
For Each Cell In Plage
    If Len(Cell.Text) > 100 Then 'en imaginant que la taille de la colonne "A" maximum est de 100 avant d'agrandir la "row"
        With WS.Rows(Cell.Row)
            .EntireRow.RowHeight = 50 'exemple bidon si plus de 100 !!!
        End With
    Else
        WS.Rows(Cell.Row).EntireRow.RowHeight = 22.5
    End If
Next Cell
End Sub
Bonne soirée
@+Thierry
 

Rafiou

XLDnaute Nouveau
Re : Hauteur de ligne à 22,5 minimum puis ajustement automatique

Tout d'abord bonjour et merci pour ta réponse Thierry,

La macro que tu me proposes me paraît bien compliquée pour ce que je demande. ;)

En effet, pour résumer ma demande, je souhaiterai une macro qui me fasse un ajustement automatique de la hauteur des lignes de mon tableau en fonction du texte qu'elles contiennent, mais que cette hauteur ne soit jamais inférieure à 22,5 (même pour une ligne vide). Donc toutes les lignes de mon tableau doivent être à 22,5 ou plus haute si trop de texte.

Bref je crois que la macro que j'ai placé au dessus est une bonne base, car elle fonctionne quand je selectionne une ligne à la fois. Elle me met bien la hauteur de ligne à 22,5 et auto ajuste si manque de hauteur. Il doit manquer quelques chose pour qu'elle soit opérationnelle et fonctionne sur un tableau complet. :p

Encore un grand merci pour votre attention.
 

Si...

XLDnaute Barbatruc
Re : (VBA) Hauteur de ligne à 22,5 minimum puis ajustement automatique

salut

et ainSi... ?
Code:
Sub Macro1()
  Dim R As Range
  Application.ScreenUpdating = False
  Selection.Rows.AutoFit
  For Each R In Selection
    If Rows(R.Row).RowHeight < 22.5 Then Rows(R.Row).RowHeight = 22.5
  Next
End Sub
 

JCGL

XLDnaute Barbatruc
Re : (VBA) Hauteur de ligne à 22,5 minimum puis ajustement automatique

Bonjour à tous,

Avec le code de Si et ajout d'un Renvoi à la ligne

VB:
Option Explicit
Sub Hauteur()
  Dim R As Range
  Application.ScreenUpdating = False
    With Selection
    .Rows.AutoFit
    .WrapText = True
    End With
  For Each R In Selection
    If Rows(R.Row).RowHeight < 22.5 Then Rows(R.Row).RowHeight = 22.5
  Next
End Sub
A+ à tous
 

Rafiou

XLDnaute Nouveau
Re : (VBA) Hauteur de ligne à 22,5 minimum puis ajustement automatique

Bonjour JCGL,

Je teste cela dans la soirée et je te dis quoi... Merci.
 

Rafiou

XLDnaute Nouveau
Re : (VBA) Hauteur de ligne à 22,5 minimum puis ajustement automatique

Un grand merci à Si... et JCGL pour votre aide précieuse!! ;)

Ca marche à la perfection! Quel temps de gagné pour la création de mes tableaux :eek: .

Encore une fois merci!

Bien à vous,

Rafiou.
 

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