Excel VBA - Ouverture d'un User Form sur click droit à partir d'une plage Excel
cs_rbn
Messages postés18Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 5 novembre 2010
-
19 juin 2009 à 17:59
cs_rbn
Messages postés18Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 5 novembre 2010
-
22 juin 2009 à 20:49
Bonjour ;
Je souhaite ouvrir un User Form par un click droit sur une certaine plage de cellule Excel. Le code VBA ci-après (placé dans This Workbook) fonctionne correctement lorsque la plage est fixe et est déclarée suivant la syntaxe "L7:CH30" mais je n'est pas trouvé la bonne syntaxe pour définir la plage de cellule avec des variables (par exemple la syntaxe suivante "L7:Dercell" ne fonctionne pas, Dercell étant une variable de type Range).
Private Sub workbook_sheetbeforerightclick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh Is Worksheets("matrice") And Target.Count = 1 And Not Intersect(Target, Range("L7:CH30")) Is Nothing Then
Cancel = True
Load UF_action
UF_action.Show
Else: Cancel = False
End If
End Sub
cs_rbn
Messages postés18Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 5 novembre 2010 21 juin 2009 à 18:11
Bonjour,
Merci pour la réponse,
effectivement cela fonctionne mais j'ai toujours le problème pour convertir une variable de type range en type string.
J'ai dans un module le calcul de la plage de cellules concernées par cette fonction click droit => ouverture User Form, à savoir :
Dim Plagecells As Range
Set Plagecells = Range("B2").Resize(DerLigne, DerCol - 3)
Et la variable Plage_selection utilisée dans This Workbook comme préconisé précédemment
Comment faire le lien entre Plagecells (de type Range) et Plage_selection (de type string) ?
Merci encore pour votre réponse
cs_Joh76
Messages postés47Date d'inscriptiondimanche 16 mars 2008StatutMembreDernière intervention14 octobre 20093 21 juin 2009 à 19:30
Bonjour,
Je ne pense pas avoir bien compris ce que tu veux faire.
Mais si cela peut d'aider en écrivant:
Dim ZoneCells as String
ZoneCells=Range("A1").offset(1,1).adresslocal
ZoneCells doit valoir: "$B$2"
Et si tu ne veux pas des "$", utilise Replace pour remplacer les $ par du vide.
Comme Plagecells est du type Range tu devrais avoir la propriété AdressLocal.