OVH Cloud OVH Cloud

touche enter

14 réponses
Avatar
Michel HOLDERITH
Bonjour tout le monde.
J'ai une macro qui execute un code lorsque je double click dans une cellule.
elle me met un symbole a l'interieur, puis je fais un petit sendkey
"{enter}" pour que je ne me retrouve pas dans la cellule.
tout fonctionne, sauf que j'aurais bien voulu valider ma cellule autrement
que par un sendkey.
quel est le code de l'icone de validation en haut a gauche de la barre de
formule ?
car si je tape un symbole dans la barre du menu puis je click sur le petit
"v" qui est vert je valide ma cellule tout en restant sur cette meme
cellule...

Une idee ?

D'avance merci
@+
Michel.

4 réponses

1 2
Avatar
Alain CROS
Bonjour.

Essaye dans le module Thisworkbook
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
End Sub
Tu vérifie si Sh correspond a une de tes 10aine de feuilles pour lesquelles tu dois utiliser ta macro sinon exit sub.

Alain CROS.

En fait j'ai une 10aine de feuilles et il faudrait utiliser toujours la meme
macro, je voudrais eviter de copier/coller ma macro directement dans toutes
les feuilles, et les faire toutes pointer faire une meme et seule macro.
Est-ce possible ?
Si oui comment ? car en fait je me debrouille plutot pas mal (a mon niveau)
sauf que je n'ai jamais rien compris au passage de valeurs, genre comme
ci-dessus : (ByVal Target As Range, Cancel As Boolean)


Avatar
Michel HOLDERITH
Salut,
merci de ta reponse
@+
Michel.

"Alain CROS" wrote in message
news:
Bonjour.

Essaye dans le module Thisworkbook
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal
Target As Excel.Range, Cancel As Boolean)

End Sub
Tu vérifie si Sh correspond a une de tes 10aine de feuilles pour
lesquelles tu dois utiliser ta macro sinon exit sub.


Alain CROS.

En fait j'ai une 10aine de feuilles et il faudrait utiliser toujours la
meme


macro, je voudrais eviter de copier/coller ma macro directement dans
toutes


les feuilles, et les faire toutes pointer faire une meme et seule macro.
Est-ce possible ?
Si oui comment ? car en fait je me debrouille plutot pas mal (a mon
niveau)


sauf que je n'ai jamais rien compris au passage de valeurs, genre comme
ci-dessus : (ByVal Target As Range, Cancel As Boolean)






Avatar
Frédéric Sigonneau
Bonsoir,


ca marche et pas dans un module ?
En fait j'ai une 10aine de feuilles et il faudrait utiliser toujours la meme
macro, je voudrais eviter de copier/coller ma macro directement dans toutes
les feuilles, et les faire toutes pointer faire une meme et seule macro.
Est-ce possible ?


Pour répondre à la question telle que tu la poses, tu peux très bien écrire une
macro "générique" (utilisable dans n feuilles) dans un module standard puis la
réutiliser dans les procédures événementielles (de ton choix) des feuilles (de
ton choix également).
Pour l'utiliser dans la procédure Worksheet_BeforeDoubleClick, ta procédure doit
avoir le même nombre de paramètre que la procédure Worksheet_BeforeDoubleClick,
du moins autant que ceux que tu comptes en utiliser. Pour ce que tu veux faire,
les deux paramètres de Worksheet_BeforeDoubleClick sont à utiliser (la cellule
cliquée et la sortie du mode double clic pour éviter l'erreur générée par le
double clic sur une feuille protégée). Ta procédure va donc avoir deux
paramètres aussi : une cellule et un booléen. Par exemple :

Sub ProcGeneriqueAvecParams(Cell As Range, Fin As Boolean)
Cell.Parent.Unprotect
Cell.Value = "û"
Fin = True
Cell.Parent.Protect _
DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Ensuite, dans chaque feuille (ou dans l'événement
Workbook_SheetBeforeDoubleClick comme suggéré par Alain Cros), tu l'appelles
avec ce genre de syntaxe :

Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
ProcGeneriqueAvecParams Target, Cancel
End Sub

