Macro Excel 2007

Bonjour,

J'ai depuis peu la version Excel 2007 et il y a un petit quelque chose que je n'arrive plus à faire comparativement à avant et je ne sais pas pourquoi.

C'est une simple macro que je viens de créer dans le but de faire un tri.
Le type de fichier est toujours le même au départ: c'est un export d'un état de compte bancaire du site de la banque nationale vers Excel.
Voici en gros ce que j'y ai mis dedans:

Colonnes ABC, justifier à gauche.
Colonnes BC, élargir
Colonnes DEF, format nombre, avec séparateur de millier
Ensuite, je sélectionne la rangée 3 jusqu'à la rangée 1000 (pour me mettre une bonne marge de manoeuvre):
Données/trier/trier par colonne E/ajouter un niveau/trier par colonne D

C'est tout.
Ce qui fait que mon fichier se travaille mieux ainsi et surtout, mes dépôts (colonne E) et mes retraits (colonne D) sont regroupés.

Mais le hic, c'est lorsque j'ai voulu exécuter ma macro dans un autre fichier. Ça n'a pas marché. On dirait que ça fonctionne juste dans le fichier dans lequel j'ai créé la macro, et DANS L'ONGLET précisément et seulement où j'ai créé la macro.

Me semble qu'avant, un coup que cette macro était créée, je pouvais l'exécuter quand bon me semblait.

Là, je n'arrive plus à l'exécuter, ça me donne un bug.

Aidez-moi svp, c'est une macro dont j'ai besoin pour mon travail et plusieurs fois par mois. merci.

9 réponses

  1. tiens tiens, ça me dit quelque chose, ça, de l'affecter à un bouton.
    Comment on fait déjà ?
    ainsi je pourrais avoir mon bouton en haut de mon excel ??
    0
    1. J'ai pas besoin de sécurité, c'est juste moi qui l'utilise sur mon ordi.
      comment je fais pour la mettre dans un module standard ?
      les options qui sont là, lorsque je veux créer une macro, sont:

      enregistrer la macro dans:
      ce classeur
      nouveau classeur
      classeur de macros personnelles

      J'ai essayé la dernière option et je n'ai aucune espèce d'idée où est rendue ma macro. Où est rendu ce fichier ?
      0
      1. Modérateur
        comment je fais pour la mettre dans un module standard ?
        - tu ouvres ton classeur,
        - Tapes ALT+F11
        - Insertion/Module
        - copie/colle le code
        Sub TRIER()
          ActiveSheet.Columns("A:C").HorizontalAlignment = xlLeft
          ActiveSheet.Columns("D:F").Style = "Comma"
          ActiveSheet.Columns("B:C").ColumnWidth = 26.71
          ActiveSheet.Columns("G:H").ClearContents
          With ActiveSheet.Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range("E3:E1000"), SortOn:=xlSortOnValues, _
              Order:=xlAscending, DataOption:=xlSortNormal
            .SortFields.Add Key:=Range("D3:D1000"), SortOn:=xlSortOnValues, _
              Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange Range("A3:H1000")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
          End With
          ActiveSheet.Range("A3").Select
        End Sub

        - ferme la fenêtre Visual Basic Editor
        Pour lancer la macro ALT+F8 depuis n'importe qu'elle feuille, sélectionnes TRIER et clic sur exécuter... Ou affectes là à un bouton...
        0
    2. Pour que la macro fonctionne sur n'importe quelle feuille du classeur, au lieu de la mettre dans une feuille, il faut la mettre dans un module standard.
      Mais attention car ta macro ne dispose d'aucune sécurité pour contrôler si elle s'exécute dans une feuille adéquate
      0
      1. les colonnes seront toujours les mêmes. C'est le nombre de rangées qui peut varier. C'est pour ça que j'y vais jusqu'à 1000 pour me donner une très grande marge de manoeuvre.

        Pour le moment, la macro fonctionne mais juste dans l'onglet où la macro a été créée.
        Ce qui n'est pas bon car à chaque mois, j'aurai à downloader des états de compte bancaire de plusieurs compagnies. Donc, dans des fichiers différents et dans des onglets différents. Je n'ai pas envie de créer une macro à chaque fois. Il faut qu'elle soit accessible à chaque fois que j'en ai envie.
        Présentement, si j'essaie la macro dans un 2e onglet, ça me dit que la macro est désactivée.
        0
        1. Essaie de remplacer ton code par celui-ci qui s'applique à la feuille active :
          Sub TRIER()
            ActiveSheet.Columns("A:C").HorizontalAlignment = xlLeft
            ActiveSheet.Columns("D:F").Style = "Comma"
            ActiveSheet.Columns("B:C").ColumnWidth = 26.71
            ActiveSheet.Columns("G:H").ClearContents
            With ActiveSheet.Sort
              .SortFields.Clear
              .SortFields.Add Key:=Range("E3:E1000"), SortOn:=xlSortOnValues, _
                Order:=xlAscending, DataOption:=xlSortNormal
              .SortFields.Add Key:=Range("D3:D1000"), SortOn:=xlSortOnValues, _
                Order:=xlAscending, DataOption:=xlSortNormal
              .SetRange Range("A3:H1000")
              .Header = xlGuess
              .MatchCase = False
              .Orientation = xlTopToBottom
              .SortMethod = xlPinYin
              .Apply
            End With
            ActiveSheet.Range("A3").Select
          End Sub

          Sous réserve que les colonnes à trier soient les mêmes.
          0
          1. est-ce que c'est mieux comme ça ?

            Sub tries()
            '
            ' tries Macro
            ' tri
            '
            ' Touche de raccourci du clavier: Ctrl+o
            '
            Columns("A:C").Select
            Range("C1").Activate
            With Selection
            .HorizontalAlignment = xlLeft
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
            End With
            Columns("D:F").Select
            Selection.Style = "Comma"
            Columns("B:C").Select
            Selection.ColumnWidth = 26
            Columns("G:H").Select
            Selection.ClearContents
            Range("A4").Select
            ActiveWindow.LargeScroll Down:=1
            Range("A1154").Select
            ActiveWindow.LargeScroll Down:=1
            Rows("1179:1179").Select
            ActiveWindow.ScrollRow = 1000
            ActiveWindow.ScrollRow = 1
            Rows("3:1000").Select
            Range("A1000").Activate
            ActiveWorkbook.Worksheets("20111108083259(1)").Sort.SortFields.Clear
            ActiveWorkbook.Worksheets("20111108083259(1)").Sort.SortFields.Add Key:=Range _
            ("E3:E282"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
            ActiveWorkbook.Worksheets("20111108083259(1)").Sort.SortFields.Add Key:=Range _
            ("D3:D282"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
            With ActiveWorkbook.Worksheets("20111108083259(1)").Sort
            .SetRange Range("A3:H282")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
            End With
            Range("A3").Select
            End Sub
            0
            1. salut pijaku,

              "ça, c'est de la bonne question" :)

              voici ma macro et que je ne réussis même plus à exécuter sans bug:

              Sub TRIER()
              '
              ' TRIER Macro
              ' tri
              '
              ' Touche de raccourci du clavier: Ctrl+i
              '
              Columns("A:C").Select
              Range("C1").Activate
              With Selection
              .HorizontalAlignment = xlLeft
              .VerticalAlignment = xlBottom
              .WrapText = False
              .Orientation = 0
              .AddIndent = False
              .IndentLevel = 0
              .ShrinkToFit = False
              .ReadingOrder = xlContext
              .MergeCells = False
              End With
              Columns("D:F").Select
              Selection.Style = "Comma"
              Columns("B:C").Select
              Selection.ColumnWidth = 26.71
              Columns("G:H").Select
              Selection.ClearContents
              Range("A3").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A28").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A53").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A78").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A103").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A128").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A153").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A178").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A203").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A228").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A253").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A278").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A303").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A328").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A353").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A378").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A403").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A428").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A453").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A478").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A503").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A528").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A553").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A578").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A603").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A628").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A653").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A678").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A703").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A728").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A753").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A778").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A803").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A828").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A853").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A878").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A903").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A928").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A953").Select
              ActiveWindow.LargeScroll Down:=1
              Range("A978").Select
              ActiveWindow.LargeScroll Down:=1
              Rows("1001:1001").Select
              ActiveWindow.ScrollRow = 999
              ActiveWindow.ScrollRow = 997
              ActiveWindow.ScrollRow = 990
              ActiveWindow.ScrollRow = 978
              ActiveWindow.ScrollRow = 930
              ActiveWindow.ScrollRow = 902
              ActiveWindow.ScrollRow = 869
              ActiveWindow.ScrollRow = 831
              ActiveWindow.ScrollRow = 787
              ActiveWindow.ScrollRow = 745
              ActiveWindow.ScrollRow = 701
              ActiveWindow.ScrollRow = 654
              ActiveWindow.ScrollRow = 619
              ActiveWindow.ScrollRow = 572
              ActiveWindow.ScrollRow = 539
              ActiveWindow.ScrollRow = 493
              ActiveWindow.ScrollRow = 444
              ActiveWindow.ScrollRow = 404
              ActiveWindow.ScrollRow = 354
              ActiveWindow.ScrollRow = 312
              ActiveWindow.ScrollRow = 272
              ActiveWindow.ScrollRow = 243
              ActiveWindow.ScrollRow = 186
              ActiveWindow.ScrollRow = 123
              ActiveWindow.ScrollRow = 87
              ActiveWindow.ScrollRow = 58
              ActiveWindow.ScrollRow = 22
              ActiveWindow.ScrollRow = 14
              ActiveWindow.ScrollRow = 1
              Rows("3:1001").Select
              Range("A1001").Activate
              ActiveWorkbook.Worksheets("20111108083259(1)").Sort.SortFields.Clear
              ActiveWorkbook.Worksheets("20111108083259(1)").Sort.SortFields.Add Key:=Range _
              ("E3:E282"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
              xlSortNormal
              ActiveWorkbook.Worksheets("20111108083259(1)").Sort.SortFields.Add Key:=Range _
              ("D3:D282"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
              xlSortNormal
              With ActiveWorkbook.Worksheets("20111108083259(1)").Sort
              .SetRange Range("A3:H282")
              .Header = xlGuess
              .MatchCase = False
              .Orientation = xlTopToBottom
              .SortMethod = xlPinYin
              .Apply
              End With
              Range("A3").Select
              End Sub
              0
              1. Modérateur
                Premier travail à faire : supprimer toutes les lignes inutiles :
                ActiveWindow.ScrollRow
                ActiveWindow.LargeScroll Down:=1
                ...
                0
            2. Euh, il n'y a rien de mystérieux là-dedans, c'est moi qui a créé ma propre macro. Et c'en est une toute simple.
              T'as jamais créé de macro ?
              0
              1. Modérateur
                Salut El-sol.
                Salut Patrice,

                à el sol : Ca c'est de la bonne réponse!!!
                Je traduis donc les propos de Patrice :
                Pourrais tu compléter ta demande en venant coller ici le code complet de ta macro, indispensable pour pouvoir t'apporter une réponse cohérente.
                0
            3. Mais quelle est donc cette mystérieuse macro ?
              0
              1. Bonjour

                Je n'y connais pas grand chose mais comme tu dis que ta macro ne fonctionne qu'avec cette feuille peut être est-elle attachée à cette feuille pour le voir tu click sur l'onglet de la feuille voir code.
                0