Jean aime utiliser le paramètre « Centrer sur la sélection » dans l’onglet Alignement de la boîte de dialogue Format des cellules pour centrer les informations sur les cellules non fusionnées. Elle se demande cependant s’il existe un moyen d’utiliser le contenu d’une cellule pour contrôler le nombre de cellules où le centrage se produit. Par exemple, si elle a le numéro 4 dans la cellule A1, alors le centrage serait sur 4 cellules (B1: E1), mais si elle le change en 5, le centrage serait sur 5 cellules (B1: F1).

La seule façon d’y parvenir est d’utiliser une macro. Étant donné que vous pouvez modifier la valeur dans la cellule A1, la macro doit s’exécuter chaque fois que vous apportez une modification au classeur, puis déterminez si cette modification a été effectuée dans la cellule A1 ou non. Si tel est le cas, il peut effectuer l’ajustement des cellules de la ligne.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sWidth As String     Dim sStartCell As String     Dim iWidth As Integer     Dim r As Range     Dim sTemp As String

sWidth = "$A$1"

sStartCell = "$B$1"



If Target.Address = sWidth Then         iWidth = Range(sWidth).Value         If iWidth > 1 Then             sTemp = Right(sStartCell, 1)

sTemp = sTemp & ":" & sTemp             Range(sTemp).HorizontalAlignment = xlGeneral

Set r = Range(sStartCell)

Set r = r.Resize(1, iWidth)

r.HorizontalAlignment = xlCenterAcrossSelection         End If     End If End Sub

Notez que cette macro est placée dans la feuille de code pour la feuille de calcul que vous souhaitez affecter. Chaque fois qu’une modification est apportée dans la feuille de calcul, la macro s’exécute automatiquement. Pour que cela fonctionne pour vous, vous devez modifier les adresses affectées aux variables sWidth et sStartCell. sWidth est défini sur la cellule contenant le nombre de colonnes sur lesquelles vous souhaitez centrer. sStartCell est défini sur la première cellule à gauche de la plage où le centrage doit avoir lieu.

La macro saisit tout ce qui se trouve dans votre cellule sWidth et le place dans la variable iWidth. Si cette valeur est supérieure à 1, les changements de centrage ont lieu. (Cela n’a aucun sens de centrer sur une sélection de moins de 2 colonnes de large.) L’alignement de toutes les cellules est que la ligne est redéfinie sur général, puis une plage est définie qui est tout aussi large que vous l’avez spécifié, en commençant par au niveau de la cellule dans sStartCell. Pour cette plage, l’alignement est défini sur xlCenterAcrossSelection pour donner les résultats souhaités.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (4360) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.