XL 2019 VBA automatiser hauteur de lignes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sofmat

XLDnaute Junior
Bonjour, J'ai un fichier "facture" en relation avec un fichier "reference". Sur la designation des produits, je souhaiterai aligner automatiquement la hauteur de ligne (certaines références ont une désignation de 3 lignes, d'autres de 2, ...). Est-ce que quelqu'un pourrait m'aider. Merci d'avance. Bon dimanche

J'ai inséré ce code VBA sur l'onglet "facture" mais cela ne fonctionne pas.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim cell As Range
Dim rowHeight As Double

' Vérifie si la modification concerne la plage b17:e24
Set rng = Intersect(Target, Me.Range("b17:e24"))

' Si un changement se produit dans la plage b17:e24, ajuster la hauteur des lignes
If Not rng Is Nothing Then
Application.EnableEvents = False ' Désactive temporairement les événements pour éviter les boucles infinies
For Each cell In rng
' Réinitialise d'abord la hauteur de la ligne
cell.EntireRow.rowHeight = 15 ' Hauteur standard (ajustez si nécessaire)

' Ajuste ensuite la hauteur de la ligne en fonction du contenu de la cellule
cell.EntireRow.AutoFit

If cell.MergeCells Then
cell.EntireRow.rowHeight = 30 ' Définir une hauteur suffisante pour la ligne fusionnée
End If
Next cell
Application.EnableEvents = True ' Réactive les événements une fois le code exécuté
End If
End Sub
 

Pièces jointes

Bonjour si tu mets des RC dans ta désignation de la feuille référence (ce que tu fait pour j1 mais pas pour p2) tu peux essayer ceci
en modifiant ta formule de la feuille facture en remplatcant article par désignation


Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim cell As Range
Dim rowHeight As Double

' Vérifie si la modification concerne la plage b17:e24
Set rng = Intersect(Target, Me.Range("b17:e24"))

' Si un changement se produit dans la plage b17:e24, ajuster la hauteur des lignes

l = nligne(Target)
End Sub


Function nligne(cel As Range)
For n = 1 To Len(cel.Value)
If Mid(cel, n, 1) = Chr(10) Then
compte = compte + 1
End If
Next
cel.rowHeight = compte * 12 + 15
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
213
Réponses
0
Affichages
518
Réponses
4
Affichages
510
Réponses
3
Affichages
400
Réponses
14
Affichages
337
Réponses
21
Affichages
852
Retour