Ajouter et mettre en forme une forme via une macro (Microsoft Excel)
Ron utilise souvent des formes (un ovale, en fait) pour mettre en évidence des éléments dans une feuille de calcul. Il ajoute et redimensionne la forme, puis il doit changer la couleur de la forme en rouge et supprimer toute couleur de remplissage afin qu’elle ne masque pas ce qu’il essaie réellement de mettre en évidence. Il exécute ces étapes assez souvent et ne doute pas que cela puisse être accéléré avec une macro, mais il ne sait pas comment s’y prendre.
Avant d’examiner des solutions basées sur des macros, vous voudrez peut-être en considérer certaines qui ne nécessitent pas de macros. Par exemple, si vous créez votre ovale (formaté comme vous le souhaitez) et que vous cliquez dessus avec le bouton droit de la souris, vous pouvez le définir comme forme par défaut. Cela peut accélérer l’ajout de la forme à votre classeur à l’avenir.
Si vous avez plusieurs formes, chacune d’une taille et d’une couleur différentes, vous souhaiterez peut-être simplement copier ces formes dans un classeur différent. Ce classeur peut être un « support » pour ces formes, afin que vous puissiez les recopier dans d’autres classeurs, si nécessaire. C’est un excellent moyen de créer votre propre galerie de formes standard pouvant être utilisées pendant des années.
Si vous décidez qu’une macro est la meilleure façon de procéder, il est relativement facile d’en utiliser une pour ajouter l’ovale. En voici une très simple:
Sub Custom_Oval1() ActiveSheet.Shapes.AddShape(msoShapeOval, 150, 150, _ 120, 60).Select Selection.ShapeRange.Fill.Visible = msoFalse With Selection.ShapeRange.Line .DashStyle = msoLineSolid .Weight = 3 .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 End With End Sub
Cela insère un ovale standard, avec la couleur, le remplissage et la transparence souhaités, à un seul endroit de la feuille de calcul. Lorsque cela est fait, la forme est toujours sélectionnée et vous pouvez ensuite faire glisser l’ovale là où vous le souhaitez et effectuer les ajustements de taille nécessaires.
Si vous préférez avoir l’ovale plus près de l’endroit où vous le souhaitez, vous pouvez utiliser une variante qui regarde la cellule active dans la feuille de calcul et place l’ovale autour de cette cellule, dimensionné à la hauteur et à la largeur de la cellule:
Sub Custom_Oval2() Dim lLeft As Long Dim lTop As Long Dim lWidth As Long Dim lHeight As Long lLeft = ActiveCell.Left - 5 lWidth = ActiveCell.Width + 5 lTop = ActiveCell.Top lHeight = ActiveCell.Height + 5 ActiveSheet.Shapes.AddShape(msoShapeOval, lLeft, _ lTop, lWidth, lHeight).Select Selection.ShapeRange.Fill.Visible = msoFalse With Selection.ShapeRange.Line .DashStyle = msoLineSolid .Weight = 3 .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 End With End Sub
Notez que cette variante de la macro détermine l’emplacement de la forme en fonction de l’emplacement de l’objet ActiveCell. Vous pouvez, si vous le souhaitez, changer toutes les occurrences d’ActiveCell en Sélection, ce qui permettrait à la taille de l’ovale de s’ajuster pour entourer votre sélection plutôt que simplement la cellule active. Notez également que les valeurs de gauche, de largeur et de hauteur sont légèrement ajustées pour donner un meilleur ajustement à l’ovale. Vous voudrez peut-être jouer avec différentes valeurs de réglage pour obtenir exactement le look que vous souhaitez.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (4631) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.