ouvrir un userform sur un clic

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+
 
G

Gilles

Guest
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+
 
G

Gilles

Guest
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...
:eek:
 

myDearFriend!

XLDnaute Barbatruc
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,
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 771
Membres
103 662
dernier inscrit
rterterert