XL 2016 Liste des mots-clés utilisés par Excel dans l'Undo Stack

Dudu2

XLDnaute Barbatruc
Bonjour,
Quelqu'un aurait-il un moyen de trouver dans Excel VBA les références des mots-clés utilisés par Excel dans sa pile des Undo, mots qu'on peut afficher avec par exemple:
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim UndoName As String
  
    UndoName = Application.CommandBars("Standard").FindControl(ID:=128).Caption
    MsgBox Application.CommandBars("Standard").Controls(UndoName).List(1)
End Sub

2020-11-03_171733.jpg
2020-11-03_171751.jpg
2020-11-03_171812.jpg
2020-11-03_171827.jpg
etc...

Ces mots sont en "Local language" et c'est la raison pour laquelle j'aimerais plutôt les trouver par une référence codée.

Merci par avance.
 

Dudu2

XLDnaute Barbatruc
La question que j'ai posée est si absconse ?
Quelqu'un aurait-il un moyen de trouver dans Excel VBA les références des mots-clés utilisés par Excel dans sa pile des Undo, mots qu'on peut afficher avec par exemple:
(Code VBA) + (Screenshots)
Ces mots sont en "Local language" et c'est la raison pour laquelle j'aimerais plutôt les trouver par une référence codée.
 

patricktoulon

XLDnaute Barbatruc
re
je répète donc la liste contient des raccourci a un état pas une commande
ces raccourci sont Evidemment créé avec un mot ou phrase représentative de l'action faite lors de la mémo dans le stack

quand on lit << saisie de Dudu2 dans A1>> et que l'on clique dessus on annule pas la saisie on annule tout ce qui a été fait jusque là y compris l'action elle même
en fait UNDO ramène le fichier a un état précédent(ça devrait te mettre la puce a l'oreille)
 

Dudu2

XLDnaute Barbatruc
Et tout ça pourquoi ?
Pour adapter au français une fonction trouvée sur stackoverflow.com pour n'autoriser les Coller que par valeur dont voici le code (qui contient donc des constantes de mots en français, ce que je voulais tenter d'éviter) qui n'est donc pas "language independent" comme disent les saxons.
VB:
Option Explicit

'-----------------
'Paste Values only
'-----------------
'Call from ThisWorkbook:
'Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'    Call PasteValuesOnly(Target)
'End Sub
'
'Call from a Worksheet:
'Private Sub Worksheet_Change(ByVal Target As Range)
'    Call PasteValuesOnly(Target)
'End Sub
'
'Sur la base de:
'https://stackoverflow.com/questions/24391518/vba-refer-to-excel-undolist-language-independent
'-----------------
Sub PasteValuesOnly(ByVal Target As Range, _
                    Optional ByVal CheckPaste As Boolean = True, _
                    Optional ByVal CheckPasteSpecial As Boolean = True, _
                    Optional ByVal CheckAutoFill As Boolean = True)
   
    'Constants subject to local language adaptation
    Const PasteSpecialLetterForValueOptionLocalName = "v"
    Const UndoPasteLocalName = "Coller"
    Const UndoPasteSpecialLocalName = "Collage spécial"
    Const UndoAutoFillLocalName = "Recopie Incrémentée"
    Const FormatTextLocalName = "Texte"
                   
    'Misc Constants
    Const DisplayUndoList = False
    Const PasteSpecialMenuShortcut = "^%v"
   
    'Misc variables
    Dim UndoList As String
   
    '~~> Get the Undo List to capture the last action performed by user
    On Error Resume Next
    UndoList = Application.CommandBars("Standard").FindControl(ID:=128).List(1)
    On Error GoTo 0
   
    If DisplayUndoList Then MsgBox Target.Address & " -> <" & UndoList & ">"
   
    '~~> Check if the last action was a Paste, a PasteSpecail or an Autofill
    If (CheckPaste And UndoList = UndoPasteLocalName) _
    Or (CheckPasteSpecial And UndoList = UndoPasteSpecialLocalName) _
    Or (CheckAutoFill And UndoList = UndoAutoFillLocalName) Then
       
        Application.ScreenUpdating = False
        Application.EnableEvents = False
       
        '~~> Undo the paste that the user did but we are not clearing
        '~~> the clipboard so the copied data is still in memory
       
        Application.Undo
        If UndoList = UndoAutoFillLocalName Then Selection.Copy
       
        '~~> Do a Paste special to preserve formats
       
        Target.Select       
       
        On Error Resume Next
        '~~> Handle text data copied from a website (in error if Excel content)
        ActiveSheet.PasteSpecial Format:=FormatTextLocalName, _
                                 Link:=False, DisplayAsIcon:=False
                               
        '~~> Handle Excel content copied from Excel (in error if text data)
        Target.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
        On Error GoTo 0
       
        '~~> Retain selection of the pasted data
        Union(Target, Selection).Select
       
        Application.ScreenUpdating = True
        Application.EnableEvents = True
    End If
