IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Word Discussion :

Annulation en un coup des actions successives d'une macro ?


Sujet :

Word

  1. #1
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2018
    Messages : 56
    Points : 45
    Points
    45
    Par défaut Annulation en un coup des actions successives d'une macro ?
    Bonjour,

    Je crée des macros essentiellement à l'aide de l'enregistreur de macros.
    Quand je veux annuler l'action d'une macro, je dois donc annuler successivement chaque étape de la macro.
    Y a-t-il moyen pour dire à Word d'annuler l'ensemble des actions de la dernière macro ?
    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gloub gloub Voir le message
    Bonjour,

    Votre question demande plus de précisions. Vous devriez mettre en ligne vos macros car on ne peut pas deviner ce que vous faites avec et expliquer les manip que vous faites pour annuler.

  3. #3
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2018
    Messages : 56
    Points : 45
    Points
    45
    Par défaut
    Merci de me répondre.
    Voilà un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Format_Arial_Black_Rouge()
        Application.Selection.Words(1).Select
     
        Selection.Font.Name = "Arial Black"
        With Selection.Font
            .Name = "Arial Black"
            .Color = wdColorRed
        End With
        Selection.MoveLeft Unit:=wdCharacter, Count:=1
    End Sub

  4. #4
    Membre habitué
    Femme Profil pro
    Bureauticienne
    Inscrit en
    Novembre 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bureauticienne

    Informations forums :
    Inscription : Novembre 2014
    Messages : 72
    Points : 154
    Points
    154
    Par défaut
    Bonjour Gloub Gloub,

    pour annuler les actions d'une macro en une seule fois, avec [Ctrl] [Z] par exemple, il faut… une macro ;-)
    Voici celle que j'utilise et dont tu trouveras la source ici (merci à l'auteur) :
    https://groups.google.com/forum/?hl=...8/uz1_gacg8cUJ

    Comme tu le verras, en fait, il y a plusieurs petites macros : celle qui annule, celle qui refait, celles qui affectent la macro aux raccourcis clavier. Elles ne datent pas d'hier mais elles fonctionnent très bien. Je ne suis pas spécialiste VBA mais elles sont faciles à mettre en œuvre.

    Anne

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gloub gloub Voir le message
    Une solution possible consiste à mémoriser la chaîne sélectionnée dans un signet dont le nom contiendra la chaine et le style avant modification.

    Le code ci-dessous réalise cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    Option Explicit
     
    Sub Format_Arial_Black_Rouge()
     
        With Selection
             CreerUnSignet
             With .Font
                  .Name = "Arial Black"
                  .Color = wdColorRed
             End With
            .MoveLeft Unit:=wdCharacter, Count:=1
        End With
     
    End Sub
     
     
    Sub CreerUnSignet()
     
    Dim I As Integer
    Dim SignetNomEncours As String, ChaineSelectionnee As String, StyleEncours As String
    Dim Continuer As Boolean
     
        Continuer = True
     
     
        StyleEncours = ""
     
        For I = 1 To Len(Selection.Style)
            Select Case Mid(Selection.Style, I, 1)
                   Case " "
                    StyleEncours = StyleEncours & "Z"
                   Case Else
                    StyleEncours = StyleEncours & Mid(Selection.Style, I, 1)
            End Select
        Next I
     
         ChaineSelectionnee = ""
         For I = 1 To Len(Trim(Mid(Selection.Range.Text, 1, Len(Selection.Range.Text) - 1)))
            Select Case Mid(Trim(Mid(Selection.Range.Text, 1, Len(Selection.Range.Text) - 1)), I, 1)
                   Case " ", "-", "/", "\"  ' Ajouter les caractères interdits
     
                   Case Else
                    ChaineSelectionnee = ChaineSelectionnee & Mid(Trim(Mid(Selection.Range.Text, 1, Len(Selection.Range.Text) - 1)), I, 1)
            End Select
        Next I
     
     
     
     
     
        SignetNomEncours = "Memo_" & ChaineSelectionnee & "_" & StyleEncours
     
        With ActiveDocument
          For I = 1 To .Bookmarks.Count
              If .Bookmarks(I).Name = SignetNomEncours Then
                 Continuer = False
              End If
          Next I
          If Continuer = True Then
             .Bookmarks.Add SignetNomEncours
          End If
     
        End With
     
    End Sub
     
     
    Sub RemettreEnOrdre()
     
    Dim I As Integer, J As Integer
    Dim MonTableau As Variant
    Dim MonStyleRecompose As String
     
      With ActiveDocument
     
        If .Bookmarks.Count = 0 Then Exit Sub
     
        For I = .Bookmarks.Count To 1 Step -1
     
            MonStyleRecompose = ""
            If Mid(.Bookmarks(I).Name, 1, 5) = "Memo_" Then
               MonTableau = Split(.Bookmarks(I).Name, "_")
               If UBound(MonTableau) > 0 Then
                  Debug.Print "Style " & MonTableau(2)
                   For J = 1 To Len(MonTableau(2))
                       Select Case Mid(MonTableau(2), J, 1)
                              Case "Z"
                                   MonStyleRecompose = MonStyleRecompose & " "
                              Case Else
                                   MonStyleRecompose = MonStyleRecompose & Mid(MonTableau(2), J, 1)
                       End Select
                   Next J
                   .Bookmarks(I).Select
                   Selection.Style = MonStyleRecompose
                   .Bookmarks(I).Delete
               End If
            End If
       Next I
     
      End With
     
    End Sub
    Pour mettre en oeuvre les macros, j'ai créé deux boutons dans la barre d'accès rapide, l'un pour mémoriser la chaine (bouton triangle vert), l'autre pour supprimer toutes les mises en forme, comme ci-dessous. Après avoir sélectionné un mot(sans caractère spécial), la chaîne est modifiée avec votre code et le signet créé.

    Pièce jointe 422773

    Voilà ce que cela donne après avoir mémorisé toutes les chaines présentes.

    Pièce jointe 422775

    Un clic sur le bouton rouge rétablit tout. Une limite dans le système : les signets n'acceptent pas tous les caractères dans le nom. Pour que cela marche à tous les coups, il faut retirer tous les caractères pouvant faire planter la procédure dans le select case..

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gloub gloub Voir le message

    Une autre variante où le nom du signet dépend de la procédure utilisée. J'ai crée un procédure qui met la chaîne en Arial Black vert, et j'ai ajouté un bouton dans la barre d'accès rapide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    Option Explicit
     
    Sub Format_Arial_Black_Rouge()
     
        With Selection
             CreerUnSignet "ArialBlackRouge"
             With .Font
                  .Name = "Arial Black"
                  .Color = wdColorRed
             End With
            .MoveLeft Unit:=wdCharacter, Count:=1
        End With
     
    End Sub
     
    Sub Format_Arial_Black_Vert()
     
        With Selection
             CreerUnSignet "ArialBlackVert"
             With .Font
                  .Name = "Arial Black"
                  .Color = wdColorGreen
             End With
            .MoveLeft Unit:=wdCharacter, Count:=1
        End With
     
    End Sub
     
     
    Sub CreerUnSignet(ByVal RepereSignet As String)
     
    Dim I As Integer
    Dim SignetNomEncours As String, StyleEncours As String
    Dim Continuer As Boolean
     
        Continuer = True
     
     
        StyleEncours = ""
     
        For I = 1 To Len(Selection.Style)
            Select Case Mid(Selection.Style, I, 1)
                   Case " "
                    StyleEncours = StyleEncours & "Z"
                   Case Else
                    StyleEncours = StyleEncours & Mid(Selection.Style, I, 1)
            End Select
        Next I
     
        With ActiveDocument
     
          SignetNomEncours = "Memo_" & RepereSignet & .Bookmarks.Count & "_" & StyleEncours
     
          For I = 1 To .Bookmarks.Count
              If .Bookmarks(I).Name = SignetNomEncours Then
                 Continuer = False
              End If
          Next I
          If Continuer = True Then
             .Bookmarks.Add SignetNomEncours
          End If
     
        End With
     
    End Sub
     
     
    Sub RemettreEnOrdre()
     
    Dim I As Integer, J As Integer
    Dim MonTableau As Variant
    Dim MonStyleRecompose As String
     
      With ActiveDocument
     
        If .Bookmarks.Count = 0 Then Exit Sub
     
        For I = .Bookmarks.Count To 1 Step -1
     
            MonStyleRecompose = ""
            If Mid(.Bookmarks(I).Name, 1, 5) = "Memo_" Then
               MonTableau = Split(.Bookmarks(I).Name, "_")
               If UBound(MonTableau) > 0 Then
                  Debug.Print "Style " & MonTableau(2)
                   For J = 1 To Len(MonTableau(2))
                       Select Case Mid(MonTableau(2), J, 1)
                              Case "Z"
                                   MonStyleRecompose = MonStyleRecompose & " "
                              Case Else
                                   MonStyleRecompose = MonStyleRecompose & Mid(MonTableau(2), J, 1)
                       End Select
                   Next J
                   .Bookmarks(I).Select
                   Selection.Style = MonStyleRecompose
                   .Bookmarks(I).Delete
               End If
            End If
       Next I
     
      End With
     
    End Sub

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pas besoin d'une macro. Faire une copie du document sous un autre nom avant de lancer la macro.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  8. #8
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2018
    Messages : 56
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    Merci à tous les contributeurs et désolé pour cette réponse tardive : ma boîte mail était endommagée et je n'ai récupéré les mails de notification que tout récemment.
    En tous cas je vois que c'est plus complexe que ce que j'imaginais de prime abord.
    Je pensais naïvement que Word permettait par exemple de créer un fichier temporaire à restaurer en cas d'annulation (bref une copie de sauvegarde comme le propose clementmarcotte, mais volatile).
    Je me penche sur ces pistes.
    Merci.

Discussions similaires

  1. Gestion d'annulation des actions effectuées dans une sous-fenêtre
    Par randriano dans le forum Entity Framework
    Réponses: 13
    Dernier message: 04/04/2011, 15h57
  2. Réponses: 45
    Dernier message: 14/02/2008, 15h41
  3. Réponses: 4
    Dernier message: 28/11/2007, 23h07
  4. Action TransférerTexte dans une macro avec Access 2007
    Par EtienneG dans le forum Modélisation
    Réponses: 2
    Dernier message: 19/06/2007, 23h43
  5. test entre des lignes successives d'une table
    Par preskovik dans le forum Access
    Réponses: 4
    Dernier message: 22/03/2006, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo