Voilà je ne connais la méthode la plus orthodoxe que celle-ci pour définir la largeur d’une colonne par rapport à celle d’un « Text Box »
Je profite du forum et de ta question pour lancer un appel !!!
Dans ma méthode je me base sur la position « Left » de la cellule qui est à droite de la destination et par tâtonnement arriver à la bonne largeur.
Ainsi la cellule prend la même forme que le « Text Box », car la fonction « ColumnWidth » prend pour base la largeur de la police employée pour effectuer une conversion.
Donc en gros je procède ainsi :
Larg = largeur du text Box
Point de départ « Left » de la colonne cible plus larg.
J’ajoute +1 à chaque tour pour que « Left » de la colonne à droite se mette en position, en ajustant la colonne cible par le beau « ColumnWidth »
'-------------------
Sub essai()
Application.ScreenUpdating = False
lig = 1 '--- ligne de destination
col = 3 '--- colonne de destination
esp = Cells(lig, col).ColumnWidth
dep = Cells(lig, col).Left
larg = ActiveSheet.Shapes("Text Box 1").Width
texte = ActiveSheet.Shapes("Text Box 1").TextFrame.Characters.Text
gtxt = ActiveSheet.Shapes("Text Box 1").TextFrame.Characters.Font.Size
'--- cellule de destination ------------------------------------------
'ici c'est "C1"
For largeur = esp To esp + 100
If (dep + larg) < Cells(lig, col + 1).Left Then Exit For
Cells(lig, col).ColumnWidth = largeur
Next
'----
Cells(lig, col).HorizontalAlignment = xlGeneral
Cells(lig, col).VerticalAlignment = xlTop
Cells(lig, col).WrapText = True
Cells(lig, col).Font.Size = gtxt
Cells(lig, col) = texte
Application.ScreenUpdating = True
End Sub