IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Methode Pastespecial qui echoue. Pb de bibliotheque ? [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 16
    Points : 18
    Points
    18
    Par défaut Methode Pastespecial qui echoue. Pb de bibliotheque ?
    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 :

    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
    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

  2. #2
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    Salut,
    Tente de remplacer "xlPasteValues​​" par "xlPasteValuesAndNumberFormats"

    Fred
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Merci mais pas mieux "La Methode Pastespecial de la classe Range a échoué" (j'avais oublié de préciser le message d'erreur).

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const xlPasteValues = -4163 (&HFFFFEFBD)
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .Pastespecial Paste:=&HFFFFEFBD
    ou comme Paste est le premier argument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .Pastespecial &HFFFFEFBD
    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    C'est parfait ca marche !
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] methode range qui echoue
    Par neninio31 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 02/07/2009, 09h18
  2. Methode update qui ne fait rien
    Par isarian dans le forum ASP.NET
    Réponses: 10
    Dernier message: 18/06/2008, 15h22
  3. methode de creation de sa propre bibliotheque c
    Par genie_programmeur dans le forum C
    Réponses: 2
    Dernier message: 03/02/2008, 11h31
  4. la methode range a echoue macro excel
    Par aarlock dans le forum Access
    Réponses: 2
    Dernier message: 21/06/2006, 11h54
  5. methode get qui efface la précédente
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 31/05/2006, 00h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo