Methode Pastespecial qui echoue. Pb de bibliotheque ?
Micky
-
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é"
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
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
A voir également:
- Methode Pastespecial qui echoue. Pb de bibliotheque ?
- Google photo bibliothèque - Accueil - Photo
- Ce fichier contient l'historique des livres empruntés à la bibliothèque. combien de titres différents contient-il ? ✓ - Forum Excel
- L'accès a la carte sd a échoué 3ds - Forum Jeux vidéo
- Bibliothèque dynamique aacs - Forum Windows
- Bibliothèque ✓ - Forum Windows 10
1 réponse
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:
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:=&HFFFFEFBDou comme Paste est le premier argument
Pastespecial &HFFFFEFBDA+