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

VBA Word Discussion :

[VBA-Word] appliquer une macro sur un groupe de document


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut [VBA-Word] appliquer une macro sur un groupe de document
    Bonjour.
    J'ai actuellement une macro qui fonctionne bien mais qui impose qu'on la lance à partir de chaque document, ce qui la rend pénible quand on a plus de 50 documents et donc plus de 50 fois la macro à lancer.
    Je voulais donc savoir s'il est possible de construire une boite de dialogue de navigation (j'ai cru en voir une trace dans les tutoriels de ce site) type explorer et de lancer la macro sur un groupe de fichier soit en sélectionnant les fichiers soit en sélectionnant le dossier les contenant.
    Si c'est possible, peut-on m'aider à rédiger le code?

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Peut-être suis-je aveugle ou n'ai pas su suivre ce que tu m'as indiqué mais, bien que j'ai trouvé deux ou trois trucs utiles pour d'autres applications ou pour celle-ci, rien ne me renseigne sur que je cherche à faire.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Et il y a aussi que je ne trouve pas les contrôles DriveListBox, DirListBox et FileListBox pourtant utilisé dans le tutoriel 9.
    J'ai MVB 6.3.

  5. #5
    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 543
    Points
    15 543
    Par défaut
    Je n'ai pas tout compris... Tes 50 docs sont ouverts ? Tu les ouvres au fur et à mesure ? Tu les sélectionnes ?
    A+
    PS - Tu as quelle version d'Office ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    J'ai office 2000, et je souhaiterais rendre la macro applicable sur 2000 et 2003.
    Les 50 documents ne sont pas ouverts, mais il peut arriver que deux ou trois d'entre eux le soit pour les rédiger.
    J'aimerais pouvoir lancer la macro juste en sélectionnant dans une boite de dialogue comme celle construite dans le tutoriel n°9 de ce site (bien que je ne trouve pas les commandes DriveListBox, DirListBox et FileListBox):
    - soit les fichiers uns par uns,
    - soit le dossier les contenant.
    Peux-tu m'aider?

  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 543
    Points
    15 543
    Par défaut
    Regarde à Dialogs, dans l'aide.
    A+

    Tiens pour la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Dialogs.Item(wdDialogFileOpen).Show
    Pour te placer dans le bon répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChDir "C:\Mes docs\Mes Fich\"
    A+

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Bon, tu as le droit de te moquer de moi mais avec la recherche on sort complètement du tutoriel sur lequel je me basais énormément.
    Ne peut-on pas faire apparaitre les contrôles pour créer la boite de dialogue?
    Et la recherche de dialogs dans l'aide ne m'indique pas comment je dois procéder, sachant que la sélection de fichiers sera soumise à une macro spécifique.
    Peux-tu me dire quel code alors me permettrait de faire que sur cette sélection, dans l'ordre de ces documents, on applique la macro (ouvrir sans rendre visible/instructions/fernmeture)?

  9. #9
    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 543
    Points
    15 543
    Par défaut
    Ok. Et d'abord, je ne me moque en aucune façon. J'essaie de cerner ton problème.
    Tu veux pouvoir sélectionner des fichier dans un répertoire. Je crois que j'ai compris ça.
    Tu sembles vouloir les sélectionner par soft. Ce que je n'avais pas compris.
    Ce qu'il serait intéressant de savoir serait de connaître tes critères de sélection. Pas en détail mais la méthode.
    Ça peut-être selon le nom, une partie du nom, une date dans le nom... etc.
    ou tout autre.
    Pourquoi est-ce intéressant ? Parce que si c'est par le nom, tu n'as pas besoin de la liste. Par contre, si c'est par un bout du nom, je ne vois dans l'immédiat que la solution de parcourir la liste de tes fichiers et donc de créer une liste.
    Voilà. Tu sais tout de mes interrogations quant à la réponse qu'on pourrait t'apporter.
    A+

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Si tu veux, j'ai plusieurs groupes de dossiers constitués à peu près pareil (on les appellera groupe1, ..., groupeN).
    Dans chaque groupe, j'ai à chaque fois la même composition de dossiers (bilans, rapports, etc.).
    Dans chaque dossier, j'ai des documents Word qui reprènent le nom du dossier + un numéro (bilans00, ..., bilansN).

    Cela fait un énorme choix de documents, sachant que j'aurais aimé si possible que, par exemple, on puisse choisir les documents bilansI du groupeJ sur lesquels on veut appliquer la macro.
    C'est pourquoi j'avais pensé faire une boîte de dialogue, comme celle présentée dans le tutoriel 9, très simple d'utilisation, qui permet de réaliser ce que je viens d'écrire plus haut.

    Mais cela soulève deux questions:
    -lorsque je veux réaliser ma boîte de dialogue dans MVB, je n'ai pas les boutons de contrôle utilisés dans le tutoriel,
    -Je ne connais pas le code qui permet de dire qu'avec cette sélection de documents, on exécute les instructions.

    Voilà, c'est un peu long mais j'espère être compréhensible. Dis-moi si tu peux m'aider.

  11. #11
    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 543
    Points
    15 543
    Par défaut
    Regarde , tu as une méthode pour lister tous les sous-rep et fichiers de sous-rep. Si nécessaire, tu places les uns et les autres dans des listbox, la sélection d'un sous-rep dans la liste affichant les fichiers de ce sous-rep dans l'autre liste.
    Tu peux faire la même chose avec Dir. Tu as un paramètre à changer pour passer de la liste des répertoires (vbdirectory) à celle des fichiers (vbnormal)

    Edit
    Post nettoyé pour mon plus grand bien

  12. #12
    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 543
    Points
    15 543
    Par défaut
    Tiens, comme je ne suis pas rancunier, avec dir, tu peux remplir une liste de fichiers placée dans un userform avec ça
    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
    Sub ListeDesFichiers(Chemin, Listrep)
    Dim Fich as boolean, NbreFich, NomFich
        ListFich.Clear
        ' Affiche les noms du répertoire \secrétariat
        ' Extrait la première entrée.
        NomFich = Dir(Chemin + Listrep + "\", vbNormal)
        Do While NomFich <> ""   ' Commence la boucle.
            ' Ignore le répertoire courant et le répertoire
            ' contenant le répertoire courant.
            If NomFich <> "." And NomFich <> ".." Then
                ' vérifier que NomFich est un fichier
                Fich = (GetAttr(Chemin + Listrep + "\" + NomFich) And vbNormal) = vbNormal
                If Fich Then
                    NbreFich = NbreFich + 1
                    ' Affiche l'entrée uniquement si elle
                    Me.ListFich.AddItem LCase(NomFich)
                End If  ' représente un répertoire.
            End If
            NomFich = Dir    ' Extrait l'entrée suivante.
        Loop
     
    End Sub
    Il me semble bien qu'en 1997 j'avais pris ça dans l'aide
    Pour les répertoires du répertoire fourni en paramètre, c'est la même chose en corrigeant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rep = (GetAttr(Chemin + Listrep + "\" + NomRep) And vbDirectory) = vbDirectory
    If Rep Then
    + Me.ListRep.Additem NomRep (!)

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Ok merci pour cette abondance de solutions.
    Je teste et dis quoi

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Ok j'ai testé les solutions que tu m'as proposé (désolé j'y ai mis le temps).
    Une d'entre elle ne fait que lister les fichiers d'un répertoire.
    La dernière ne fonctionne pas car dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ListFich.AddItem LCase(NomFich)
    le "me" semble poser problème.
    Ce que j'aurais voulu faire, c'est une boite de dialogue qui fonctionne comme un exploreur, dans lequel on navigue dans les disques et les répertoires, puis dans une fenêtre de cette boite de dialogue apparaissent chaque fichier du dossier (comme avec explorer). On peut ainsi sélectionner les fichiers que l'on souhaite et, en cliquant sur un CommandButton, on lance la macro sur les fichiers sélectionnés.
    Est-ce possible?

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Ça fait beaucoup de questions en une fois, d'autant plus que c'est possible mais pas simple à faire et en plus pas avec la technologie Word, mais avec Access ou Excel.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  16. #16
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Ou alors peut-on réaliser cette macro en créant un programme à part ("compilé"?), qui fonctionnerait bien évidemment avec mes .doc et qui me permettrait de réaliser ce qui se trouve dans le tutoriel n°9?

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Je résume pour être sûr de comprendre
    Tu veux pouvoir sélectionner plusieurs fichiers dans plusieurs répertoires, et ce simultanément. Si c'est ça, j'ai eut-être une "solution".
    Question subsidiaire : Veux-tu les ouvrir ?
    A+

  18. #18
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Salut.
    Tu as compris, que ce soit des fichiers contenus deans un ou plusieurs répertoires, le tout c'est que l'on puisse naviguer un peu comme dans explorer, sans nécessairement ouvrir ces fichiers (certains répertoires en contiennent plus de 400...)
    Tu penses pouvoir m'aider?

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Une solution, oui, mais ça risque fort d'être une usine à gaz. L'enjeu en vaut-il "vraiment" la peine ?
    Consiste à Créer une première liste des lecteurs.
    La sélection entraine l'affichage des répertoires dans une seconde liste
    La sélection d'un répertoire entraine la mémorisation du répertoire parent et le remplacement de la liste par celle du sous répertoire, etc.
    Un bouton permet de retourner vers le répertoire parent.
    Pour chaque répertoire, une troisième liste affiche les fichiers contenus.
    Enfin, la sélection d'un fichier ajoute son nom à une colonne dans une feuille de calculs ou à un tableau ou à une quatrième liste, noms, liste ou tableau que tu pourras utiliser pour jouer avec.
    Le problème : "sélectionner sans les ouvrir"
    Le principe, tu l'as.
    Le code : toujours le même.
    Pour chaque niveau de répertoire, une variable indexée indiquant le répertoire parent.
    Pour sélectionner un répertoire, tu as Chdir.
    Pour les lecteurs, ChDrive
    Il est fort possible qu'un gugus défoncé au crack ait déjà fait ça. S'il passe par là, tu peux être certain qu'il n'hésitera pas à te mettre ça
    Bon courage, et si tu réalises ça, n'hésite pas à mettre ton code

  20. #20
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Tu peux aussi le faire à l'aide des API, notre maître API a sa page ici
    Mais comme on te l'explique, ça va devenir une usine à Gaz.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/02/2011, 14h14
  2. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 10h21
  3. (VBA-Word) Temporiser une macro
    Par Cercle dans le forum VBA Word
    Réponses: 9
    Dernier message: 04/11/2007, 22h24
  4. [VBA-E] Comment appliquer une macro sur plusieurs cellules
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/01/2007, 10h54
  5. [VBA-E]Lancer une macro sur changement de valeur cellule ?
    Par jeremiegrenoble dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2006, 14h22

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