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 :

Ouvrir, enregistrer et fermer un ensemble de fichier .xls d'un même dossier


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut Ouvrir, enregistrer et fermer un ensemble de fichier .xls d'un même dossier
    Bonjour à tous,

    Pour l'amélioration d'un utilitaire sous Excel gérant les bulletins de note de notre établissement, je souhaite mettre facilement à jour les données des différentes matières (1 matière d'une classe = 1 feuille excel)
    Des liens sont fait afin que les noms des élèves d'une autre feuille s'affiche automatiquement dans les différentes feuilles de matières.
    J'ai utilisé l'enregistreur de macro afin, via un bouton, de mettre à jour les modification sans avoir à ouvrir la matière 1, l'enregistrer, puis la fermer, ouvrir la matière 2, l'enregistrer, la fermer, ETC...
    ça fonctionne très bien, mais question longueur de code...c'est vraiment pas optimisé...Arg !

    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
    Sub MAJFICHIERS()
    '
    ' MAJfichiers Macro
    ' Macro enregistrée le 22/09/2006 par SH
    '
    ' Touche de raccourci du clavier: Ctrl+m
    '
        ChDir "D:\Bulletins\3ème\3ème EA-A"
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A Anglais.xls" _
            , UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A ASSR.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A B2i.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A Biologie.xls" _
            , UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A EPS.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A ESC.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A ESF.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A ESS.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A Français.xls" _
            , UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:= _
            "D:\Bulletins\3ème\3ème EA-A\3ème EA-A Histoire-Géographie.xls", UpdateLinks _
            :=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:= _
            "D:\Bulletins\3ème\3ème EA-A\3ème EA-A Informatique.xls", UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:= _
            "D:\Bulletins\3ème\3ème EA-A\3ème EA-A Mathématiques.xls", UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A RDS.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A RDS.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:= _
            "D:\Bulletins\3ème\3ème EA-A\3ème EA-A Sciences Physiques.xls", UpdateLinks:= _
            3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A Thème.xls", _
            UpdateLinks:=3
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    End Sub
    J'ai regardé un peu sur le net, et j'ai essayé de mettre en place un autre code beaucoup plus court, mais qui ne fonctionne pas du tout (j'ai du zappé un truc)

    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
    Sub MAJFICHIERS()
    '
    ' MAJfichiers Macro
    ' Macro enregistrée le 22/09/2006 par SH
    '
    ' Touche de raccourci du clavier: Ctrl+z
    '
     
    Dim Fichier As String, Chemin As String
    Dim Wb As Workbook
     
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    Fichier = Dir(Chemin & "*.xls")
     
    Do While Fichier <> ""
    Set Wb = Workbooks.Open(Chemin & Fichier)
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    Set Wb = Nothing
    Fichier = Dir
    Loop
     
    End Sub
    Si quelqu'un pouvait m'aider s'il vous plait, ça serait vraiment très sympa.
    Merci.

  2. #2
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    J'ai modifier un peu le code:

    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
    Sub MAJ()
    '
    ' MAJfichiers Macro
    ' Macro enregistrée le 22/09/2006 par SH
    '
    ' Touche de raccourci du clavier: Ctrl+u
    '
    Dim wb As Workbook
    Dim Fichier As String
    Dim Chemin As String
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    Fichier = Dir(Chemin & "*.xls")
    ' // .. Début de la partie utile
    wb.Save
    ' // .. Fin de la partie utile
    wb.Close
    Set wb = Nothing
    End Sub
    mais ça bloque sur le wb.Save et j'arrive pas à voir pourquoi .

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Do While Fichier <> ""
    Set Wb = Workbooks.Open(Chemin & Fichier)
        '
        '
        '...
        '
        Wb.Close True
    Set Wb = Nothing
    Fichier = Dir
    Loop
    L'argument True indique que les modifications doivent etre enregistrées

    michel

  4. #4
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Merci d'essayer de m'aider SilkyRoad, mais ça ne donne rien...ça ne s'execute pas...Arf.
    Pris par le temps, je crois que je vais laisser le code "sale" fait par excel.

    Merci quand même.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Un DoEvents avant le Close (ou Save) devrait laisser le temps à Excel de terminer ses mises à jour avant de fermer le classeur.

    Edit:
    Il ne te manque pas un \ là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    ???

    Tu devrais faire du pas à pas pour observer le contenu de tes variables.
    Ca te permettrait également de voir si les classeurs s'ouvrent bien.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Merci AlainTech de te pencher sur mon cas.
    Il ne manque pas de /, c'est bien le nom du dossier de la classe 3ème EA-A.

    J'ai essayé pas à pas, mais, dès que j'essaye de faire du code "propre", je n'arrive pas même à faire s'ouvrir 1 seul fichier.
    J'ai essayé en enlevant une partie du code (différente à chaque fois) pour voir ce qui pouvait provoquer l'erreur...mais je n'arrive pas à obtenir une info exploitable.
    J'ai essayé avec le Débuggeur, mais il ne me donne pas d'info très intéressante.

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir Alain

    Krakenn, est ce qu'il ne manquerait pas un antislash dans cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wb = Workbooks.Open(Chemin & Fichier)
    tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wb = Workbooks.Open(Chemin & "\" & Fichier)


    tu n'as pas précisé quel est le message d'erreur actuel


    michel

  8. #8
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Oups...j'ai effectivement ommis de préciser que je n'avais aucun message d'erreur ! Rien !
    Je lance la macro...et rien ne se passe. Je n'ai pas de référence sur l'erreur.
    Je vais essayer la modification que tu me conseilles, SilkyRoad, merci.

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben les activeWorkBook il faut tous les supprimer... remplace aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    par

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par AlainTech
    Il ne te manque pas un \ là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    ???
    Je voulais dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = "D:\Bulletins\3ème\3ème EA-A\"
    Ce qui est, d'ailleurs, équivalent à ce que te propose SilkyRoad.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  11. #11
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Merci à tous pour vos contributions.

    J'ai retravailler sur le code de la macro:

    donc la macro "MAJ" donne ceci à l'heure actuelle:

    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
    Sub MAJ()
    '
    ' MAJfichiers Macro
    ' Macro enregistrée le 22/09/2006 par SH
    '
    ' Touche de raccourci du clavier: Ctrl+u
    '
    Do While Fichier <> ""
    Set wb = Workbooks.Open(Chemin & "\" & Fichier)
    Dim wb As Workbook
    Dim Fichier As String
    Dim Chemin As String
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    Fichier = Dir(Chemin & "*.xls")
    ' // .. Début de la partie utile
        wb.Save
    ' // .. Fin de la partie utile
        wb.Close True
    Set wb = Nothing
    Fichier = Dir
    Loop
    Et me met le message d'erreur suivant:

    "Erreur de compilation:
    Déclaration existante dans la portée en cours"


    en mettant en surbrillance la partie:

    Dim wb As Workbook

    J'ai essayé en l'enlevant (la ligne) mais lorsque je re-exécute la macro, il me met la ligne juste en dessous avec la même erreur...

    Dois-je la déclarer "public" plutôt que "dim" ?

  12. #12
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Je viens de modifier la macro.

    J'obtiens désormais ceci:
    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
    Sub MAJ()
    '
    ' MAJfichiers Macro
    ' Macro enregistrée le 22/09/2006 par SH
    '
    ' Touche de raccourci du clavier: Ctrl+u
    '
    Dim Fichier As String
    Dim Chemin As String
    Do While Fichier <> ""
    Set wb = Workbooks.Open(Chemin & "\" & Fichier)
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    Fichier = Dir(Chemin & "*.xls")
    ' // .. Début de la partie utile
        wb.Save
    ' // .. Fin de la partie utile
        wb.Close True
    Set wb = Nothing
    Fichier = Dir
    Loop
    End Sub
    Mais lorsque je l'éxecute, bien que je n'obtienne pas de message d'erreur, je n'obtiens pas non plus la moindre éxecution...
    Y'a quelque chose qui cloche, mais je n'ai pas de message pour m'indiquer d'où peut venir l'erreur.

    Quelqu'un pourrait m'aider s'il vous plait ?

  13. #13
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    tu peux essayer

    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
    Dim Fichier As String
    Dim Chemin As String
    Dim Wb As Workbook
     
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    Fichier = Dir(Chemin & "\*.xls")
     
    Do While Fichier <> ""
        Set Wb = Workbooks.Open(Chemin & "\" & Fichier)
        '
        '
        '
        Wb.Close True
        Set Wb = Nothing
        Fichier = Dir
    Loop

    bonne soiree
    michel

  14. #14
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Merci Michel pour l'aide apportée.

    Après modification de la Macro, les fichiers s'ouvrent bien et se referment bien, mais aucune sauvegarde ne se fait avant la fermeture (nécessaire pour tenir compte de l'enregistrement des liens mis à jour).

    J'ai donc ajouté la commande suivante:
    Wb.Save
    ça fait la même chose (pas d'enregistrement des fichiers ouverts)
    et lorsque je met:
    Wb.Save True
    ça renvoi une erreur de compilation.

    voilà l'endroit où je l'avais mis:
    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
    Sub MAJ()
    '
    ' MAJfichiers Macro
    ' Macro enregistrée le 22/09/2006 par SH
    '
    ' Touche de raccourci du clavier: Ctrl+u
    '
    Dim Fichier As String
    Dim Chemin As String
    Dim Wb As Workbook
     
    Chemin = "D:\Bulletins\3ème\3ème EA-A"
    Fichier = Dir(Chemin & "\*.xls")
    Do While Fichier <> ""
        Set Wb = Workbooks.Open(Chemin & "\" & Fichier)
        '
        '
        '
        Wb.Save True
        Wb.Close True
        Set Wb = Nothing
        Fichier = Dir
    Loop
    End Sub
    Le positionnement de la commande Wb.Save me semble logique (juste avant de fermer le fichier) et mettre la valeur True pour que l'action se fasse...
    Est-ce la commande Workbooks.Open qui interdit l'enregistrement ?

  15. #15
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    la méthode Save ne possède pas d'argument True


    spécifie que les modifications doivent etre enregistrées dans la classeur (Wb) lors de la fermeture ...

    bonne soiree
    michel

  16. #16
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Merci SilkyRoad, la Macro s'execute: Elle ouvre les fichiers et semble les enregistrer.
    Je dis "semble" car je le vois lorsque je l'exécute depuis le fichier "Bulletin"; mais je ne vois pas de mise à jour des champs appelant une donnée se trouvant dans les fichiers qui doivent s'ouvrir, s'enregistrer et se fermer.
    j'explique les liaisons:
    Un fichiers excel "élève" (la liste des noms d'élèves)
    Des fichiers "matières" (1 fichier matière par matière et par classe)
    1 fichier "bulletin" (1 fichier bulletin par classe)

    La liste élève dans les matières se met à jour en ouvrant le fichier bulletin de chaque classe et en executant la macro que je vous ai présenté. (sinon je suis obligé d'ouvrir chaque matière de chaque classe pour qu'une modification de nom ou de prénom prenne effet...).
    Lorsqu'un nom change, (ou un nouvel élève), sans faire cette mise à jour, le champs devant contenir les données affiche #N/A.

    Je suis certain que ça doit pouvoir fonctionner en Macro car avec l'enregistreur de Macro, ça fonctionne (bien que le code soit TRES long et n'a rien à voir en efficacité avec le code optimisé).
    Je ne comprend pas pourquoi ça ne fonctionne pas avec ce code optimisé car je vois (rapidement) l'enregistrement se faire mais les modifications ne sont pas prises en charge...
    J'ai regardé du côté de WorkBook / WorkSheet ...mais il semble que ce soit bien WorkBook qui soit nécessaire.

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je n'ai pas tout suivi mais si tu as un pb de mise à jour de données, avant enregistrement du fichier, essaie de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.calculate
    'ou
    Worksheets(NomFeuille).calculate
    'ou
    Worksheets(NomFeuille).Rows(NoLigne).Calculate
    Tu dis

  18. #18
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    Merci de ton aide, ouskel'n'or,
    ça semblait une bonne idée d'ajouter la fonction "calculate",
    mais, bien que ça semble recalculer, ça n'intègre pas les modifications dans le document "Bulletin" où se trouve la macro.

    Lorsque j'ouvre en manuel un document "matière", la modification est prise en compte.
    Lorsque j'ouvre avec la macro "enregistrement-auto-avec-code-non-optimisé" ça fonctionne aussi.
    Dois-je insérer un delay ? pour laisser le temps à la feuille de prendre en compte la modif (si ça va trop vite)...
    C'est surprenant pour moi: le code me semble bon est logique, il s'exécute à priori normalement, mais c'est comme si ça allait trop vite pour que le document "Bulletin" en tienne compte...

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Peux-tu montrer ton code tel qu'il est maintenant (après suppression de la ligne
    ActiveWorkbook.Save
    J'ai l'impression que tu ouvres le fichier suivant avant même que le précédent soit enregistré.
    Essaie de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        ActiveWorkbook.Close true
    DoEvents
        Workbooks.Open Filename:= _
            "D:\Bulletins\3ème\3ème EA-A\3ème EA-A Sciences Physiques.xls", _
              UpdateLinks:= 3
    DoEvents
        ActiveWorkbook.Close True
    DoEvents
        Workbooks.Open Filename:="D:\Bulletins\3ème\3ème EA-A\3ème EA-A Thème.xls", _
            UpdateLinks:=3
    DoEvents
        ActiveWorkbook.Close true
    'Etc...
    Tes macros se poursuivent même si une opération faisant appel au système n'est pas terminée. DoEvents est là pour retarder cette poursuite. regarde dans l'aide à DoEvents
    A+

  20. #20
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    J'ai honte !

    Je cherchais où était l'erreur dans le code alors qu'elle était dans le chemin du fichier...et donc ça actualisait une autre classe ...
    Je vous pris de m'en excuser.

    Donc tout est fonctionnel...la mise à jour se fait sans souci mais comme le fichier "Bulletin" se trouve dans le même chemin, il cherche à l'ouvrir à nouveau (je dois lui dire non en manuel). Est-il possible de faire une exception pour empêcher d'ouvrir et d'actualiser le fichier "Bulletin" qui est déjà ouvert ?

    mon code ceci:

    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
    Sub MAJ()
    '
    ' MAJfichiers Macro
    ' Macro enregistrée le 26/09/2006 par SH
    '
    ' Touche de raccourci du clavier: Ctrl+u
    '
    Dim Fichier As String
    Dim Chemin As String
    Dim Wb As Workbook
     
    Chemin = "D:\Bulletins\4ème\4ème EA-A"
    Fichier = Dir(Chemin & "\*.xls")
    Do While Fichier <> ""
        Set Wb = Workbooks.Open(Chemin & "\" & Fichier)
        '
        '
        '
        Application.Calculate
        Wb.Close False
        Set Wb = Nothing
        Fichier = Dir
    Loop
    End Sub

Discussions similaires

  1. [XL-2010] Renommer feuille sur un ensemble de fichiers .xls
    Par Steppingstone dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/02/2014, 17h24
  2. Ressortir des cellules d'un ensemble de fichiers XLS
    Par Invité dans le forum VBScript
    Réponses: 1
    Dernier message: 08/08/2012, 15h16
  3. Réponses: 2
    Dernier message: 19/12/2011, 18h20
  4. ouvrir, enregistrer et fermer un fichier xls
    Par kariboubou dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/07/2011, 10h59
  5. ouvrir un autre fichier excel d'un même dossier
    Par jbggg dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/11/2009, 10h44

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