Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 VBA automatiser hauteur de lignes

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

  • facture.xlsm
    20.8 KB · Affichages: 9
  • reference.xlsx
    13.6 KB · Affichages: 5

sousou

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
5
Affichages
94
Réponses
4
Affichages
466
Réponses
49
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…