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 19/06/2007, 09h25   #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] chemin de fichiers

Bonjour,

j'aimerais utiliser le code suivant pour ouvrir un fichier:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
    FichierAOuvrir = "récapitulatif.doc"
 
    With Word.Documents.Application.FileSearch
        .FileName = FichierAOuvrir
        .LookIn = Documents.Application.ActiveDocument.Path
        .Execute
        a = .FoundFiles.Count
        If a <> 0 Then
            i = a
            Word.Application.Documents.Open (.FoundFiles.Item(a))
 
        End If
    End With
et j'aimerais qu'à la place de

Code :
Documents.Application.ActiveDocument.Path
la macro aille chercher le fichier récapitulatif dans un dossier faisant partie du même répertoire que le dossier de Active.Document.

Pour être plus clair, j'ai un dossier (dossier1) contenant une dixaine d'autre dossiers.
Dans l'un de ces dix dossiers, j'ai Active.Document, dans un autre (dossier2) j'ai récapitulatif.doc.
Je voudrais connaître le code qui indique à ma macro qu'il faut aller chercher récapitulatif.doc dans dossier2, contenu dans dossier1 où se situe Active.Document.
J'espère être suffisamment clair, comme ça, dès le matin je sais que c'est dur.
Mais si vous pouvez m'aidez...
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 09h31   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 353
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 353
Points : 29 268
Points : 29 268
Si c'est toujours Dossier2, il suffit de l'ajouter au Path obtenu.

Code :
chemin = Documents.Application.ActiveDocument.Path & "dossier2\"
__________________
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 19/06/2007, 10h40   #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
Le code que tu m'as donné ne fonctionne pas.
J'ai l'impression qu'il considère que récapitulatif.doc se situe dans le même dossier que Active.Document, alors qu'il est dans un autre dossier (c'est lui dossier2), les deux contenus dans un troisième dossier (dossier1).
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 10h52   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 353
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 353
Points : 29 268
Points : 29 268
En fait, je n'ai pas regardé ton code plus en détail.

Il faut que ton document soit sauvé, pour qu'il ait un path et c'est :

Pour obtenir le chemin du document,

Code :
chemin = activedocument.path & "\dossier2\récapitulatif.doc"
__________________
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 19/06/2007, 11h09   #5
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
mais ne renvoie-t-il pas au fichier où se situe Active.Document?
Si oui, comment alors peut-on atterir au dossier précédent:
Exemple C:/dossier1/dossier3/ est le path de Active.Document (Active.Document est compris dans dossier3).
Comment simplement arriver à dossier1?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 11h16   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 353
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 353
Points : 29 268
Points : 29 268
la première était la bonne tu as raison

Code :
1
2
3
4
5
6
7
Sub testchemin()
Dim chemin As String
 
chemin = Documents.Application.ActiveDocument.Path & "\dossier2\"
Debug.Print chemin
 
End Sub
Me donne :
Code :
C:\Documents and Settings\users\My Documents\dossier2\
Il te reste à concatener le nom du document. avec ce chemin
__________________
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 19/06/2007, 11h38   #7
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
Attends, cela veut dire que ton Application est dans dossier2?
Comment arriver à ce qu'il s'arrête à My documents, que je puisse ajouter le nom du dossier de récapitulatif? (à moins que c'est ce que tu voulais dire par concatener, mais excuse moi je ne sais pas ce que ça veut dire )
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 13h00   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 353
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 353
Points : 29 268
Points : 29 268
Concaténer, c'est une addition de texte ainsi, x & y donnera xy et 1 & 2 = 12

Code :
chemin = Documents.Application.ActiveDocument.Path & "\dossier2\" & "récapitulatif.doc"
donne
Code :
C:\Documents and Settings\users\My Documents\dossier2\récapitulatif.doc
En considérant que tu auras toujours dossier2 comme sous répertoire.

Dans la ligne que je donne, mon document est directement dans mes documents.
__________________
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 19/06/2007, 13h58   #9
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 compris.
Mais maintenant imagine que ton document se trouve dans dossier3 contenu dans my documents et que tu veilles ouvrir récapitulatif situé dans dossier2 lui aussi dans my documents. Peut-on encore utiliser la ligne de commande:
Code :
chemin = Documents.Application.ActiveDocument.Path & "\dossier2\" & "récapitulatif.doc"
?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 14h49   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 353
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 353
Points : 29 268
Points : 29 268
C'est bien ce que j'avais expliqué, il faut que la structure soit la même pour tous les répertoires.
__________________
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 19/06/2007, 15h15   #11
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
Donc impossible de réaliser ce que je veux?

N'est-il pas possible de créer un code qui, à partir de ton code:
Code :
chemin = Documents.Application.ActiveDocument.Path & "\dossier2\" & "récapitulatif.doc"
prenne le résultat comme texte, supprime ce qui nous intéresse pas et, via la concaténation, permette de rajouter le dossier convoité?
C'est pas joli joli mais si ça peut marcher...

Et dans la foulée, comment puis-je connaître le chemin du modèle dont est issu le fichier que je rédige?

Et aussi lorsque j'ai un chemin du type mes documents/dossier2 sous forme de texte, quel code me permettrait de supprimer dossier2 ou tout texte jusqu'au /
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 17h36   #12
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 j'ai une solution.
Pour que ma macro fonctionne, j'ai juste besoin de ton aide pour selectionner "chemin", afin d'utiliser le code suivant:

Code :
Selection.MoveLeft Unit:=wdCharacter, Count:=16, Extend:=wdExtend
comme ça chemin devient une partie du Path de Active.Document et peut être concaténé.
Allez, stp, on touche au but!!
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 18h54   #13
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
Pour connaître le chemin du modèle, tu as plus simple
Code :
1
2
3
Set LeModel= ActiveDocument.AttachedTemplate
MsgBox LeModel.Path & Application.PathSeparator _
    & LeModel.Name
Tout droit issu de l'aide en ligne
Mais j'ai peut-être mal compris ton pb
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 09h49   #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
Super jeme suis inspiré de ton code et de celui que tu m'as aidé à développer juste avant.
Je voudrais juste savoir si Lemodel doit être dimensionné comme String, car j'ai un message d'erreur disant: objet requis.


Ok autant pour moi, je suis tombé sur l'aide et j'ai vu que c'est un variant.
Encore une fois merci beaucoup, ça marche nickel chrome
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h11.


 
 
 
 
Partenaires

Hébergement Web