Voilà.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

Si oui comment ? car en fait je me debrouille plutot pas mal (a mon niveau)
sauf que je n'ai jamais rien compris au passage de valeurs, genre comme
ci-dessus : (ByVal Target As Range, Cancel As Boolean)
j'ai toujours mis en place des variables public pour contourner ce genre de
probleme.... je sais... je sais ce n'est pas bien, sauf que je n'ai jamais
eu trop le temps pour regarder ca, ce serait peut-etre le moment ? :)
Si tu pouvais me dire si il y a une solution a m'on petit probleme ca serait
sympa de ta part...
@+
Michel.

"AV" wrote in message
news:bnlec8$h94$
Et si tu te repenchais un peu plus sérieusement sur l'évènement
"BeforeDoubleClick" et Cancel=true ?
Du style :
Private Sub Worksheet_BeforeDoubleClick(ByVal zz As Range, Cancel As
Boolean)

ActiveSheet.Unprotect
zz = "z"
ActiveSheet.Protect
Cancel = True
End Sub

AV






Avatar
Michel HOLDERITH
Merci beaucoup pour toutes ces explications que je vais aussitot mettre en
pratique.... :)
@+
Michel.

"Frédéric Sigonneau" wrote in message
news:
Bonsoir,


ca marche et pas dans un module ?
En fait j'ai une 10aine de feuilles et il faudrait utiliser toujours la
meme


macro, je voudrais eviter de copier/coller ma macro directement dans
toutes


les feuilles, et les faire toutes pointer faire une meme et seule macro.
Est-ce possible ?


Pour répondre à la question telle que tu la poses, tu peux très bien
écrire une

macro "générique" (utilisable dans n feuilles) dans un module standard
puis la

réutiliser dans les procédures événementielles (de ton choix) des feuilles
(de

ton choix également).
Pour l'utiliser dans la procédure Worksheet_BeforeDoubleClick, ta
procédure doit

avoir le même nombre de paramètre que la procédure
Worksheet_BeforeDoubleClick,

du moins autant que ceux que tu comptes en utiliser. Pour ce que tu veux
faire,

les deux paramètres de Worksheet_BeforeDoubleClick sont à utiliser (la
cellule

cliquée et la sortie du mode double clic pour éviter l'erreur générée par
le

double clic sur une feuille protégée). Ta procédure va donc avoir deux
paramètres aussi : une cellule et un booléen. Par exemple :

Sub ProcGeneriqueAvecParams(Cell As Range, Fin As Boolean)
Cell.Parent.Unprotect
Cell.Value = "û"
Fin = True
Cell.Parent.Protect _
DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Ensuite, dans chaque feuille (ou dans l'événement
Workbook_SheetBeforeDoubleClick comme suggéré par Alain Cros), tu
l'appelles

avec ce genre de syntaxe :

Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
ProcGeneriqueAvecParams Target, Cancel
End Sub

Voilà.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

Si oui comment ? car en fait je me debrouille plutot pas mal (a mon
niveau)


sauf que je n'ai jamais rien compris au passage de valeurs, genre comme
ci-dessus : (ByVal Target As Range, Cancel As Boolean)
j'ai toujours mis en place des variables public pour contourner ce genre
de


probleme.... je sais... je sais ce n'est pas bien, sauf que je n'ai
jamais


eu trop le temps pour regarder ca, ce serait peut-etre le moment ? :)
Si tu pouvais me dire si il y a une solution a m'on petit probleme ca
serait


sympa de ta part...
@+
Michel.

"AV" wrote in message
news:bnlec8$h94$
Et si tu te repenchais un peu plus sérieusement sur l'évènement
"BeforeDoubleClick" et Cancel=true ?
Du style :
Private Sub Worksheet_BeforeDoubleClick(ByVal zz As Range, Cancel As
Boolean)

ActiveSheet.Unprotect
zz = "z"
ActiveSheet.Protect
Cancel = True
End Sub

AV










1 2