Excel VBA - Ouverture d'un User Form sur click droit à partir d'une plage Excel

cs_rbn Messages postés 18 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 5 novembre 2010 - 19 juin 2009 à 17:59
cs_rbn Messages postés 18 Date d'inscription jeudi 1 mai 2008 Statut Membre Derniè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

Merci à l'avance pour votre aide

4 réponses

cs_Joh76 Messages postés 47 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 14 octobre 2009 3
19 juin 2009 à 23:38
Bonjour,
Déclare ta variable dans le type string
Dim Dercell as string
Dercell="L7:CH30"
range(Dercell)
Bonne continuation
0
cs_rbn Messages postés 18 Date d'inscription jeudi 1 mai 2008 Statut Membre Derniè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

Cordialement
0
cs_Joh76 Messages postés 47 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 14 octobre 2009 3
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.

Cordialement
0
cs_rbn Messages postés 18 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 5 novembre 2010
22 juin 2009 à 20:49
Bonjour,

Merci pour la réponse qui m'a bien aidé. J'ai utilisé les 2 conseils (.adresslocal et replace) avec la fonction resize. Cela fonctionne parfaitement

Merci encore pour ton aide et aussi pour ta réactivité

Cordialement
0
Rejoignez-nous