Combinaison de touche pour activation d'un Control dans un USF

olivepao

XLDnaute Occasionnel
Bonsoir le forum :)

J'ai un petit problème avec une combinaison de touche qui servira à activer une page d'un USF multipage.

Dans une feuille, je connais le code

Application.OnKey "^%{t}", "Ma_Macro"

qui me permet d'activer Ma_Macro quand j'appuye sur ALT+CTRL+t

Maintenant je désire faire la même chose mais dans un UserForm MultiPage. Je veux faire apparaitre la Page 2 en appuyant sur les touches ALT+CTRL+t.

J'ai essayé l'adaptation suivante sans succès


Code:
Private Sub UserForm_Initialize()
Me.MultiPage1.Pages("Page2").Visible = False
...
End Sub

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Application.OnKey = "^%{t}" Then
    Me.MultiPage1Pages("Page2").Visible = True
End If
End Sub

Private Sub BoutonQuitter_Click()
Unload UserForm1
UserForm1.Hide
End Sub

J'ai fait également des recherches sur la toile mais sans succès.

Un grand merci d'avance à ceux qui pourront me donner m'aider.

A++
 

pacoako

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF

Bonsoir le forum :)QUOTE]

Saluut!

j'ai une petite piste pour toi malgré que l'évenement keypress ne semble pas fonctionner par chez nous ton code devrait ressembler à ceci

Code:
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If Application.OnKey = "{F1}" Then
    Me.MultiPage1.Value = 0
End If

If Application.OnKey = "{F2}" Then
    Me.MultiPage1.Value = 1
End If

End Sub

Bonne soirée !
 

olivepao

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF

Hello pacoako:) hello le forum :)

J'ai esssayé ton code, malheureusement, il ne fonctionne pas.

J'ai fais l'adaptation suivante

Code:
...

If Application.OnKey = "{F2}" Then
    Me.MultiPage1Pages("Page3").Visible = True
End If

...

Là aussi, il ne se passe rien, même si je fais un "clic" sur mon USF avant de faire F2.

Je continue de chercher (depuis 18h30) mais tjs sans succès.

A++
 

pacoako

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF


Rebonsoir!

En fait ça fonctionne lorsque tu ajoute ce code dans un commandbutton par exemple..
essaie ceci tu veras..

Code:
Sub CommandButton1_Click

Me.Multipage1.value = 0

End Sub

Sub CommandButton2_Click

Me.Multipage1.value = 1

End Sub

Il y a p-e un problème avec ton Keypress.. car moi aussi ça ne fonctionnait pas de mon côté.. je ne suis pas trop familier avec les keypress malheureusement :p

Bonne chance =)
 

olivepao

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF

Re pacoako :) re le forum :)

Je vais essayer ! Merci de ton complément d'info


Je désire que cela se fasse par une combinaison de touiche car je ne veux pas que certaines pages du USF soient accessibles à tout le monde. Ta soluce est intéressante mais pas adaptée à mon programme.

A++
 

pacoako

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF

Re pacoako :) re le forum :)

Je vais essayer ! Merci de ton complément d'info


Je désire que cela se fasse par une combinaison de touiche car je ne veux pas que certaines pages du USF soient accessibles à tout le monde. Ta soluce est intéressante mais pas adaptée à mon programme.

A++


Wohoo! J'ai trouvé =)

Code:
Private Sub MultiPage1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)


If KeyAscii = 116 Then '116 correspond à T
Me.MultiPage1.Value = 1
End If

If KeyAscii = 115 Then '115 correspond à S
Me.MultiPage1.Value = 0
End If

End Sub

La meilleure façon que j'ai trouvé pour savoir quel nombre renvoyait la touche que j'appuyait était en ajoutant un STOP juste avant End Sub puis de passer ma souris juste au dessus de la variable KeyAscii pour voir quelle valeur elle avait prit...

À noter que j'ai mit l'evenement sur ton Multipage1 et non pas sur le userform

A +!
 

olivepao

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF

Re pacoako :) re le forum :)

Merci d'avoir veillé si tard et merci de ta proposition.

En effet le focus sur le USF ne permet pas d'agir sur le MultiPage1

Ta proposition ne fonctionne pas tout-à-fait et j'ai dû faire une petite modification pour que cela fonctionne.

Code:
Private Sub MultiPage1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 116 Then '116 correspond à t
    [COLOR="Red"]Me.MultiPage1.Pages("Page3").Visible = True[/COLOR]
End If
If KeyAscii = 115 Then '115 correspond à s
    [COLOR="red"]Me.MultiPage1.Pages("Page3").Visible = False[/COLOR]
End If
End Sub

J'ai cherché à récupérer la valeur de ALT+CTRL+t mais je n'ai pas reçu de valeur en retour.

Aurais-tu une petite idée du comment-fait-on pour récupérer la valeur ascii d'une combinaison de touche ?

J'ai fait une petite "amélioration" à mon fichier. Je le mets en pièce-jointe.

A++
 

Pièces jointes

  • USF-Démo MultiPage Cachée.xls
    40.5 KB · Affichages: 76

pacoako

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF

Re pacoako :) re le forum :)


A++


Rebonjour Sir!

Heureux de voir que tu as pu adapter le code à ton aise, et je trouve ça étrange que mon code ne fonctionnait pas pour toi mais bon, tant que ça marche en! =)

Je crois que pour la combinaison de touche, tu dois passer par un KeyDown

Tu peux écrire KeyDown ou KeyUp dans ton code et faire F1 lorsque ton curseur est sur le mot et tu auras l'aide pour cette fonction... je vais essayer de te concocter un ptit bout de code si j'ai un peu de temps aujourd'hui.. A ++
 

olivepao

XLDnaute Occasionnel
Re : Combinaison de touche pour activation d'un Control dans un USF

Rere pacoako :) Rere aussi le forum :)

Merci pacoako.

Un début de soluce peut-être . . .

. . .

If KeyAscii = 20 Then ' <-- 20 correspond à CTRL+t

. . .

If KeyAscii = 19 Then ' <-- 19 correspond à CTRL+s

. . .


A++
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha