Fusion et sélection de fichier

Le
Gloops
Bonjour tout le monde,

En ouvrant une source de données (Excel) comme suit sous Word 2003 pour=

créer une fusion (pour présenter automatiquement chaque enregistremen=
t
sur une page), je me ramasse une erreur 5121 lors de l'ouverture de
fichier sur l'instruction Merge, on me propose de vérifier les
autorisations du fichier/lecteur, vérifier que la mémoire et l'espace=

disque sont suffisants, ou ouvrir le fichier avec le convertisseur
Récupération de texte.

Si je fais la même chose à la main la fusion se fait bien.

J'imagine que j'ai commis une bourde ?

Pour la sélection du fichier par l'utilisateur, serait-ce une meilleure=

idée de passer par l'API ? ça a priori ça marche, mais si Microsoft=

s'est donné le mal de fournir des boîtes de dialogue dans Word,
j'imagine que la moindre des choses avant de faire appel aux API est de
vérifier que ça apporte vraiment un plus. C'est gentil wdDialogFileOp=
en,
mais ça ouvre le fichier, plutôt que de le sélectionner. Ou j'ai ou=
blié
une astuce ?


Public Sub CreationFusion()
Dim strCheminFichier As String
strCheminFichier = SelFichier()
ActiveDocument.Merge FileName:=strCheminFichier
End Sub


Public Function SelFichier()
Dialogs(wdDialogFileOpen).Show
SelFichier = Application.ActiveDocument.Path
ActiveDocument.Close
End Function
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #22790311
Bonjour

Pour la sélection du fichier par l'utilisateur,



regardez FileDialog(msoFileDialogFilePicker) qui marche dans Word, pas
dans toutes les applications.

--
A+
Gloops
Le #22791661
Geo a écrit, le 14/11/2010 18:38 :
Bonjour

Pour la sélection du fichier par l'utilisateur,



regardez FileDialog(msoFileDialogFilePicker) qui marche dans Word, pas
dans toutes les applications.





Ah, ben la voilà, la réponse :)
Je regarde ça demain, merci.

Dans les autres applications je fais appel à l'API, normal, les autres
applications n'ont pas de boîte de dialogue intégrée.
Geo
Le #22792491
Bonjour

Dans les autres applications je fais appel à l'API, normal, les autres applications
n'ont pas de boîte de dialogue intégrée.



Oh mais non, je lance un word qui ne fais que ça : choisir le fichier.
Exemple (de choix de plusieurs dossiers) dans Outlook :

Sub PrépareListePublipostage()
Dim i As Integer
Dim appWord As New Word.Application
Dim appWordNouvelle As Boolean
Dim dialFichier As FileDialog
On Error Resume Next
Set appWord = GetObject(, "Word.Application")
If Err <> 0 Then
Set appWord = CreateObject("Word.Application")
appWordNouvelle = True
Else
appWordNouvelle = False
End If
On Error GoTo 0
i = -1
ReDim publipostagePJ(0)
Do
' Boite de dialogue de choix de fichiers
Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker)
With dialFichier
.Title = "Choisissez des pièces à joindre ou cliquer sur Annuler"
If .Show = 0 Then Exit Do
End With
For j = 1 To dialFichier.SelectedItems.count
i = i + 1
ReDim Preserve publipostagePJ(i)
publipostagePJ(i) = dialFichier.SelectedItems(j)
Next j
Loop
If appWordNouvelle Then
appWord.Quit
End If
Set appWord = Nothing


etc

--
A+
Gloops
Le #22796111
Geo a écrit, le 15/11/2010 07:48 :
Bonjour

Dans les autres applications je fais appel à l'API, normal, les autr es
applications n'ont pas de boîte de dialogue intégrée.



Oh mais non, je lance un word qui ne fais que ça : choisir le fichier .
Exemple (de choix de plusieurs dossiers) dans Outlook :

Sub PrépareListePublipostage()
Dim i As Integer
Dim appWord As New Word.Application
Dim appWordNouvelle As Boolean
Dim dialFichier As FileDialog
On Error Resume Next
Set appWord = GetObject(, "Word.Application")
If Err <> 0 Then
Set appWord = CreateObject("Word.Application")
appWordNouvelle = True
Else
appWordNouvelle = False
End If
On Error GoTo 0
i = -1
ReDim publipostagePJ(0)
Do
' Boite de dialogue de choix de fichiers
Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker)
With dialFichier
.Title = "Choisissez des pièces à joindre ou cliquer sur Annuler"
If .Show = 0 Then Exit Do
End With
For j = 1 To dialFichier.SelectedItems.count
i = i + 1
ReDim Preserve publipostagePJ(i)
publipostagePJ(i) = dialFichier.SelectedItems(j)
Next j
Loop
If appWordNouvelle Then
appWord.Quit
End If
Set appWord = Nothing


