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
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 …