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 08/08/2011, 11h34   #1
Invité régulier
 
Femme
Inscription : juin 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 23
Points : 6
Points : 6
Par défaut Publipostage qui ne fonctionne pas avec un fichier source lié

Bonjour,

Je travaille sur un publipostage (codé en VBA) dont le fichier qui sert de base est lui-même lié à un autre fichier.

Donc, avant de faire mon publipostage, j'ouvre mon "fichierB" et récupère certaines données à partir du "fichier A" (par code VBA). Ensuite, j'ouvre mon document Word pour faire mon publipostage avec les données du "fichier B".

Tout fonctionne lorsque le "fichier A" est un fichier normal. Le problème apparaît lorsque mon "fichier A" est un fichier partagé : même s'il est fermé et que je ne l'utilise pas dans le publipostage (je me base uniquement sur le "fichier B"), mon code ne fonctionne plus.

Est-ce que cela est vraiment dû au fait que le "fichier A" est partagé ? Et quelqu'un aurait-il une idée de comment je pourrais contourner le problème ?

Mille mercis !

Pauline
paulinegue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 11h43   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
Salut,

Je ne vois pas ce qui pourrait "empêcher" le publipostage.

Si tu pouvais nous donner plus d'infos, où se trouvent les deux fichiers ?, comment fais-tu le publipostage ?

je pourrais alors tenter de reproduire le problème.
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 12h06   #3
Invité régulier
 
Femme
Inscription : juin 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 23
Points : 6
Points : 6
Bonjour,

Merci de ta réponse, Heureux-Oli.

Le but de la manœuvre est le suivant :

Tous mes collègues travaillent sur un fichier commun "FichierA". Le service de facturation veut pouvoir travailler sur un fichier séparé, puisqu'il n'utilise pas toutes les données du "Fichier A", d'où la nécessité d'un "Fichier B".

Le publipostage sert à imprimer des tableaux de facturation en fonction des données du "Fichier B", données donc récupérées sur le "Fichier A".

Tous les fichiers sont sur un serveur partagé par une centaine d'ordinateurs.


Mon code pour le publipostage est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit
 
Private Sub CommandButton1_Click()
 
Dim appWord As Word.Application
Dim docWord As Word.Document
Dim appOffice As Office.OfficeDataSourceObject
Dim SQL As String
Dim mois As String
 
 
Application.ScreenUpdating = False
 
Set appWord = New Word.Application
appWord.Visible = True
 
mois = ActiveDocument.FormFields(1).Result
SQL = "SELECT *" & _
"FROM [Facturation$]" & _
"WHERE [Langue]= 'Anglais'" & _
"And [Decision] LIKE '3%'" & _
"And [Facture1]= '" & mois & "';"
 
Set docWord = appWord.Documents.Open("Module1.docx")
 
With docWord.MailMerge
.MainDocumentType = wdDirectory
.OpenDataSource _
Name:="FichierB.xlsm", _
SQLStatement:=SQL
 
.Execute Pause:=True
 
End With
 
End Sub

Le "fichier B" est lié au "fichier A" de la manière suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Option Explicit
 
Private Sub CommandButton1_Click()
Dim wb As Workbook
 
 
Set wb = Workbooks.Open("FichierA.xls")
 
ThisWorkbook.Activate
 
With Workbooks("FichierA.xls").Worksheets(1)
 
    .Range("A:A, C:C, F:F, H:H, K:K, L:L, T:AE").Copy Workbooks("FichierB.xlsm").Worksheets(1).Range("A1")
 
 
End With
 
With Workbooks("FichierB.xlsm").Worksheets(1)
 
 
    If Not .AutoFilterMode Then .Range("A:R").AutoFilter
 
 
End With
 
 
Range("A:R").EntireColumn.AutoFit
Range("A:R").Sort Key1:=Range("E2"), Header:=xlYes
 
Workbooks("FichierA.xls").Close
 
End Sub
J'ai testé étape par étape pour voir ce qui ne fonctionnait pas : tant que le "fichier A" est un fichier Excel 2007 "normal", le publipostage fonctionne. Mais lorsque je teste mon code avec les données réelles (le "fichier A" est alors un fichier partagé par tout le monde), je n'arrive plus à finaliser le publipostage.

Je ne suis pas certaine que le problème vient du fait que le fichier soit partagé, mais il semblerait que cela puisse venir de là.

J'espère que c'est plus clair comme cela !

Merci beaucoup !

Pauline
paulinegue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 12h24   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
Salut,

Même avec le code, ça reste trouble.

Je vais utiliser ta méthode pour voir ce que ça donne chez moi.

En attendant, pourrais-tu essayer au lieu de copier les données de A vers B, de sauver les données A en B.

Tu ouvres le fichiers et tu en fais une sauvegarde en FichierB.

Selon moi, la solution lorsque les fichiers sont partagés, c'est utiliser Access qui permet une utilisation à plusieurs en toute transparence, mais ce n'est pas toujours possible.
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 12h37   #5
Invité régulier
 
Femme
Inscription : juin 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 23
Points : 6
Points : 6
Bonjour,

Merci de ta réponse !

Cette solution serait sans doute plus simple, mais cela demande un peu trop de manipulation aux utilisateurs. Est-ce qu'il y aurait moyen de faire cette sauvegarde sans avoir besoin de toucher au fichier de base ? Il est en effet utilisé par beaucoup de personnes et la moindre modification soulève des tollés...

Sinon, j'aurai bien utilisé Access, mais je n'y connais vraiment rien et je n'ai pour l'instant pas le temps de m'y former.


Merci en tout cas pour tes conseils, je vais quand même essayer et voir si ça colle.

Pauline
paulinegue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h13   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
Salut,

je ne rencontre pas le problème. Lors de la copie des données.

Pour idée, voilà le code que j'ai utilisé, j'ai légèrement modifié ton code pour qu eje puisse l'utiliser.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
Sub CopieDonnees()
Dim wb1 As Workbook, wb2 As Workbook
 
 
Set wb1 = Workbooks.Open("Y:\BIB\PUB01.XLSX")
Set wb2 = Workbooks.Add
 
 
 
 
With wb1.Worksheets(1)
 
    .Range("A:A, C:C, F:H, K:K, L:L").Copy wb2.Worksheets(1).Range("A1")
 
 
End With
 
With wb2.Worksheets(1)
 
 
    If Not .AutoFilterMode Then .Range("A:F").AutoFilter
 
 
End With
 
 
wb1.Close
set wb1 = Nothing
wb2.SaveAs "C:\Documents and Settings\Olivier\Mes documents\Excel\PUB02.xlsx"
 
 
End Sub
Pour la sauvegarde, ce n'est pas plus complexe que la copie des données, on ouvre et on fait un SaveAs

Dim wb1 As Workbook

set wb1 = Workbooks.Open("")

wb1.SaveAs ""
wb1.Close
set wb1 = Nothing
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 09h47   #7
Invité régulier
 
Femme
Inscription : juin 2011
Messages : 23
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 23
Points : 6
Points : 6
Merci beaucoup Heureux-Oli pour toutes ces informations !

Je viens de trouver mon erreur : les deux fichiers que je testais n'était pas exactement les mêmes (une petite lettre de différence dans un des en-têtes de colonnes), et c'est pour cette raison que le publipostage ne pouvait pas se faire.

Mais de toute façon je change ma façon de procéder (Save plutôt que Copy), donc mille merci pour ton aide !

Pauline
paulinegue 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 07h52.


 
 
 
 
Partenaires

Hébergement Web