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 :

Incompatibilité de type lors de la manipulation d'Excel


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut Incompatibilité de type lors de la manipulation d'Excel
    Bonjour,

    Je me prends la tête depuis plusieurs semaines sur une erreur que je n'arrive pas à comprendre...
    Ci dessous une petite fonction qui reproduit le bug:
    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
    Public Sub TestBug()
     
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Test_Data", CurrentProject.Path & "\TestFile.xlsx", True
     
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
     
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True
        xlApp.ScreenUpdating = True
     
        Set xlBook = xlApp.Workbooks.Open(CurrentProject.Path & "\TestFile.xlsx", False, False)
        Set xlSheet = xlBook.Worksheets(1)
     
        With xlSheet
            .Activate
            .Cells.Select
            .Cells(1, 1).Interior.Color = 9234572 'Erreur ici!
        End With
     
        Set xlSheet = Nothing
        xlBook.Close True
        xlApp.Quit
        Set xlBook = Nothing
        Set xlApp = Nothing
     
    End Sub
    Le code fonctionne sur la plupart des ordinateurs où j'ai pu le tester, mais pour deux d'entre eux il me retourne une Erreur 13: Type Mistmatch au niveau de la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(1, 1).Interior.Color = 9234572
    Le fichier Excel est bien créé, la sélection des cellules fonctionne, mais c'est le changement de couleur qui pose problème.
    Ces deux personnes utilisent la version Runtime de Access 2007, mais d'autre chez qui cela fonctionne aussi.

    J'ai bien tenté un CLng(9234572) mais ça ne change rien...
    J'ai vérifié les références mais je n'ai rien vu de spécial...
    J'ai essayé d'exporter vers Excel 2003 mais le problème reste le même...

    Il semblerait que le problème vienne plus de leur PC que du code... Mais je ne sais pas dans quelle direction chercher!!

    Avez vous des idées?

    Merci par avance pour vos pistes et commentaires!


    Lionel
    Lionel Garnier

    N'oubliez pas de voter pour les posts en cliquant sur le
    Cliquez sur le bouton lorsque vous êtes satisfaits de la réponse!
    mon site pro

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour

    Deux idées :

    1. Essaye ton code de changement de couleur directement dans le Excel de la machine qui plante. Si cela marche c'est un problème de communication entre Access et Excel
    2. Essaye de mettre une couleur "plus petite" ex : 255 (rouge vif), si cela marche c'est que le PC concerné ne supporte pas de valeur élevée. Va jetter un oeil à la carte graphique. C'est peut-être une vielle version qui ne gère qu'un nombre limité de couleurs.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Merci pour les pistes!

    Le code fonctionne lorsqu'il est rentré directement dans Excel...
    Mais je vais quand même tenter d'utiliser une valeur plus petite, même si les PC sont récents (je pourrais faire le test demain en milieu de journée).


    Lionel
    Lionel Garnier

    N'oubliez pas de voter pour les posts en cliquant sur le
    Cliquez sur le bouton lorsque vous êtes satisfaits de la réponse!
    mon site pro

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    Une 3e idée : remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Interior.ColorIndex = 15  'gris moyen
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    OK merci, je vais aussi tester ça tout à l'heure.

    Mais j'ai l'impression que le problème vient vraiment de la communication entre Access et Excel.
    Car ce code est plutôt simple, il n'y a pas de raison qu'il ne fonctionne pas sur une config assez récente (Win 7 + Office 2007).

    Si tel est le cas, d'où pourrait venir le problème?
    De Excel (composant Microsoft Excel 12.0 Object Library)
    Ou d'un autre composant type Mscomctrl.ocx, stdole2.tlb...?
    Lionel Garnier

    N'oubliez pas de voter pour les posts en cliquant sur le
    Cliquez sur le bouton lorsque vous êtes satisfaits de la réponse!
    mon site pro

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Aucune idée pour la cause mais essaye cela.

    Remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Dim xlApp As Object
        Dim xlBook As Object
        Dim xlSheet As Object
    et supprime la référence à Excel. Tu vas perdre l'intellisens mais tu vas "détacher" Access de Excel.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Merci beaucoup.
    J'ai essayé les différentes solutions mais rien n'y fait...
    Toujours ce "Type Mismatch"!!

    Aussi, je me suis aperçu qu'il retourne une erreur pour le Set, mais aussi pour le Get (même erreur si je fais par exemple msgbox .Cells(1, 1).Interior.Color)
    Par contre, je n'ai pas précisé mais si je change juste le texte d'une cellule ça fonctionne parfaitement! Donc certaines choses fonctionnent, d'autres pas...

    Je me demande s'il n'y a pas un module complémentaire de Excel qui pose problème.
    J'ai cherché à la main mais je n'ai rien vu...

    => Savez vous s'il y a un moyen de lancer Excel en mode sans échec?
    Lionel Garnier

    N'oubliez pas de voter pour les posts en cliquant sur le
    Cliquez sur le bouton lorsque vous êtes satisfaits de la réponse!
    mon site pro

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Autres idées de contournement :

    Mettre le code dans le Excel et appeller Excel avec un paramètre dans la ligne de commande pour le forcer à exécuter le code.

    Utiliser la mise en forme conditionnelle de Excel pour changer la couleur de fond.

    Que dit l'aide de Excel sur le type de .color ? Est-ce un entier long ou un objet de type "Color" ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [XL-2010] Incompatibilité de type lors de l'utilisation de l'AddIn Aspentech
    Par J.Le_Roy dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 10/05/2015, 18h42
  2. [XL-2010] Incompatibilité de type lors de la lecture d'une propriété
    Par ptitcool dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/06/2014, 12h20
  3. Erreur "incompatibilité de type" lors import dans table Access
    Par spud96 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2011, 21h40
  4. [DAO]Incompatibilité de type lors d'une concaténation
    Par mouaa dans le forum VBA Access
    Réponses: 19
    Dernier message: 06/04/2007, 10h33
  5. Correspondance de types lors d'un SELECT
    Par Alain Dionne dans le forum ASP
    Réponses: 5
    Dernier message: 18/05/2004, 20h54

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