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 :

ouverture, execution, sauvegarde et fermeture de classeurs à partir d'un classeur


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut ouverture, execution, sauvegarde et fermeture de classeurs à partir d'un classeur
    Bonjour

    je voudrais ouvrir, sauvegarder et fermer des claseurs (asc1.xls, asc2.xls,...) à partir d'une macro qui serait dans un autre classeur source (fiches) qui comtient tout les liens hypertext des claseurs à ouvrir dans les cellules "E2:E201"

    en effet chacun de ces classeur execute une macro avant la sauvegarde, ce qui me permettra de mettre à jour une base de donnée

    merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Tous tes classeurs (asc1.xls, asc2.xls...) se trouvent dans un même dossier ou dans des dossiers différents.

    S'ils sont dans le même dossier tu peux par exemple faire un parcours sur tous les fichiers présents dans ton dossier.

    Sinon s'ils sont pas dans un même dossier :

    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
    Dim Classeur as Workbook
     
    i = 2
     
    While i <> 202
     
      CheminDuClasseur = Cells(i,5)
      Set Classeur = Workbooks.Open(Filename:=CheminDuClasseur)
      Classeur.Activate
     
      ' SI TU AS UN TRAITEMENT A FAIRE DANS LE CLASSEUR TU LE FAIS ICI
     
      Classeur.save
      Classeur.close
     
      i = i + 1
     
    Wend

  3. #3
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Hello,

    Voic un brin de code pour ouvrir sauvegarder et fermer un fichier. Il ne te restera plus qu'a inserer tout cela dans une boucle qui recupere les noms de tes fichiers dans la feuille de ton classeur source ( e2:e201).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Chemin = "R:\Folder\"
     
     
        ChDir Chemin
        ActiveWorkbook.SaveAs Filename:= _
            Chemin & "\nomdufichier".xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
    ActiveWorkbook.Save
     
        ActiveWindow.Close
    Bonne programmation

    Drost

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hkpsyco Voir le message
    Bonjour,

    S'ils sont dans le même dossier tu peux par exemple faire un parcours sur tous les fichiers présents dans ton dossier.
    comment fait on pour parcourir un dossier????, en effet ils sont tous dans un même dossier.

    par contre je veux qu'ils soient ouvert, sauvegarder et fermer l'un après l'autre, je ne sais pas si le parcours de dossier fonctionnera ainsi...

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 66
    Points
    66
    Par défaut
    Oui le parcours du dossier fonctionne à merveille.

    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
    Dim CheminDuRepertoire As String
    Dim objFSO, objDossier, objFichier
    On Error Resume Next
     
    CheminDuRepertoire = "tu mets ici le chemin absolue de ton répertoire"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objDossier = objFSO.GetFolder(CheminDuRepertoire)
     
    If (objDossier.Files.Count > 0) Then
      For Each objFichier In objDossier.Files
        If (InStr(1, objFichier.Name, ".xls", 1) > 0) Then
          ' ICI TU FAIS TON TRAITEMENT, Tu ouvres le classeur avec la méthode que je t'ai donné précedement allez je suis gentil, je te donne une ébauche
          Set Classeur = Workbooks.Open(Filename:=CheminDuRepertoire & "\" & objFichier.Name)
          Classeur.Activate ' Tu actives ton classeur pour pouvoir faire des traitements dedans
          ' SI TU AS UN TRAITEMENT A FAIRE DANS LE CLASSEUR TU LE FAIS ICI
          Classeur.save ' Tu sauvegardes ton classeur
          Classeur.close ' et tu fermes ton classeur
     
        End if
      Next
    Else
      MsgBox ("Il n'y a aucun fichier dans ce répertoire !")
    End If
     
    Set objDossier = Nothing
    Set objFSO = Nothing
    Voila normalement avec ça tout devrait bien se passer. Si je récapitule, ce code va donc ouvrir un par un les fichiers Excel d'un dossier, faire de l'execution si demandez, sauvegarder, puis fermer. C'est bien ce que tu veux ? allez ciao !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    merci beaucoup, je teste cela au plus vite et vous tiens informé.

    merci

  7. #7
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello hkpsyco,
    Je reconnais que ton code est très beau, si si ! mais il y a plus simple
    Tu sélectionnes ton code, en mode d'édition, et tu fais un clic sur l'icône # en haute de la fenêtre.
    Bonne soirée

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    le code fonctionne à merveille sauf que j'ai des liens entre mes classeurs, donc ca beug car ça me demande si je veux mettre à jour mes liaisons.

    avez vous une commande qui permmet de dire mettre à jour automatiquement ces liaisons de manière à ce que la macro ne s'arrête pas en plein milieu à chaque classeur???

    merci de votre aide

  9. #9
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 66
    Points
    66
    Par défaut
    Merci du conseil ouskel'n'or ^^ Je vais essayer ton astuce lorsque j'aurai l'occasion

    Alors mephistos123, si tu ne veux pas que ton programme te demande de mettre à jour tes liens et que tu veux le faire toi même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.AskToUpdateLinks = False
    ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
    Voila, la première ligne désactive la fenêtre qui te demande de mettre à jour ton classeur et la deuxième ligne met à jour toutes les liaisons du classeur actif. A toi d'adapter le tout maintenant

Discussions similaires

  1. Sauvegarde et fermeture d'un classeur créé à partir d'un autre
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/02/2014, 10h14
  2. Construire un classeur à partir d'autres classeurs
    Par Aussie44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/07/2013, 08h46
  3. Réponses: 15
    Dernier message: 23/05/2013, 20h33
  4. [XL-2010] Mise à jour d'un classeur à partir d'autres classeurs
    Par Yauuch dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/08/2012, 18h05
  5. Réponses: 1
    Dernier message: 13/03/2009, 14h08

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