Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/05/2007, 10h26   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 12h52   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
http://word.developpez.com/faqtemp/?...emplacer_macro
une piste
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 15h45   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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.
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 15h57   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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.
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 18h42   #5
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 ?
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 10h15   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 14h03   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Regarde à Dialogs, dans l'aide.
A+

Tiens pour la syntaxe
Code :
    Application.Dialogs.Item(wdDialogFileOpen).Show
Pour te placer dans le bon répertoire :
Code :
ChDir "C:\Mes docs\Mes Fich\"
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 15h10   #8
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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)?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 10h39   #9
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 12h06   #10
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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.
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h42   #11
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 15h13   #12
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tiens, comme je ne suis pas rancunier, avec dir, tu peux remplir une liste de fichiers placée dans un userform avec ça
Code :
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 :
1
2
Rep = (GetAttr(Chemin + Listrep + "\" + NomRep) And vbDirectory) = vbDirectory
If Rep Then
+ Me.ListRep.Additem NomRep (!)
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 16h00   #13
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Ok merci pour cette abondance de solutions.
Je teste et dis quoi
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h07   #14
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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 :
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?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h52   #15
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
Ç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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 12h03   #16
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2007, 10h54   #17
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 09h28   #18
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
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?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 10h00   #19
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 10h08   #20
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h16.


 
 
 
 
Partenaires

Hébergement Web