Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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 06/06/2007, 11h51   #1
Membre du Club
 
Inscription : juin 2004
Messages : 118
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 118
Points : 40
Points : 40
Par défaut Remplacer CRTL+Z pour créer son propre UNDO

Salut !

J'ai créé un menu sous Word dans lequel je peux créer des tables (un peu comme le TABLE -> INSERT -> TABLE de Word mais avec plus d'options).
Une fois les options spécifiées, c'est une macro VBA qui s'occupe de créer le tableau.
Mon probleme :
Lorsque je souhaite annuler cette création de tableau, naturellement j'aurais envi de faire : CTRL+Z sauf qu'ici, ca me supprime simplement la dernier action VBA...

Comment pourrais-je procéder ?

Par exemple, j'ai essayé de capturer la commande (avec un enregistrement de macro) : CRTL+Z pour plus tard la remplacer avec du code spécifique. Mais lors d'une capture, la commande UNDO est impossible (grisée)...

Si j'arrive a capturer le signal CTRL+Z, je pense pouvoir faire quelques chose en hierarchisant les actions avec différents types d'actions (atomique ou non...)
Thomus38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 12h10   #2
Membre du Club
 
Inscription : février 2007
Messages : 71
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2007
Messages : 71
Points : 62
Points : 62
Le Ctrl Z n'est pas une action spécifique à Word, tu peux l'utiliser dans plein de cas autre que dans word.

C'est pour ça que l'enregistrement de macro n'a rien envoyé.

J'ai 2 idées à te proposer

- la 1ere, utiliser l'api "PeekMessage" à l'aide d'une boucle elle permet d'intercepter les messages envoyé au processeur (si je ne me trompe pas) et donc dans ce cas là, le Ctrl Z
Code :
1
2
3
4
5
6
7
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" ( _
    lpMsg As Msg, _
    ByVal hwnd As Long, _
    ByVal wMsgFilterMin As Long, _
    ByVal wMsgFilterMax As Long, _
    ByVal wRemoveMsg As Long _
) As Long
- 2 eme (surement la plus simple, mais ça fait un peu bidouille), il te suffirai de faire en sorte que les dernieres actions VBA sur le tableau soit :
une sélection globale du tableau
copier le tableau
le supprimer
et le coller

comme ça, lorsque tu feras ton ctrl Z.... ça le supprimera
Speedrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 12h22   #3
Membre du Club
 
Inscription : juin 2004
Messages : 118
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 118
Points : 40
Points : 40
LOL !
Effectivement, c'est de la bidouille mais ca doit marcher !
Cependant, il serait interessant de savoir si la premiere solution marche car elle est plus interessante...
Je vais regarder..

Thanks !
Thomus38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h58.


 
 
 
 
Partenaires

Hébergement Web