Rob a une zone de texte, dans une feuille de calcul, qui contient du texte copié à partir de Word.

Il veut savoir comment il peut redimensionner la zone de texte à l’aide d’une macro, afin qu’elle couvre une plage spécifique de cellules.

Vous pouvez aborder cette tâche de plusieurs manières. La première consiste à spécifier, dans la macro, les cellules exactement que vous souhaitez couvrir avec la zone de texte, puis à ajuster les propriétés de la zone de texte pour qu’elles correspondent aux caractéristiques des cellules que vous spécifiez.

Sub ResizeBox1()

Dim sTL As String     Dim sBR As String     Dim rng As Range

' Change top-left and bottom-right addresses as desired     sTL = "A1"

sBR = "M40"



' Ensure a text box is selected     If TypeName(Selection) <> "TextBox" Then         MsgBox "Text box not selected"

Exit Sub     End If

With Selection         Set rng = ActiveSheet.Range(sTL)

.Top = rng.Top         .Left = rng.Left         Set rng = ActiveSheet.Range(sBR)

.Width = rng.Left + rng.Width         .Height = rng.Top + rng.Height     End With     Set rng = Nothing End Sub

Pour utiliser la macro, modifiez l’adresse des cellules que vous souhaitez utiliser pour le coin supérieur gauche et inférieur droit de la zone de texte. Ensuite, sélectionnez la zone de texte et exécutez la macro.

Si vous préférez, vous pouvez utiliser une plage nommée pour spécifier la plage à couvrir par la zone de texte. La macro suivante s’attend à ce que la plage soit nommée RangeToCover. Lorsque vous sélectionnez la zone de texte et exécutez la macro, la zone de texte est redimensionnée pour correspondre à la taille de la plage.

Sub ResizeBox2()

Dim l_rRangeToCover As Range     Dim l_rLowerRight As Range

' Ensure a text box is selected     If TypeName(Selection) <> "TextBox" Then         MsgBox "Text box not selected"

Exit Sub     End If

' Get the range to cover     Set l_rRangeToCover = _       ActiveSheet.Range(Names("RangeToCover").RefersToRange.Value)



' Get its lower right cell     Set l_rLowerRight = _       l_rRangeToCover.Cells( _       l_rRangeToCover.Rows.Count, _       l_rRangeToCover.Columns.Count)



' Resize the text box     With Selection         .Left = l_rRangeToCover.Left         .Top = l_rRangeToCover.Top         .Width = l_rLowerRight.Left + l_rLowerRight.Width - .Left         .Height = l_rLowerRight.Top + l_rLowerRight.Height - .Top     End With End Sub

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (10185) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Resizing_a_Text_Box_in_a_Macro [Redimensionner une zone de texte dans une macro].