End Sub
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Oui je sais bien, toutes protections (VBA, Feuilles) craquables mais ça fait partie d'un classeur issu d'une question sur le forum qui a beaucoup évolué dans le temps et qui contient des macros dont l'objectif est de faciliter la tâche de l'utilisateur. Ce dernier n'a pas d'intérêt spécial à la destruction mais peut faire des manips dommageables involontairement. D'où cette fonctionnalité que m'a demandée le posteur.
 

Staple1600

XLDnaute Barbatruc
Re

Le risque majeur que je visais d'abord, c'est qu'en titillant l'interface d'Excel, en cas de plantage (oui, ça arrive), l'utilisateur se retrouvera marron comme devant quand il se retrouvera avec un Excel avec son ruban ou ses commandes natives perturbées ;)

Excel a déjà prévu la chose:
Clic-droit-> Coller Valeurs seules
(icone: 123)

PS: Dudu2: Je parle d'expérience, ce n'est donc pas une critique à ton endroit.
 

Dudu2

XLDnaute Barbatruc
Clic-droit-> Coller Valeurs seules
C'est ce que m'a rapporté le demandeur comme étant une commande que ne savent pas faire les utilisateurs qui ne sont pas experts en Excel.

Les risques sur l'interface d'Excel sont limités car il n'y a pas de bidouille API dans cette fonction.
Tout juste un Application.Undo tout à fait orthodoxe.
Maintenant un bug est toujours possible... et corrigeable.
 

Staple1600

XLDnaute Barbatruc
Re

C'est pour cela qu'il existe des formations Excel ;)
Car quand les utilisateurs non experts se retrouveront avec un message d'erreur de VBE, bah ils ne seront pas quoi faire
Par contre, si ils ont dans les favoris de leur navigateur la liste des raccourcis claviers et ou les principales fonctionnalités du ruban
Ou mieux, si on aura pris le temps de leur apprendre à personnaliser leur QAT
Comme ci-dessous
Seules.jpg

Enfin moi, je dis cela, je dis rien ;)

NB: Avec la QAT, 0 bug et pas besoin de VBA.
 

Staple1600

XLDnaute Barbatruc
Re

=>myapple
Il est trop tard pour franciser, camarade
VBA parlait français sous Excel 5
Depuis 97, Il cause "engliche"
HTML, javascript et tutti quanti: toujours la perfide albion
Les algorithmes de G..gle et cie: itou
On a loupé le coche avec notre plan Minitel
(mais j'ai gardé précieusement mon mien)

Par contre, un bar reste un bar, pas besoin de traduction
Juste un tabouret et une chopine ;))

Bref QAT ou BAR, c'est ici la solution que j'utiliserai si j'étais moi pour éviter les soucis (et pour me distinguer de mes collègues avec ma jolie Kate, pardon QAT et ses jolies icônes ;))

NB: Et le pire, c'est que c'est nous (consommateurs européens) qui avons continué à acheter du Microsoft "sauce anglaise" sans broncher...(ou si peu)
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour,

Dans ma dernière boîte (English speaking à tous les étages), la QAT était la Quality Assurance Team qui était en charge de vérifier la non-regression. Un job pas facile. Alors en Excel ça veut sans doute dire autre chose. Mais peu importe.

Dans un monde idéal, les utilisateurs ont des comptes formation et/ou des budgets formation, les ont consommés, ou pas, pour être parfaitement formés aux outils qu'ils utilisent. Ils sont soumis aux règles de sécurité dans un environnement sécurisé et suivent les processus qualité ISO 9000 + x qui ont été définis.

Personnellement je ne connais pas les utilisateurs du code dont on m'a demandé la réalisation, mais je n'ai jamais eu l'idée de faire un procès d'intention au demandeur pour défaut de formation de ses utilisateurs. Pour une raison simple: la réalité s'impose partout, le monde est ce qu'il est et il faut faire avec.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Autre chose... Dans ce sujet, pratiquement traité d'idiot du village par le ptit père Bernard, challengé sur tout, leçons de bonne conduite à la clé, sans pour autant qu'aucune solution au problème technique n'ait été proposée par qui que ce soit, c'est bien la dernière fois que je post sur ce forum.
En vous remerciant pour votre support, je vous souhaite bonne continuation.
Cordialement
JP
 

Discussions similaires

Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 195
Messages
2 086 072
Membres
103 110
dernier inscrit
Privé