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 :

imprimer tous les fichiers d'un dossier


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut imprimer tous les fichiers d'un dossier
    Bonjour le forum

    Je recherche un code vba pour imprimer tous les fichers d'un dossier sans les ouvrir :

    - Un dossier (FEUILLES PREPA) qui contient 80 fichiers
    - Un fichier qui doit contenir la macro IMPRIMER FEUILLES PREPA

    Opération sur sur chaque fichier du dossier :
    1 mise à jour des liaisons
    2 Colonne A : "non vide"
    3 imprimer

    Et je ne suis pas très doué en vba
    Alors si un pro pouvait me rendre ce petit service ce serait génial

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Citation Envoyé par jerome39 Voir le message
    ...imprimer tous les fichers d'un dossier sans les ouvrir :
    Tu veux dire: sans les ouvrir manuellement? Parce qu'il faudra bien les ouvrir pour les mises à jour et l'impression

    Citation Envoyé par jerome39 Voir le message
    Opération sur sur chaque fichier du dossier :
    1 mise à jour des liaisons
    2 Colonne A : "non vide"
    3 imprimer
    Que souhaites-tu réaliser au point 2?

    Citation Envoyé par jerome39 Voir le message
    - Un dossier (FEUILLES PREPA) qui contient 80 fichiers
    Peux-tu préciser ce qui est en gras?

    Citation Envoyé par jerome39 Voir le message
    - Un fichier qui doit contenir la macro IMPRIMER FEUILLES PREPA
    Pourquoi un fichier différent? Il ne contiendrait que le code?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonsoir Pierre
    Oui sans doute que dans la macro il faudra ouvrir chacun des fichiers pour :
    1 effectuer une mise à jour des liaisons de chacun des fichiers, sinon ils seront vides !
    2 Dans chaque fichier il y a un filtre automatique sur la colonne A qui doit être appliqué avant l'impression sinon il y aurait + de 7 pages vides imprimées
    3 Dans un dossier que j'ai nommé "FEUILLE DE PREPA" les 80 fichiers sont regroupés du type "4temps FEUILLE PREPA" (effacé) et je souhaite que ma macro parte d'un autre fichier hors dossier nommé "impression" qui pilote déjà toute une serie d'applications et s'applique sur le 80 fichiers du dosiier FEUILLE DE PREPA.
    Cette dernière que je recherche désespérement doit boucler une application excel de commandes de repas qui ma pris 1 an (4,6Go de formules).

    cela pourrait donner :

    -ouvrir le dossier X
    -ouvrir le premier fichier du dossier X
    -mettre a jour les liaisons
    -effectuer filtre automatique sur la colonne A : "non vide"
    -imprimer
    -faire la meme operation sur chaque fichier du dossier X

    Voila je suis à la disposition de toute personne qui souhaite venir à mon aide pour toute explications.

    Jérôme

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 903
    Points
    55 903
    Billets dans le blog
    131
    Par défaut
    Même sans être doué en VBA, tu peux réaliser une série d'étapes par toi-même:
    - Bien définir ton besoin
    - Identifier les données en place et leur organisation
    - Décortiquer les étapes par lesquelles tu dois passer
    - Ecrire la logique que tu vas mettre en place

    Essaie dans un premier temps, par rapport à une liste de fichiers se trouvant dans une feuille, de voir comment tu pourrais parcourir cette liste pour ouvrir un fichier puis le fermer. Tu pourras alors insérer l'impression. Ensuite, sur un fichier test, via l'enregistreur, vois comment tu peux filtrer sur A, ...

    Indices:
    Programme en pensant objet. Par exemple, pour manipuler un classeur, tu peux utiliser une variable de type Workbook. Ainsi, tu peux exploiter toutes les propriétés et méthodes de ce type d'objet



    L'explorateur d'objets (F2 lorsque tu es dans l'éditeur VBA) de donne la liste des propriétés et méthodes pour un objet particulier


    Avec cela, tu peux te lancer, et revenir ici pour les problèmes ponctuels que tu rencontreras...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut c'est ma premiere macro...
    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
     
    Sub IMPRIMER_FEUILLES_PREPA()
     
    Const chemin = "F:\COMMANDES C&A SEM51\SEMAINE 51\FEUILLES PREPA"
    Dim Fich As String
    Dim OldStateAskToUpdateLinks As Boolean
    'On Error GoTo Erreur
    If ThisWorkbook.Path = DOSSIER Then
      MsgBox "Ne pas mettre le classeur contenant le programme dans le dossier " & DOSSIER
      Exit Sub
    Fich = Dir(chemin & "*.xls")
    Do While Fich <> ""
    Workbooks.Open chemin & Fich
     
    With Application
      OldStateAskToUpdateLinks = .AskToUpdateLinks
      .AskToUpdateLinks = False
      .DisplayAlerts = False
      .ScreenUpdating = False
    End With
    Selection.AutoFilter Field:=1, Criteria1:="<>"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Workbooks(Fich).Close True
    Fich = Dir
    Loop
    With Application
      .AskToUpdateLinks = OldStateAskToUpdateLinks
      .DisplayAlerts = True
      .ScreenUpdating = True
    End With
    End Sub

    Il doit y avoir des erreurs énormes. C'est comme si je tentais une démonstration en Japonais avec comme seule aide un dictionnaire.

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour,
    essaie ceci (en corrigeant ton 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Public Sub IMPRIMER_FEUILLES_PREPA()
     
    Dim wbk As Workbook, awbk As Workbook
    Dim Fich As String
    Dim OldStateAskToUpdateLinks As Boolean
    Const chemin = "F:\COMMANDES C&A SEM51\SEMAINE 51\FEUILLES PREPA"
     
    If ThisWorkbook.Path = chemin Then
      MsgBox "Ne pas mettre le classeur contenant le programme dans le dossier " & chemin
      Exit Sub
    End If
     
    Set awbk = ThisWorkbook
    Fich = Dir(chemin & "\*.xls")
    Do While Fich <> ""
        Set wbk = Workbooks.Open(chemin & "\" & Fich)
     
        With Application
          OldStateAskToUpdateLinks = .AskToUpdateLinks
          .AskToUpdateLinks = False
          .DisplayAlerts = False
          .ScreenUpdating = False
        End With
        wbk.Sheets(1).Cells.AutoFilter Field:=1, Criteria1:="<>"
        wbk.Sheets(1).PrintOut Copies:=1
        wbk.Close
        Set wbk = Nothing
        Fich = Dir
    Loop
    With Application
      .AskToUpdateLinks = OldStateAskToUpdateLinks
      .DisplayAlerts = True
      .ScreenUpdating = True
    End With
    Set awbk = Nothing
    End Sub
    Edit: Correction cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       wbk.Sheets(1).Cells.AutoFilter Field:=1, Criteria1:="<>"
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut imprimer tous les fichiers d'un dossier
    Bonjour mercatog et merci beaucoup pour ton aide je me sentais vraiment seul sur ce coup là.

    Le code bug juste à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbk.Sheets(1).AutoFilter Field:=1, Criterial:="<>"
    => Argument nommé introuvable
    L'argument nommé n'apparait pas dans la définition de cette procédure

    J'avais ecris cette ligne avec l'enregitreur de macro et ca ne doit pas convenir dans cette configuration. Qu'est ce que tu en penses?

    Jérôme

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Désolé,
    je n'ai pas ton fichier de test
    il fallait peut-etre ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    On error resume next
    wbk.Sheets(1).Cells.AutoFilter Field:=1, Criteria1:="<>"
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    je n'en reviens pas ====> ca marche !!!

    Enorme merci mercatog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Supprimer tous les fichiers d'un dossier
    Par nitrous007 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 05/09/2015, 11h17
  2. Réponses: 16
    Dernier message: 30/07/2013, 00h05
  3. Réponses: 4
    Dernier message: 29/08/2006, 18h02
  4. Réponses: 5
    Dernier message: 18/01/2006, 14h05
  5. [LG] Accéder à tous les fichiers d'un dossier
    Par arno15 dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2005, 10h18

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