etc




Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boî te de
dialogue de sélection de fichier avant Word.

Enfin quand même, un module qui appelle directement l'API, ça doit qu and
même être plus léger, comme formule, non ?
Geo
Le #22796951
Bonjour

Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boîte de dialogue de
sélection de fichier avant Word.

Enfin quand même, un module qui appelle directement l'API, ça doit quand même être plus
léger, comme formule, non ?



Je ne connais pas l'API qui fait la même chose.
Ca dépend aussi de l'usage qu'on en fait.

--
A+
Gloops
Le #22815351
Geo a écrit, le 16/11/2010 07:03 :
Bonjour

Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une bo îte de
dialogue de sélection de fichier avant Word.



Enfin quand même, un module qui appelle directement l'API, ça doit
quand même être plus léger, comme formule, non ?



Je ne connais pas l'API qui fait la même chose.
Ca dépend aussi de l'usage qu'on en fait.




C'est sûr.

On trouve un exemple là (site dédié à Access, mais on peut utilis er
l'exemple ailleurs aussi), je ne suis pas absolument certain que ça soi t
le plus digeste, mais l'idée est de le copier dans un module et lire ce
qui est écrit en dessous, ça c'est gérable, et puis après on creu se
tranquillement à son rythme si on aime bien comprendre ce qu'on utilise .
ça peut être sympa de comprendre l'articulation des infos, ça perme t
ensuite de régler comme on le souhaite le titre de la boîte de dialog ue,
le répertoire et nom de fichier par défaut ...

http://www.mvps.org/access/api/api0001.htm
http://www.mvps.org/accessfr/apis/api0001.htm

J'ai pu afficher la version anglaise sous Firefox, en revanche pour la
version française il faut Internet Explorer, c'est un défaut connu du site.

Le "aht" devant les noms de variables, ce n'est pas les initiales de
l'auteur, alors ... ça doit être celles de sa petite amie ? :)
Gloops
Le #22815341
Gloops a écrit, le 20/11/2010 03:52 :
http://www.mvps.org/access/api/api0001.htm
http://www.mvps.org/accessfr/apis/api0001.htm




Une petite curiosité : il y a dix ans, on trouvait dans le code

strFileTitle = Space(256)

qui fonctionnait très bien sous Windows 95.
Sous Windows XP, ça ne fonctionne pas (la boîte de dialogue ne s'ouvr e
carrément pas), d'où la correction :

strFileTitle = String(256, 0)

qui fonctionne sur les deux (et aussi avec les systèmes récents j'ima gine).

On initialise avec des caractères nuls, plutôt qu'avec des espaces.
Geo
Le #22815791
Bonjour

Le "aht" devant les noms de variables, ce n'est pas les initiales de l'auteur, alors
... ça doit être celles de sa petite amie ? :)



En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu
ambigu !

Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que
c'est très complet.
Ce qui nous manque dans le vba c'est une gestion de code source par
inclusion.
Si on pouvait mettre des trucs du genre
inclure ApiDeLecture param1, param2
ça simplifierait la lecture et ça sécuriserait le code.

--
A+
Gloops
Le #22816251
Geo a écrit, le 20/11/2010 10:10 :
Bonjour

Le "aht" devant les noms de variables, ce n'est pas les initiales de
l'auteur, alors ... ça doit être celles de sa petite amie ? :)



En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu
ambigu !



:)


Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que
c'est très complet.



Ah oui je me rappelle qu'au début j'ai copié sans rien comprendre, et
puis ça marchait, c'est ça l'essentiel.


Ce qui nous manque dans le vba c'est une gestion de code source par
inclusion.
Si on pouvait mettre des trucs du genre
inclure ApiDeLecture param1, param2
ça simplifierait la lecture et ça sécuriserait le code.




Hum, sécuriser en incluant un fichier texte qui peut être piraté pl us
facilement, j'sais pas, j'ai l'impression que c'est une question à
approfondir ...
Gloops
Le #22816441
Geo a écrit, le 16/11/2010 07:03 :
Bonjour

Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une bo îte de
dialogue de sélection de fichier avant Word.



Enfin quand même, un module qui appelle directement l'API, ça doit
quand même être plus léger, comme formule, non ?



Je ne connais pas l'API qui fait la même chose.
Ca dépend aussi de l'usage qu'on en fait.




Une bonne adresse aussi pour les appels aux API :
http://allapi.mentalis.org/

On y trouve un éditeur à installer en local, et les déclarations de s API
et de leurs variables pour VBA/VB6 comme pour la plateforme .Net.

Les auteurs préviennent qu'ils n'ont plus le temps de mettre à jour, ce
qui est dommage, mais déjà avec ce qu'il y a en ligne il y a de quoi faire.
Publicité
Poster une réponse
Anonyme