XL 2010 Pouvoir déclencher une macro si et seulement si on a sélectionné certaines cellules

Magic_Doctor

XLDnaute Barbatruc
Bonsoir.

Je voudrais déclencher une macro si et seulement si j’ai sélectionné une cellule d’une colonne donnée.
Je m’explique. J’ai nommé une colonne qui contient 4 cellules « Col_DMS ».
Si je sélectionne l’une quelconque de ces 4 cellules et qu’ensuite je clique sur un CommandButton, une macro se déclenche. Mais cette macro ne peut se déclencher que si j’ai sélectionné l’une de ces 4 cellules. Dans le cas contraire (n’importe quelle autre cellule de la feuille) --> Exit Sub.

Comment s’y prendre ?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @Magic_Doctor , le Forum

En supposant la range nommée est en "F4:F8" que j'ai donc nommée "Col_DMS" ...

VB:
Option Explicit

Private Sub CommandButton1_Click()
Dim C As Range

Set C = Application.Intersect(Range(ActiveCell.Address), Range("Col_DMS"))

If C Is Nothing Then
 MsgBox "Selection en " & ActiveCell.Address & vbCrLf & "Pas de main, pas de macro  !!!!"
Else
 MsgBox "La macro va s'exécuter car selection sur " & C.Address
End If

End Sub

1594016831572.png

1594016846877.png


Bonne journée
@+Thierry
 

Magic_Doctor

XLDnaute Barbatruc
J'ai fait ceci :
Module de feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    '"Bouton_Copy" est le CommandButton qui déclenche la macro
    ActiveSheet.Shapes("Bouton_Copy").Visible = False
    
    If Not Intersect(Target, [Col_DMS]) Is Nothing Then
        ActiveSheet.Shapes("Bouton_Copy").Visible = True
    End If
    
End Sub
Et dans la macro du CommandButton "Bouton_Copy" :
VB:
Sub CopyCoord()

     If Not Intersect(Selection, [Col_DMS]) Is Nothing Then
        blablabla
     End If
            
End Sub
 

Magic_Doctor

XLDnaute Barbatruc
Bonjour _Thierry,

Merci pour ta réponse.
Apparemment ce que j'ai fait marche, et en plus dès que je suis en dehors de cette colonne, le bouton disparaît. Comme ça c'est réglé, on ne peut l'utiliser que si l'on est sur l'une des 4 cellules.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Magic_Doctor, _Thierry,

C'est quand même plus simple :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    '"Bouton_Copy" est le CommandButton qui déclenche la macro
    Shapes("Bouton_Copy").Visible = Not Intersect(Target, [Col_DMS]) Is Nothing
    
End Sub
et si le bouton est un CommandButton ActiveX :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    '"Bouton_Copy" est le CommandButton qui déclenche la macro
    Bouton_Copy.Visible = Not Intersect(Target, [Col_DMS]) Is Nothing
    
End Sub
A+
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 812
dernier inscrit
abdouami