Fermeture onglet - Workheet Deactivate

Bonjour,

Je travaille sur un projet où j'insère des formes sur un plan pour localiser des ouvertures de portes.

En quittant l'onglet contenant les formes, l'èvenement ci-après change la couleur de toutes les formes si elles ne sont pas de couleur identique :

Private Sub Worksheet_Deactivate()

With Worksheets("feuil2")

If .Shapes.Range(Array("Oval 1", "Oval 3", "Oval 9")).ShapeStyle <> msoShapeStylePreset33 Then

.Shapes.Range(Array("Oval 1", "Oval 3", "Oval 9")).ShapeStyle = msoShapeStylePreset33

End If

End With

Call Unselectshapes

End Sub

J'aurais souhaité utilisé cette ligne de commande : ActiveSheet.DrawingObjects.Select pour englober toutes les formes, mais l'activesheet prend comme référence le nouvel onglet sélectionné.

Dans le Worksheet Deactivate, est-il possible de remplacer la sélection nominative de formes par une autre qui prendrait en compte toutes les formes de la feuille?

Merci pour votre aide.


Dans la feuille deux, j'ai omis de retirer les commandes superflues...

2pseudolink.xlsm (19.75 Ko)

Bonjour,

Une procédure évènementielle ne prend place que dans une module d'objet.

Dans un tel module, l'objet auquel il est dédié répond au mot-clé : Me.

Pas d'erreur possible sur l'objet : dans le module Feuil2, Me c'est l'objet Feuil2 et ce ne peut être autre chose.

D'autre part, s'affranchir de la sélection, dès lors que l'on peut s'en passer...

Private Sub Worksheet_Deactivate()
    Dim shp As Shape
    For Each shp In Me.Shapes
        shp.ShapeStyle = msoShapeStylePreset33
    Next shp
End Sub

Cordialement.

Je te remercie pour ta réponse et ta proposition.

C'est un réel plaisir d'avoir en sus d'une proposition, une explication précise.

Bonne journée.

Rechercher des sujets similaires à "fermeture onglet workheet deactivate"