ouvrir un userform sur un clic

  • Initiateur de la discussion Initiateur de la discussion Gilles
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

Gilles

Guest
Bonsoir,
je cherche à ouvrir un userform par un clic droit sur des plages de cellules.
J'avais trouvé ce genre de macro idéal mais...
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Application.Intersect(Target, Range('E9:E20,G9:G20')) Is Nothing Then Exit Sub
UserForm2.Show 0
Cancel = True
End Sub

le pb, c'est que je suis limité à 30 plages de cellules, et il m'en faut 31 plages!!
Merci à l'avance pour toutes vos réponses
A+
 
Merci,
quand je mets cela, je suis limité à 30

If Application.Intersect(Target, Range('E9:E20,G9:G20,I9:I20,K9:K20,M9:M20,O9:O20,Q9:Q20,S9:S20,U9:U20,W9:W20,Y9:Y20,AA9:AA20,AC9:AC20,AE9:AE20,AG9:AG20,AI9:AI20,AK9:AK20,AM9:AM20,AO9:AO20,AQ9:AQ20,jusqu'a 30 plages')) Is Nothing Then Exit Sub

A+
 
j'ai essayé cela mais cela ne fonctionne pas

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean, c As Range)
For Each c In Range('E9:E20,G9:G20,I9:I20,K9:K20,M9:M20,O9:O20,Q9:Q20,S9:S20,U9:U20,W9:W20,Y9:Y20,AA9:AA20,AC9:AC20,AE9:AE20,AG9:AG20,AI9:AI20,AK9:AK20,AM9:AM20,AO9:AO20,AQ9:AQ20,AS9:AS20,AU9:AU20,AW9:AW20,AY9:AY20,BA9:BA20,BC9:BC20,BE9:BE20,BG9:BG20,BI9:BI20,BK9:BK20')
If Application.Intersect(Target, c) Is Nothing Then Exit Sub
UserForm2.Show 0
Cancel = True
Next c
End Sub
Il n'aime pas la variable c en Range, mais même si je l'enlève, cela est pareil
J'ai beaucoup de mal, je débute...
😱
 
Bonsoir Gilles, justine,

Si j'ai bien compris la question :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim Plage As Range
Dim C As Byte
      Set Plage = Range('E9:E20')
      For C = 7 To 63 Step 2
            Set Plage = Union(Plage, Range(Cells(9, C), Cells(20, C)))
      Next C
      If Application.Intersect(Target, Plage) Is Nothing Then Exit Sub
      Cancel = True
      UserForm2.Show 0
End Sub
Même si ça devrait bien fonctionner comme ça, je te conseillerais tout de même de déclarer la variable 'Plage' en variable Public et de définir sa composition une fois pour toutes à l'ouverture du classeur (dans Workbook_Open() par exemple). Cela éviterait ainsi le parcours de cette boucle à chaque clic droit dans la feuille...

Cordialement,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour