Médiaforma

VBA Excel – Travailler avec des sélections

Partagez cet article sur vos réseaux

La méthode Range() cible une cellule ou une plage de cellules. Dans un article précédent, vous avez appris à modifier le contenu de cette ou de ces cellules via la propriété Value.

Si vous voulez ne modifier qu’une des cellules sélectionnées, vous devez au préalable l’activer avec la méthode Activate et lui affecter une valeur avec ActiveCell.Value. Par exemple, ces instructions sélectionnent la plage A2:C5, activent la cellule B4, affectent la valeur 10 aux cellules sélectionnées et la valeur 20 à la cellule active :

Range("A2:C5").Select

Range("B4").Activate

Selection.Value = 10

ActiveCell.Value = 20

Voici le résultat de ces instructions :

Sur la plage de cellules sélectionnée ou sur la cellule active, vous pouvez modifier (entre autres) :

  • La couleur d’écriture avec Color
  • La couleur d’arrière-plan avec Color
  • L’alignement horizontal avec HorizontalAlignment
  • La police de caractères avec Name
  • Les attributs gras et italique en affectant la valeur True aux propriétés Bold et Font.Italic

Voici quelques exemples de code :

Range("A2:C5").Select 'Sélection de la plage A2:C5

Selection.Interior.Color = RGB(255, 0, 0) ' Arrière-plan rouge sur la sélection

Selection.HorizontalAlignment = xlCenter 'Centrage horizontal de la sélection

Selection.Font.Name = "Courier" ' Police Courier sur la sélection

Selection.Font.Bold = True 'Sélection en gras

Selection.Font.Italic = True 'Sélection en italique

Toutes ces instructions fonctionneraient également sur la cellule active :

Range("B5").Activate 'Sélection de la cellule B5

ActiveCell.Interior.Color = RGB(255, 0, 0) 'Arrière-plan de la cellule active

ActiveCell.HorizontalAlignment = xlLeft 'Alignement de la cellule active

ActiveCell.Font.Name = "Algerian" ' Police de la cellule active

ActiveCell.Font.Bold = True ' Cellule active en gras

ActiveCell.Font.Italic = True ' Cellule active en italique

Pour éviter d’avoir à répéter Selection ou ActiveCell, vous pourriez factoriser ces deux objets.

Ce qui donnerait avec Selection :

Range("A2:C5").Select

With Selection

  .Interior.Color = RGB(255, 0, 0)

  .HorizontalAlignment = xlCenter

  .Font.Name = "Courier"

  .Font.Bold = True

  .Font.Italic = True

End With

Et avec ActiveCell :

Range("B5").Activate

With ActiveCell

  .Interior.Color = RGB(0, 255, 0)

  .HorizontalAlignment = xlLeft

  .Font.Name = "Algerian"

  .Font.Bold = True

  .Font.Italic = True

End With
 
Commentaires

Bonjour,
Je suis sous Office 365 (Microsoft 365 depuis très peu de temps) option Famille.
S’il y a 6 mois, le procédé décrit ici était valable, depuis peu de temps, le mot clé Selection est à peu près entièrement proscrit en VBA. Votre ligne « With Selection » déclenche à l’exécution (pas à la compilation) une erreur chez moi : « Erreur de compilation Fonction ou variable non définie.
Il faut donc modifier la procédure comme suit :
Dim Selection as Range
Set Selection = Range(« A2:C5 »)
With Selection
Etc …

Je code depuis plus d’un an sur 365, je n’ai pas de problème avec Selection. Je l’utilise pour des modifications d’apparence, des copier-coller…

Trackbacks for this post

Laissez un commentaire