Bonjour à la communauté,
j'ai créé un document word qui se connecte à une feuille de calcul excel (publipostage).
Dans ce document j'ai une comboBox qui me sert à sélectionner le nom et prénom d'un enfant.
Ceci actualise alors mes différents champs de publipostage.

Or, soucis incompréhensible :
  • sur mon ordinateur personnel, dont le système d'exploitation est Window XP SP3, je n'ai aucune erreur.
  • par contre au travail, dont l'OS est Windows 7, j'ai systématiquement une erreur 1004 : "Impossible d'ouvrir le fichier "Liste_eleves.xlsx" car son format ou son extension est endommagé."



Pour parer cette problématique, j'ouvre manuellement ma feuille de calcul Excel, Liste_eleves au préalable et alors tout fonctionne. Mais j'aimerai comprendre pourquoi cette erreur et comment la corriger, svp.

La ligne impliquée est la suivante : Set XLClasseur = XLAppli.Workbooks.Open("F:\Liste_eleves.xlsx") '< le classeur
Voici mon code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Option Explicit
' Déclaration des variables
Dim ImprimanteParDefaut As String
Dim doc As Object
Dim NomMajuscule, Nom, prenom, docName, ValeurARetourner As String
Dim CheminGevasScoOriginal, CheminDossier As String
Dim DocAmenPeda, GevaScoEleveDocm, DocFinal, TestExiste As String
Dim NumReu, NBLignes, i, NumChoix, NumChoixActualisation As Integer
Dim XLAppli As Object
Dim XLClasseur As Excel.Workbook
Dim XLFeuille As Excel.Worksheet
Dim CaC_CompositionDossier, CaC_Services As InlineShape
 
 
 
Private Sub Document_Open()
    ImprimanteParDefaut = Application.ActivePrinter
    ' Declaration Document et Sauvegarde chemin Gevasco
    Set doc = Application.ActiveDocument
    CheminGevasScoOriginal = doc.Path & "\"
 
    ' Remplir liste déroulante Choix Elève
    Set XLAppli = CreateObject("Excel.Application") '< L'appli Excel
    Set XLClasseur = XLAppli.Workbooks.Open("F:\Liste_eleves.xlsx") '< le classeur
    Set XLFeuille = XLClasseur.Worksheets("Liste_eleves") '< la feuille
    'Détermine longueur de la liste
        NBLignes = XLFeuille.Cells(XLFeuille.UsedRange.Rows.Count + 1, 1).Row - 2 '(-2) car on enlève la première ligne et la dernière ligne vide
        With ChoixEleve
                For i = 1 To NBLignes
                'Use .AddItem property to add a new row for each record and populate column 0
                    .AddItem i & "-" & XLFeuille.Range("B2").Cells(i, 1) & " " & XLFeuille.Range("C2").Cells(i, 1)
                ' .AddItem xlWS.Range("B1:B5").Cells(i, 2)
                'Use .List method to populate the remaining columns
                '.List(.ListCount - 1, 1) = xlWS.Range("B1:B5").Cells(i, 2)
                Next i
        End With
    'DoEvents 'laisse le temps au système de réaliser la copie
    XLClasseur.Close False 'ferme le classeur Excel sans enregistrer
    'DoEvents ' laisse au système le temps de fermer le classeur
    XLAppli.Quit ' Ferme Excel
    Set XLAppli = Nothing ' supprime les instances
    Set XLClasseur = Nothing
    Set XLFeuille = Nothing
 
' Remplir la liste déroulante
            With Demande
                .AddItem "Demande-s actuelle-s"
                .AddItem "Pas de demande"
            End With
End Sub
Merci par avance pour votre aide.