Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2011, 16h26   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Par défaut Raccourci clavier pour UserForm

Bonjour
Je cherche à créer des raccourci clavier exemple (Alt +y) pour un UserForm,j'ai fait ceci

Code :
1
2
3
Public Sub Workbook_Open()
Application.OnKey "%y", "essai"
End Sub
que j'ai mis dans ThisWorbook
et cela que j'ai mis dans un module

Code :
1
2
3
4
Public Sub essai()
MsgBox " ca marche"
 
End Sub
Cela fonctionne très bien pour feuil mais pas pour un UserForm

En fait ce que je cherche, c'est faire fonctionner cette toupie qui se trouve dans un UserForm ,par un raccourci clavier

Code :
1
2
3
4
5
6
7
8
9
Private Sub PointRouge_SpinDown()       'PointRouge -1
If PointRouge.Caption = 0 Then Exit Sub
 PointRouge.Caption = PointRouge.Caption - 1
End Sub
Private Sub PointRouge_SpinUp()         'PointRouge +1
   If PointRouge.Caption < 9 Then
   PointRouge.Caption = PointRouge.Caption + 1
   End If
End Sub
merci
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h42   #2
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Peut-être comme cela (j'ai supposé que ton userform s'appelle usf et que c'est la touche 'bas' qui est pressée...à adapter donc):

Code :
1
2
3
4
5
Private Sub usf_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 
If KeyCode = vbKeyDown Then Call PointRouge_SpinDown()
 
End Sub
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 21h03   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Merci Sclarckone
Je viens d'essayer cela ne fonctionne pas.
J'ai mis ce code dans le module Thisworbook,je l'ai mis dans le code du formulaire
j'ai mis un point d'arrêt ,il n'y a jamais de passage par ce point.
Franc83
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h15   #4
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Je le mettrais plutôt dans le module du formulaire, parce que tu n'en as besoin que quand le formulaire s'affiche. D'ailleurs je ne sais pas quelle est la portée d'un évènement d'un userform mais il serait logique qu'elle soit limitée au userform (si un évènement survient au niveau du userform c'est que ce dernier est forcément chargé...).
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 20h56   #5
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 668
Points : 7 668
Bonjour à tous,

Sclarckone,
Citation:
Envoyé par Sclarckone Voir le message
Peut-être comme cela (j'ai supposé que ton userform s'appelle usf)
En VBA, les procédures événementielles liées à un userform sont toujours préfixées UserForm_ quel que soit son nom.
La bonne syntaxe est donc:
Code :
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/09/2011, 09h05   #6
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Merci
Il me semble que c'est du VBA access, je suis dans le forum EXEL ,et j'utilise VBA EXEL 2007, par contre vous avez peu être la solution,
merci d'avance
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 10h04   #7
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Absolument pas! De toute façon il n'y a pas de VBA Excel et Access. Il y a VBA et des bibliothèques spécifiques à Access, Excel, Word...
Dans ce cas en plus, les 'userform' appartiennent à la bibliothèque MSForms qui est différente des bibliothèques Access et Excel.
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 10h07   #8
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Citation:
Envoyé par franc83 Voir le message
Merci
Il me semble que c'est du VBA access,
Sur quels critères ?

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 08h29   #9
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Autant pour moi
J'ai mis ce code dans le code du formulaire mais cela ne fonctionne pas, j'ai mis un point d'arrêt il n'y a pas de passage par ce point.
J'ai fait une recherche dans l'aide , la commande keyCode il connait pas .
merci
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 08h51   #10
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Moi pas bien comprendre style télégraphique

de plus, formulaire = USF ? formulaire = terme ambigu à proscrire sous Excel, on fait référence à quoi ?
  • les formulaires de feuille Excel
  • le boutons de barre outils "formulaire"
  • les USF appelés formulaires à certains moments en VBA
    Citation:
    Procédure : créer un formulaire utilisateur

    Pour créer une boîte de dialogue personnalisée, vous devez créer un objet UserForm. Pour créer un objet UserForm, cliquez dans le menu Insertion sur UserForm dans Visual Basic Editor.

Sinon s'il s'agit lors de la sélection d'une cellule de déclencher une série d'instructions dépendantes d'un bouton cliqué parmis un groupe de deux, il faut, par exemple :
  • Utiliser le SelectionChange de la feuille en filtrant les target voulues
  • Alimenter via tes boutons une variable drapeau (Boolean)
  • mettre dans le SelectionChange un select case qui donnera les instructions à suivre selon le boolean.

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 09h07   #11
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

A priori "UserForm_KeyDown" n'est pas exécuté quand il y a des contrôles sur le formulaire. Teste ceci sur un formulaire vierge :
Code :
1
2
3
4
5
6
 
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 
    MsgBox KeyCode
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h31   #12
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Citation:
Envoyé par Theze Voir le message
A priori "UserForm_KeyDown" n'est pas exécuté quand il y a des contrôles sur le formulaire.
C'est vrai que je n'y avais pas pensé...ça doit dépendre de quel contrôle a le focus, non? Et du coup l'évènement doit être récupéré par le contrôle qui a le focus:

Code :
Private Sub nom_du_controle_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Une solution peut consister à définir une procédure de portée publique qui gère l'évènement et d'appeler cette procédure depuis chaque contrôle susceptible d'avoir le focus sur l'évènement 'KeyDown'.
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 13h27   #13
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour

oui effectivement le problème c'est que tu n'a pas forcement le focus sur le userform mais sur un des contrôles de l'userform

la solution c'est mettre la collection des contrôles y compris le userform dans une classe gérant les évènement

je me suis servi d'une chose similaire dans ma dernière version de l'effet mouse in et out dans les contributions tu pourrais te servir de cette classe
pour élaborer la tienne

regarde dans ma signature en bas de mon message tu a le lien


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 18h50   #14
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Merci Patricktoulon

Je vais regarder tout ça
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 22h04   #15
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
J'ai des progrès à faire c'est pas de mon niveau ,mais je vais m'y atteler.
je fermerai la discutions un peu plus tard si quelqu'un veux ajouter un commentaire .
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h23.


 
 
 
 
Partenaires

Hébergement Web