Programmer une macro pour effectuer un AutoFit avec des cellules fusionnées

Bonjour,

Je tente de trouver comment programmer une macro pour effectuer un AutoFit si j'ai des cellules fusionnées sur les lignes auxquelles je désire appliquer la macro.

Par exemple, j'ai un tableau de 6 colonnes (A, B, C, D, E-F fusionnées).

Ma formule standard (sans cellules fusionnées) est la suivante :

Rows("4:7").Select
Rows("4:7").EntireRow.AutoFit

J'ai fait quelques recherches et à ce jour, je n'ai pas réussi à programmer ma macro-commande.

Merci

Garou

10fichier-test.xlsm (15.94 Ko)

Bonjour Garou,

1) Quel intérêt de fusionner 2 colonnes pour mettre un statut, alors qu'il suffit d'élargir la colonne [E]

2) En mode manuel Excel le refuse, donc d'autant plus en VBA

image

Après, vous pouvez utiliser

Range("E4:E7").Value ="Le dossier est en cour d'analyse chez le fournisseur. Nous attendons un retour dans la semaine du 16 mars."

A+

Bonjour,

Ceci est un exemple simpliste d'un fichier volumineux dans lequel d'autres cellules sont fusionnées ailleurs dans l'onglet. Si ça n'avait été que cela, effectivement j'aurais élargie ma colonne :)

Merci

Garou

Bonsoir,

juste pour répondre à la demande avec un peu de bidouillage :

A vous de votre côté de faire les tests de hauteur d'une ligne et du nombre de caractères par lignes, pour vous aidez à trouver les valeurs vous pouvez passer en police "Consolas", comme cela chaque caractères occupe la même largeur... Comme je l'ai dit c'est du bidouillage, mais cela à le mérite de fonctionner.

Il existe peut-être une fonction pour faire ce que vous demandez, mais de mon côté également je sèche pour la trouver.

@ bientôt

LouReeD

Ou plus simplement en partant du principe qu'il n'y a qu'une ligne pour les cellules fusionnées :

Sub AjustementHauteur()
    ' on arrête la mise à jour de l'écran
    Application.ScrennUpdating = False
    ' on connait les colonnes fusionnées E et F
    ' on récupère la largeur de chaque colonne
    ' on défusionne E et F
    ' on élargie E à E+F
    ' on Autofit la ligne en cours ce qui va nous donner la hauteur de ligne nécessaire avec la largeur des deux colonnes
    ' on redimensionne E à son ancienne valeur
    ' on fusionne E et F
    Dim LE As Double, LF As Double, I As Long
    ' on récupère la largeur de chaque colonne
    LE = Range("E:E").ColumnWidth: LF = Range("F:F").ColumnWidth
    For I = 4 To 7
        ' on défusionne
        Range("E" & I).Resize(, 1).UnMerge
        ' on élargie E à E+F
        Range("E:E").ColumnWidth = LE + LF
        ' on Autofit la ligne en cours cela nous donne la hauteur nécessaire de ligne avec la largeur des deux colonnes
        Range("E" & I).Rows.AutoFit
        ' on redimensionne E à son ancienne valeur
        Range("E:E").ColumnWidth = LE
        ' on fusionne E et F
        Range("E" & I & ":F" & I).Merge
    Next I
End Sub

Il faudra bien évidemment soit adapter les lignes de codes avec les bonnes colonnes ou bien en les mettant en variables afin d'avoir un code transposable à différentes versions de tableau.

Le fichier test :

@ bientôt

LouReeD

C'est parfait .. je vais reprogrammer mes macros en fonction de tes instructions.

Un gros merci ...

Bonne journée,

Garou

Hello,

attention quand même à un détail : la largeur d'une colonne ne peux pas dépasser 255 (caractères soit 50.88cm), donc LE + LF < 255

Bonjour,

merci pour votre retour et remerciements !
En espérant que vous puissiez l'adapter à votre besoin. Sinon refaite un tour sur le forum...

@ bientôt

LouReeD

Rechercher des sujets similaires à "programmer macro effectuer autofit fusionnees"