Methode Pastespecial qui echoue. Pb de bibliotheque ?

Micky -  
 Micky -
Bonjour à tous,

Quelques lignes pour resituer le problème :

Je travaille sous Access2007 et j'ai développé un petit applicatif Access qui génère un Fichier Excel servant de source à un publipostage.
Cet outil est utilisé sur d'autres postes qui n'ont pas forcement Access (utilisation de runtime) ou qui ont des Access en version différentes (2010/2013). L'outil est accessible sur un réseau commun.

Au départ j'avais activé la librairie "Microsoft Excel 12.0 Object Library" dans les références. Sauf que lorsque certains utilisateurs l'ouvraient, cette référence était modifiée (passait en 14.0) et du coup le code plantait lorsqu'un utilisateur avec runtime essayait de la réutiliser.
J'ai cherché un peu sur le net et j'ai vu qu'il était possible de désactiver ces bibliothèques à la fermeture et de les réactiver à l'ouverture de l'application comme ça elle s'activait toujours avec la version de l'Excel installé sur le poste de l'utilisateur, par contre, cela ne semble pas fonctionner pour les utilisateurs du runtime (je pense que le runtime empêche la modification des références et donc la réactivation de la référence Excel).
J'ai fait de nouvelles recherches et il était proposé d'utiliser des déclarations "tardives".
J'ai désactivé la bibliothèque Excel et j'ai fait des déclarations "Object" affectée plus tard dans mon code, mais je suis de nouveau bloqué sur un collage spécial valeur qui ne passe pas : "La Methode Pastespecial de la classe Range a échoué"


Dim appExcel As Object
Dim wbExcel As Object
Dim wsExcel As Object
Dim wsExcel2 As Object

...
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Add
...
Set wsExcel2 = wbExcel.Worksheets(2)
wbExcel.Worksheets(2).Name = "Courrier"
...
For i = 1 To cptcourrier - 1

wsExcel2.Cells(i + 1, 2).Formula = "=if(G" & i + 1 & ">1,""Consorts "" & VLOOKUP(A" & i + 1 & ",questionnaire!B:S,18,FALSE),VLOOKUP(A" & i + 1 & ",questionnaire!B:S,7,False))"
wsExcel2.Cells(i + 1, 3).Formula = "=if(VLOOKUP(A" & i + 1 & ",questionnaire!B:S,9,False)=0,"""",VLOOKUP(A" & i + 1 & ",questionnaire!B:S,9,False))"
wsExcel2.Cells(i + 1, 4).Formula = "=if(VLOOKUP(A" & i + 1 & ",questionnaire!B:S,10,False)=0,"""",VLOOKUP(A" & i + 1 & ",questionnaire!B:S,10,False))"
wsExcel2.Cells(i + 1, 5).Formula = "=VLOOKUP(A" & i + 1 & ",questionnaire!B:S,11,False)"
wsExcel2.Cells(i + 1, 6).Formula = "=VLOOKUP(A" & i + 1 & ",questionnaire!B:S,16,False)"
wsExcel2.Cells(i + 1, 8).Formula = "=if(left(B" & i + 1 & ",2)=""M "",""Monsieur"",if(left(B" & i + 1 & ",4)=""MME "",""Madame"",if(left(B" & i + 1 & ",4)=""MLE "",""Mademoiselle"",""Madame, Monsieur"")))"
...
Next i

With wsExcel2.Range("A1:H" & cptcourrier) '(avant j'avais mis "A:H" mais celà ne marchait pas non plus)
.Copy
.Pastespecial Paste:=xlPasteValues 'ca plante ici
End With

...

Cette méthode est-elle liée à la bibliothèque que j'ai désactivée et n'est-elle donc pas utilisable ?

D'autre part si vous avez d'autres pistes pour ces problèmes de compatibilité entre version/runtime, ... cela m'intéresse.

Cordialement

1 réponse

Micky
 
Voila la réponse (qui fonctionne) apporté par LedZepp2 sur un autre forum

Bonjour,

Comme tu es en liaison tardive, si tu n'as pas redéfini la constante xlPasteValues, elle est inconnue.

Trouvé dans l'explorateur d'objets:

Const xlPasteValues = -4163 (&HFFFFEFBD)
Essaie

Pastespecial Paste:=&HFFFFEFBD
ou comme Paste est le premier argument

Pastespecial &HFFFFEFBD
A+
0