Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

casse tête de dimension de cellules fusionnées ! sos

3 réponses
Avatar
Philippe
Bonjour,

J'ai des cellules fusionnées dans lesquelles des utilisateurs entrent du texte
y compris des chr(10).
Dans une cellule normale si on a "alignement renvoyer à la ligne
automatiquement",
la hauteur de ligne se redimensionne pour afficher tout le contenu de la
cellule.

Ce n'est pas le cas avec des cellules fusionnées

On m'a suggéré (merci à lui de toutes façons) de placer ça dans le code de
la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
Target.WrapText = True
End Sub

Mais ça ne fonctionne pas pour la même raison.

J'ai besoin de redimensionner ces hauteurs de ligne à la validation de la
cellule (ou en cours de frappe, mais c'est pas utile).

******** Quelqu'un aurait-il une idée ? ********

J'ai une idée
qui me fait peur parce que je ne sais pas si c'est possible, ou par quel
bout le prendre :
- évaluer la chaine après validation (mais comment lancer ça ?)
- décider que je peux avoir tant de caractères par ligne
- compter le nombre de lignes = nombre de chr(10) + divisions des "lignes"
entre chr(10) par le nombre de caractères... qqch comme ça.
- ensuite, multiplier ma hauteur de ligne type par le nombre de lignes ainsi
calculé
- et enfin changer la hauteur de la ligne concernée

***** Y-a-t-il plus simple ? *****

Si je fais comme indiqué :
Comment récupérer les coordonnées de la cellule responsable du changement ?
Puis je le limiter à certaines cellules de la feuille : ie comment vérifier
que la cellule appartient à un range a8:a12 ?

Merci pour toutes vos suggestions,
Philippe

3 réponses

Avatar
anonymousA
Je t'ai fait une autre réponse plus complète mais qui ne résoud pas
le problème à 100% étant entendu que même à la main, le problème
n'est pas résolu.
Va voir ton ancien fil.

A+
Avatar
anonymousA
Pour compléter si tu veux poursuivre dans la voie que tu as indiqué,
mais dont je doute qu'elle te ^ène à la solution ( mais ne
désespérons pas), pour déterminer la cellule qui a changé, il
suffit de récupérer target.address. Pour savoir si target appartient
à un range("A1:A8") p.e, il suffit de tester
intersect(target,range("A1:A8")) et de vérifier si cette intersection
renvoie Nothing.

A+
Avatar
Daniel
Bonjour.
Je n'ai pas vu la seconde solution d'AnonymousA. Regarde le code suivant,
valable uniquement pour deux cellules de la même ligne fusionnées :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Col As Single, ligne As Single
If Target.MergeCells = False Then Exit Sub
With Target
.MergeCells = False
Col = .ColumnWidth + Target.Offset(0, 1).ColumnWidth
.ColumnWidth = Col
.WrapText = True
ligne = .RowHeight
Target.ColumnWidth = Col - Target.Offset(0, 1).ColumnWidth
Range(Target, Target.Offset(0, 1)).Merge
.RowHeight = ligne
End With
End Sub

Cordialement.
Daniel
"Philippe" a écrit dans le message de
news:
Bonjour,

J'ai des cellules fusionnées dans lesquelles des utilisateurs entrent du
texte
y compris des chr(10).
Dans une cellule normale si on a "alignement renvoyer à la ligne
automatiquement",
la hauteur de ligne se redimensionne pour afficher tout le contenu de la
cellule.

Ce n'est pas le cas avec des cellules fusionnées

On m'a suggéré (merci à lui de toutes façons) de placer ça dans le code de
la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
Target.WrapText = True
End Sub

Mais ça ne fonctionne pas pour la même raison.

J'ai besoin de redimensionner ces hauteurs de ligne à la validation de la
cellule (ou en cours de frappe, mais c'est pas utile).

******** Quelqu'un aurait-il une idée ? ********

J'ai une idée
qui me fait peur parce que je ne sais pas si c'est possible, ou par quel
bout le prendre :
- évaluer la chaine après validation (mais comment lancer ça ?)
- décider que je peux avoir tant de caractères par ligne
- compter le nombre de lignes = nombre de chr(10) + divisions des "lignes"
entre chr(10) par le nombre de caractères... qqch comme ça.
- ensuite, multiplier ma hauteur de ligne type par le nombre de lignes
ainsi
calculé
- et enfin changer la hauteur de la ligne concernée

***** Y-a-t-il plus simple ? *****

Si je fais comme indiqué :
Comment récupérer les coordonnées de la cellule responsable du changement
?
Puis je le limiter à certaines cellules de la feuille : ie comment
vérifier
que la cellule appartient à un range a8:a12 ?

Merci pour toutes vos suggestions,
Philippe