Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lire un fichier ini

2 réponses
Avatar
philou.leduc
Salut,
Word 2000, Access 2000
j'ai un fichier Word (document principal) relié à une requête base de
données Access pour publipostage, jusque là c'est bon.
Mon problème : la base de données peut être n'importe où avec n'importe quel
nom, donc à l'ouverture du doc word des fois il ne la trouve pas.
Ce que je voudrais c'est faire un fichier texte, chemin.ini par exemple,
dans lequel on met le chemin et le nom de la base du style :
chemin_base=C:\app access\gestion app 2003 access 20.mdb
et qu'en ouvrant le fichier word il récupère cette information pour faire la
liaison.
Ce qu'il me faut :
1) Comment depuis word, lire le fichier chemin.ini et extraire 'C:\app
access\gestion app 2003 access 20.mdb'
2) Comment tester si ce fichier existe et si non, faire un formulaire, avec
un bouton 'parcourir' pour que l'utilisateur indique où est sa base et du
coup enregistrer ça dans le fichier chemin.ini pour la prochaine fois.

j'espère que c'est clair comme question. Si vous avez des solutions ou des
sites avec des exmples de ce type je suis preneur.

Merci d'avance

@+ Phil

2 réponses

Avatar
Guy Moncomble
Bonjour à tous,
dans le message : 3f0d4193$0$12456$,

| Salut,
| Word 2000, Access 2000
| j'ai un fichier Word (document principal) relié à une requête base de
| données Access pour publipostage, jusque là c'est bon.
| Mon problème : la base de données peut être n'importe où avec
| n'importe quel nom, donc à l'ouverture du doc word des fois il ne la
| trouve pas.
| Ce que je voudrais c'est faire un fichier texte, chemin.ini par
| exemple, dans lequel on met le chemin et le nom de la base du style :
| chemin_base=C:app accessgestion app 2003 access 20.mdb
| et qu'en ouvrant le fichier word il récupère cette information pour
| faire la liaison.
| Ce qu'il me faut :
| 1) Comment depuis word, lire le fichier chemin.ini et extraire 'C:app
| accessgestion app 2003 access 20.mdb'

http://faq.vb.free.fr/index.php?question2
http://www.henri-ruch.ch/VB/articles/iniediteur/Editeu%20ini.asp
http://www.vbfrance.com/article.aspx?Valƒ22
http://www.cathyastuce.com/vba/codefichierini.htm

| 2) Comment tester si ce fichier existe et si non, faire un
| formulaire, avec un bouton 'parcourir' pour que l'utilisateur indique
| où est sa base et du coup enregistrer ça dans le fichier chemin.ini
| pour la prochaine fois.


Plus haut quelques liens pour la lecture et l'écriture dans un fichier
ini.
Pour ma part, je trouve tout cela superflu. En effet, de deux choses
l'une :
- tu sais où est ta base et dans ce cas il est préférable d'utiliser
l'assistant fusion pour l'indiquer à word. A l'ouverture suivante si le
fichier n'a pas bougé (!), la base sera liée au document.
- word ne sais pas où est la base. Dans ce cas point n'est besoin de
formulaire avec un bouton parcourir : l'assistant fusion sait le faire
tout aussi bien et même mieux. Une fois la base retrouvée, on est ramené
au cas précédent.
Mais j'ai peut-être loupé quelque chose !!!
--
A+

GMO MVP Word

Avant tout aller voir http://faq.ms.word.free.fr/index.htm,
puis si vous avez Word2002 :
http://support.microsoft.com/default.aspx?scid=KB;FR;322743.
Pas de discours, de la méthode.
Avatar
Jean-Yves Pierres
Bonsoir
Ci joint le code qui répond à tes questions
'---------------------------------------------------------------------------
------------
'Pour un démarrage automatique code à mettre dans le module thisDocument de
ton document maitre
Public Sub AutoExec() 'autoexec fonctionnne avec word 2000 pas avec word 97
sous NT
Call mdbFileInit
End Sub
'---------------------------------------------------------------------------
------------
'routine d'init à compléter pour tes besoins
Public Sub mdbFileInit()
Dim sstr As String
'...Lecture donnée dans fichier MonFichierInit.ini du repertoire
c:windows
sstr = System.PrivateProfileString("MonFichierInit", "Default",
"chemin_base")
If (Len(sstr) = 0) Then 'test existance donnée
sstr = get_File("") ' affichage boite de dialogue
If (Len(sstr) <> 0) Then 'test pour sauvegarde
System.PrivateProfileString("MonFichierInit", "Default",
"chemin_base") = sstr
End If
End If

End Sub
'---------------------------------------------------------------------------
------------
'Affiche la boite de dialogue fichier
Function get_File(Chemin As String) As String
' Macro écrite par Guy Moncomble
Dim MyDialog As Dialog, RetourDial As Integer
Dim Chold As String

Chold = CurDir
On Error Resume Next
ChDrive Left(Chemin, 2)
ChDir (Chemin)

MyDialog.Title = "Sélectionner les fichiers à concaténer"

Set MyDialog = Dialogs(wdDialogFileOpen)
MyDialog.Name = Chemin & ""

RetourDial = MyDialog.Display

If RetourDial = -1 Then
get_File = CurDir & "" & MyDialog.Name
Else
get_File = ""
End If
ChDir (Chold)
End Function
'---------------------------------------------------------------------------
------------

En espérant que ce code répond à tes qusetions

Cordialement

Jean-Yves Pierrès


"philou.leduc" a écrit dans le message news:
3f0d4193$0$12456$
Salut,
Word 2000, Access 2000
j'ai un fichier Word (document principal) relié à une requête base de
données Access pour publipostage, jusque là c'est bon.
Mon problème : la base de données peut être n'importe où avec n'importe
quel

nom, donc à l'ouverture du doc word des fois il ne la trouve pas.
Ce que je voudrais c'est faire un fichier texte, chemin.ini par exemple,
dans lequel on met le chemin et le nom de la base du style :
chemin_base=C:app accessgestion app 2003 access 20.mdb
et qu'en ouvrant le fichier word il récupère cette information pour faire
la

liaison.
Ce qu'il me faut :
1) Comment depuis word, lire le fichier chemin.ini et extraire 'C:app
accessgestion app 2003 access 20.mdb'
2) Comment tester si ce fichier existe et si non, faire un formulaire,
avec

un bouton 'parcourir' pour que l'utilisateur indique où est sa base et du
coup enregistrer ça dans le fichier chemin.ini pour la prochaine fois.

j'espère que c'est clair comme question. Si vous avez des solutions ou des
sites avec des exmples de ce type je suis preneur.

Merci d'avance

@+ Phil