Empecher selection objet dans code

Bonjour,

J'ai un carré que j'ai transformé en bouton et j'ai mis un code pour qu'il soit rouge quand je l'active.

Par contre le code sélectionne le bouton et c'est assez disgracieux, savez vous quoi modifier pour pas avoir le .select la dessous ? :

ActiveSheet.Shapes.Range(Array("Rectangle 6")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent2
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.25
            .Transparency = 0
            .Solid
        End With

J'ai tenté d'enlever le SELECT et le SELECTION en mettant des points entre mais ca bogue...

Bonjour,

Qu'est-ce que tu appelles l'activer ?

Si aucune macro n'est affectée à ta forme que veux-tu qu'il fasse d'autre que se sélectionner, au clic !

En fait jai affecter la macro sur le carré

Il est devenu le bouton de lancement de la macro

Je désire qu'ils change de style quand je clic dessus. D'où ma demande car mon code est disgracieux à cause de ce sélect. Je veux simplement éliminer la sélection de l'objet pour changer les propriétés de couleur de celui ci

Pas bien compris !

Si tu lui affectes la macro qui le modifie, il ne se sélectionnes pas au clic !

Alors,

J'ai un carré bleu, j'y ai affecté une macro qui masque des colonnes et fait un filtre sur ma base.

Quand je clic dessus, la macro s'effectue correctement, me masque mes lignes. J'ai une boucle dans la macro et si je reclic sur le bouton les lignes se ré affichent.

J'ai entrer le code (celui dans mon premier message) dans la boucle, et il quand les lignes sont masquées, la couleur du bouton sur lequel je viens de cliquer passer au rouge. Lorsque je reclic dessus et qu'il me raffiche les lignes, il se remet en bleu.

Le problème est que lorsque je clic, la macro viens sélectionner le bouton sur lequel je viens de cliquer, car le code qui permet de le passer en rouge a été fait avec l'enregistreur de macro, aussi si j'ai envi de cliquer rapidement pour masquer mes lignes, puis les réafficher tout de suite, du fait que l'objet est sélectionné, je ne peut pas cliquer pour lancer la macro, je doit au préalable cliquer ailleurs, de plus si je touche au clavier j'édite le texte dans l'objet.

Ma demande est donc de pouvoir modifier mon code (celui du premier message) pour enlever le SELECT.


J'ai tenté ça :

ActiveSheet.Shapes.Range(Array("Rectangle 6")).ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2

Mais ca bogue

C'est que l'enregistreur a dû te fourrer des Select partout ! Faut les enlever tous !

L'est quand même bien pratique celui la c'est grace a lui que j'me suis blongé dans VBA.

Yen a pas tant que ca ici :

ActiveSheet.Shapes.Range(Array("Rectangle 6")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent2
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.25
            .Transparency = 0
            .Solid
        End With

Un suffit !

Tu devrais mettre la procédure complète.

Sub TO_DO()
'Permet de filtrer la colonne TO DO et d'afficher les lignes avec le mot TO DO dans la colonne AV du tableau

    Application.ScreenUpdating = False

    If Range("ay6").Value = "" Then

    Range("av:av").EntireColumn.Hidden = False 'afficher la colonne avec les TO DO
    Range("ay6").Value = "TO DO"
    ActiveSheet.Range("$A$8:$BF$226").AutoFilter Field:=48, Criteria1:="<>"  'filtrer, enleve les vides
    Range("av:av").EntireColumn.Hidden = True

        'met en rouge le bouton
        ActiveSheet.Shapes.Range(Array("Rectangle 6")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent2
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.25
            .Transparency = 0
            .Solid
        End With

    Else

    Range("av:av").EntireColumn.Hidden = False
    Range("ay6").Value = ""
    ActiveSheet.Range("$A$8:$BF$226").AutoFilter Field:=48 'Remise a zero du filtre
    Range("av:av").EntireColumn.Hidden = True

       'remet la couleur du bouton en bleu
        ActiveSheet.Shapes.Range(Array("Rectangle 6")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.25
            .Transparency = 0
            .Solid
        End With

    End If

End Sub

Je n'ai pas le temps de m'occuper de ton filtrage (et il vaudrait mieux que je vois de plus près avant...) mais voilà pour le bouton:

         [...]
        'met en rouge le bouton
        ActiveSheet.Shapes("Rectangle 6").Fill.ForeColor.RGB = RGB(149, 55, 53)
    Else
        [...]
         'remet la couleur du bouton en bleu
        ActiveSheet.Shapes("Rectangle 6").Fill.ForeColor.RGB = RGB(55, 96, 146)
    End If
End Sub

Cordialement.

edit : evidemment, ces 2 lignes remplacent chacune les 9 lignes de code qui préexistaient...

J'ai gardé mon

.ForeColor.ObjectThemeColor = msoThemeColorAccent2

et ca fonctionne parfaitement ! En fait le problème c'était le

 Range(Array( 

devant mon nom de rectangle !!

Merci beaucoup en tout cas

Le filtre te semblait chaotique ? Aussi fait avec l'enregistreur, ca marche très bien

Ce n'est pas parce que cela marche que c'est ce qu'il y a de mieux...

J'en sais quelque chose.

Je vais faire un sujet pour une demande plus complexe bientot car je m'arrache les cheveux avec mon bidouillage maison

En tout cas merci encore Maréchal !!!

Rechercher des sujets similaires à "empecher selection objet code"