Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Salut,
il y a AutoHotKey qui permet cela. Voici un script AHK qui permet de mapper CTRL+Y en ALT+e+é :
Code:
#SingleInstance Ignore ; empêche une nouvelle instance d'être lancée
#HotIf WinActive("Microsoft Visual Basic pour Applications") ; condition pour exécuter le raccourci
^y::
{
; MsgBox "Vous avez appuyé sur CTRL-Y"
Send "%eé" ; envoyer ALT+e+é -> Refaire
}
On le lance en double cliquant dessus dans l'explorateur de fichier. Il y a alors une icône verte avec un H dans le systemTray, avec un clic droit dessus , on peut faire différentes actions comme par exemple arrêter le script.
Le script vérifie si on a déjà une...
Bonjour
sujet au quel j'ai pensé pendant le dev du vba indenter interface
mais c'est normal qu'il n'y en ai pas
le ctrl+z gère tout les vbcomponents les fenêtres(modules tout type ) sans distinction
il n'y a donc pas de Redo possible sauf fonction perso donc pour undo aussi mais ça te limite a un module du VBE.codepane en l’occurrence celui qui est actif
En VBA, dans l’éditeur VBE, on dispose bien d’Annuler (Ctrl+Z), mais pas de Rétablir (Ctrl+Y) comme dans Word ou Excel.
Ce n’est pas un oubli : c’est une limitation structurelle du moteur du VBE (VBE6.DLL).
Techniquement parlant :
Le VBE implémente une pile d’annulation (Undo Stack).
Mais il n’existe pas de pile de rétablissement (Redo Stack) → dès que l’on fait Ctrl+Z, l’action est perdue, il n’y a rien à “réappliquer”.
Certaines idées sont envisageables add-ins comme
Rubberduck, gestion de snapshots de modules
hook clavier API…),
mais elles sont :
Lourdes à mettre en œuvre,
consommatrices en mémoire (sauvegarde des modules complets),
et surtout fragiles, car le VBE n’est pas prévu pour ça.
Donc il n’existe pas de vrai Ctrl+Y dans le VBE, et même les compléments les plus avancés (MZ-Tools, Rubberduck) ne l’ont pas intégré justement pour ces raisons. il faudrait enregistrer dans le stack le code entier du module à chaque touche tapée ca ferait beaucoup selon moi
En résumé :
Non possible nativement.
Possible en théorie avec des bricolages, mais trop instables et coûteux pour être utile en pratique. on ne fait pas de ctrl+z a tout bout de champ ni de redo d'ailleurs
Merci pour cette explication complète.
Mais quand on clique là-dessus, y a bien un process qui est déclenché ?! Il serait impossible d'y associer un raccourci ?
Alors je vais faire un raccourci qui dans un Complément, clique sur cette flèche.
Pour la position curseur, ce sera à la louche à moins de pouvoir identifier l'endroit mais je n'y crois pas trop.
application.vbe.commandbars("nom de la barre").controls("nom du control "ou son index).execute
tu peux te lister les commandbars du VBE et leur control et choper le id qui sait
VB:
Sub test()
Dim cmb As CommandBar, c&, i&, ctrl, n$
For Each cmb In Application.VBE.CommandBars
c = c + 1
i = 1
Cells(1, c) = cmb.Name
For Each ctrl In cmb.Controls
On Error Resume Next
n = ctrl.Caption
If Not Err Then i = i + 1: Cells(i, c) = ctrl.FaceId & "-" & n
On Error GoTo 0
Next
Next
ActiveSheet.UsedRange.EntireColumn.AutoFit
End Sub
quelque exemples que j'utilise avec les indexs
Code:
Sub test2()
'mise en arret(mode creation)
'Application.VBE.CommandBars(4).Controls(1).Execute
'ajouter un userform
'Application.VBE.CommandBars(7).Controls(1).Execute
'ajoute un module standard
'Application.VBE.CommandBars(7).Controls(2).Execute
'ajoute un module classe
'Application.VBE.CommandBars(7).Controls(3).Execute
'
End Sub
Ok, intéressant, merci.
Le problème c'est que tu ne peux exécuter ces instructions que d'une feuille et pas directement dans le VBE.
Y a des outils qui ajoutent des fonctionnalités au VBE. Je n'ai aucune idée de comment ils se banchent dans le VBE.
Je radote car j'ai posé la même question en janvier 2024 et @fanch55 avait donné une solution avec Alt+E+é.
Pour la réinitialisation j'utilise un geste de StrokePlus.
Mais je vais voir si avec un petit outil Windows qui génère des touches je peux y arriver.
Salut,
il y a AutoHotKey qui permet cela. Voici un script AHK qui permet de mapper CTRL+Y en ALT+e+é :
Code:
#SingleInstance Ignore ; empêche une nouvelle instance d'être lancée
#HotIf WinActive("Microsoft Visual Basic pour Applications") ; condition pour exécuter le raccourci
^y::
{
; MsgBox "Vous avez appuyé sur CTRL-Y"
Send "%eé" ; envoyer ALT+e+é -> Refaire
}
On le lance en double cliquant dessus dans l'explorateur de fichier. Il y a alors une icône verte avec un H dans le systemTray, avec un clic droit dessus , on peut faire différentes actions comme par exemple arrêter le script.
Le script vérifie si on a déjà une instance en cours et active le mapping si c'est la fenêtre VBE qui est active.
ALT+e+é ne fonctionne pas quand on est dans l'éditeur de formulaire car dans le menu Edition il n'y a plus de lettres soulignées pour Annuler ou Répéter.
Dans AutoHotKey , on ne peut pas non plus utiliser un MenuSelect pour sélectionner un élément de menu comme le Répéter car VBE n'a pas un menu "Standard".
Par contre on peut faire un clic souris à des coordonnées bien précises que l'on peut repérer grâce à l'outil Window Spy d'AutoHotKey qui indique en temps réel les coordonnées souris dans la fenêtre active ( coordonnées Ecran, fenêtre, client) :
La commande c'est ControlClick :
VB:
#SingleInstance Ignore ; empêche une nouvelle instance d'être lancée
#HotIf WinActive("Microsoft Visual Basic pour Applications") ; condition pour exécuter le raccourci
^y::
{
ControlClick "x222 y34" ; coordonnées Client du bouton Refaire
; MsgBox "Vous avez appuyé sur CTRL-Y"
;Send "%eé" ; envoyer ALT+e+é -> Refaire
}
Oui j'ai vu ça dans la doc et j'ai supprimé le Post où je disais que ça ne fonctionnait pas.
Edit: j'ai créé un raccourci du script et l'ai placé dans:
C:\Users\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\VBE Redo.ahk.lnk
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD