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

Macros et VBA Excel Discussion :

Macro ne s'exécute pas car fichier précédent tjrs ouvert


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 141
    Points : 40
    Points
    40
    Par défaut Macro ne s'exécute pas car fichier précédent tjrs ouvert
    J'applique sur plusieurs fichiers dans des répertoires différents la même macro de mise en page.
    Tous les fichiers dans les différents répertoires portent le même nom : biggest_files.xls
    Le fichier, une fois la macro de mise en page effectuée est fermé, et la macro ouvre le fichier suivant pour faire de même.

    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
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    Sub auto_open()
    Dim book As Excel.Workbook
    Dim excelfile As String
    Dim Myrep(0 To 300) As String
     
     
     
    j = 1
     
        Cells.Select
        Selection.ClearContents
        Range("A1").Select
     
    listeDossiersEtSousDossiers
     
    Workbooks("MacroBiggestFilesFS07.xls").Activate
     
     
    Cells(1, 1).Select
    On Error Resume Next
     
    Do
     
    Application.pause
     
        Myrep(j) = Cells(j, 1).Value + "\ZXFILES_REPORT\biggest_files.xls"
     
        Set appxls = CreateObject("Excel.Sheet")
        appxls.Application.Workbooks.Open Myrep(j)
     
        If Err.Number = 0 Then
     
            Rows("1:4").Select
                Range("A4").Activate
                Selection.Delete Shift:=xlUp
                Range("A1:F1").Select
                Range("F1").Activate
                Selection.Font.Bold = True
                Columns("C:C").Select
     
                Selection.Replace What:=" MB", Replacement:="", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
                Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
                    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                    :=Array(1, 1), TrailingMinusNumbers:=True
                Range("H1").Select
                ActiveCell.FormulaR1C1 = "TOTAL (Mo)"
                With ActiveCell.Characters(Start:=1, Length:=10).Font
                    .Name = "Arial"
                    .FontStyle = "Gras"
                    .Size = 10
                    .Strikethrough = False
                    .Superscript = False
                    .Subscript = False
                    .OutlineFont = False
                    .Shadow = False
                    .Underline = xlUnderlineStyleNone
                    .ColorIndex = xlAutomatic
                End With
                Range("I1").Select
                ActiveCell.FormulaR1C1 = "=SUM(C[-6])"
                Range("H3").Select
                ActiveCell.FormulaR1C1 = "TOTAL (Go)"
                Range("I3").Select
                ActiveCell.FormulaR1C1 = "=SUM(R[-2]C/1000)"
                Range("H3").Select
                Selection.Font.Bold = True
                Range("I3").Select
                Selection.NumberFormat = "0.0"
                Range("I1").Select
                Selection.NumberFormat = "0"
                Range("H3:I3,H1:I1").Select
                Range("H1").Activate
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlInsideVertical)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
     
                Columns("C:C").Select
                With Selection
                    .HorizontalAlignment = xlRight
                    .VerticalAlignment = xlBottom
                    .WrapText = False
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = False
                End With
                Range("C1").Select
                With Selection
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlBottom
                    .WrapText = False
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = False
                End With
                With Selection
                    .HorizontalAlignment = xlLeft
                    .VerticalAlignment = xlBottom
                    .WrapText = False
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = False
                End With
                ActiveCell.FormulaR1C1 = "Size (Mo)"
                Columns("A:F").Select
                Range("F1").Activate
                Selection.AutoFilter
                Columns("A:A").Select
                Selection.ColumnWidth = 33.57
                Columns("B:B").ColumnWidth = 33.71
                Columns("C:C").EntireColumn.AutoFit
                Columns("D:D").EntireColumn.AutoFit
                Columns("E:E").ColumnWidth = 22.14
                Columns("F:F").EntireColumn.AutoFit
                    Columns("D:D").Select
                With Selection
                    .HorizontalAlignment = xlRight
                    .VerticalAlignment = xlBottom
                    .WrapText = False
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = False
                End With
                Range("D1").Select
                With Selection
                    .HorizontalAlignment = xlLeft
                    .VerticalAlignment = xlBottom
                    .WrapText = False
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = False
                End With
     
                Columns("C:C").Select
                Selection.NumberFormat = "0.0"
                Columns("C:C").Select
                Range("A1:F23").Sort Key1:=Range("C1"), Order1:=xlDescending, Header:= _
                    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                    DataOption1:=xlSortNormal
                Range("A1").Select
                Columns("A:F").Select
                Range("F1").Activate
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlInsideVertical)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlInsideHorizontal)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                Range("A1").Select
                Columns("C:C").Select
                Range("A1:F893").Sort Key1:=Range("C1"), Order1:=xlDescending, Header:= _
                    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                    DataOption1:=xlSortNormal
                Range("A1").Select
                Columns("D:D").Select
                Selection.NumberFormat = "m/d/yyyy;@"
                Selection.NumberFormat = "mm/dd/yyyy;@"
                Range("A1").Select
                    Columns("D:D").Select
                Range("A1:F218").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:= _
                    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                    DataOption1:=xlSortNormal
                Range("A1").Select
     
                    Columns("C:C").Select
        Range("A1:F2683").Sort Key1:=Range("C1"), Order1:=xlDescending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortTextAsNumbers
        Range("A1").Select
     
                Application.DisplayAlerts = False
                     ActiveWorkbook.SaveAs Filename:=Myrep(j) _
                    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                    ReadOnlyRecommended:=False, CreateBackup:=False
     
                            ActiveWorkbook.Close
                            Application.DisplayAlerts = True
     
     
             Else
             Err.Clear
     
        End If
     
        Set appxls = Nothing
     
        j = j + 1
     
        Workbooks("MacroBiggestFilesFS07.xls").Activate
     
    Loop While Cells(j, 1) <> ""
      Application.DisplayAlerts = False
    Workbooks("MacroBiggestFilesFS07.xls").Close SaveChanges:=False
                  Application.DisplayAlerts = True
     
    Excel.Application.Close
     
    End Sub


    Parfois (souvent...) la macro ouvre laisse ouvert le 1er fichier ce qui empêche donc d'ouvrir le 2ème et d'exécuter la macro dessus.

    Je ne parviens pas à trouver de solution.
    Peut-être faut-il laisser le temps au 1er de se fermer en effectuant une pause ou autre chose mais je ne connais pas la syntaxe.
    J'ai essayé avec application.ontime mais il me renvoi systméatiquement argument non facultatif et je ne suis pas vraiment sûre que ça résolve mon problème.

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    ton code semble assez complexe pour une opération qui somme toute à l'air banale.

    je ne comprends par exemple pas pourquoi tu ouvres tes classeurs de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Myrep(j) = Cells(j, 1).Value + "\ZXFILES_REPORT\biggest_files.xls"
     
        Set appxls = CreateObject("Excel.Sheet")
        appxls.Application.Workbooks.Open Myrep(j)
    Tu pourrais simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks.Open Myrep(j)
    et à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks(machin(j).close
    car tu n'a pas besoin de définir excel en tant qu'objet.

    cela pourrais être la raison pour laquelle ton fichier reste ouvert.

    Si c'est une question d'attente, tu peux mettre ceci après le close

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 141
    Points : 40
    Points
    40
    Par défaut
    J'ai besoin de ce code parce que mes fichiers biggest_files sont dans des répertoires différents.

    Sinon, le doevents ça sert à quoi ?
    Je l'ai mis après ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Application.DisplayAlerts = False
                     ActiveWorkbook.SaveAs Filename:=Myrep(j) _
                    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                    ReadOnlyRecommended:=False, CreateBackup:=False
                                    
                            ActiveWorkbook.Close
                            doevents 
                            Application.DisplayAlerts = True
    Il ne se passe rien.

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    J'ai besoin de ce code parce que mes fichiers biggest_files sont dans des répertoires différents.
    Ce n'est pas une raison. Mon système fonctionne pour ton cas.

    Sinon, le doevents ça sert à quoi ?
    Regarde dans l'aide.....

    Je persiste à croire que c'est ton système d'open et close qui est spécial. Change le comme je l'ai proposé.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Citation Envoyé par mattwarend Voir le message
    Avant d'aller plus loin, commence déjà par supprimer ce truc que tu utilise d'une manière que je qualifierais de "particulièrement déconseillée".

    Si tu as des erreurs gênantes dans ton code, il est recommandé de les cibler, pas de laisser trainer une gestion d'erreurs qui peut provoquer tout et n'importe quoi comme comportement.

Discussions similaires

  1. Question de débutant : java n exécute pas mes fichiers
    Par torkeep dans le forum Général Java
    Réponses: 2
    Dernier message: 26/02/2014, 14h28
  2. Pourquoi mon navigateur n'exécute pas les fichiers ASP
    Par Claude_Azoulai dans le forum ASP
    Réponses: 5
    Dernier message: 21/10/2007, 17h25
  3. Macro, mais les evenements ne s'exécutent pas tous
    Par polianita dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 16h53
  4. [Access] Update ne s'exécute pas complètement car PK
    Par JulienCEA dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/02/2006, 22h14
  5. Réponses: 7
    Dernier message: 12/08/2005, 09h47

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