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

Macros et VBA Excel Discussion :

Problème avec OleDocumentProperties


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut Problème avec OleDocumentProperties
    Bonjour,

    J'ai ce bout de code qui fonctionne avec excel 2019 mais qui pose problème avec excel 2016 sur un autre appareil. Effectivement, l'initialisation de "dso" ne fonctionne pas sur excel 2016. Si quelqu'un connait une solution ça serait génial.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
            Dim dso As OleDocumentProperties
     
    On Error Resume Next
            'Set dso = CreateObject("DSOFile.OleDocumentProperties")
            Set dso = New DSOFile.OleDocumentProperties
    On Error GoTo 0
     
            If dso Is Nothing Then
                MsgBox "Ne s'initialise pas", VbOkOnly, ""
                Exit Sub
            End If

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    hello,
    tes versions d'Excel sont en 32 bits ou 64 bits ?
    Ami calmant, J.P

  3. #3
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Hello,

    Les deux versions sont en 64 bits. J'ai installé cette dll : https://www.codeproject.com/Tips/1118708/Bit-Application-Cannot-Use-DSOfile"]

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    vois-tu dans l'éditeur VBA de ton Excel 2019 et de ton Excel 2016 dans les références, la référence à cette DLL ?

  5. #5
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Oui la référence existe et est cochée. Le code ne me renvoie pas d'erreur, la variable dso vaut nothing sur Excel 2016.

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    tu peux jeter un oeil ici

    et quel type de propriétés veux-tu traiter ?

  7. #7
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Merci pour tes réponses je regarde ça maintenant et je te tiens au courant.
    Des propriétés personnalisées. J'ai créé l'une de ces propriétés car l'utilisateur va pouvoir charger un classeur existant. Je teste si cette propriété existe et si elle a la bonne valeur pour m'assurer que c'est un classeur valide pour mon programme.

  8. #8
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Alors toutes les DLL sont installées comme il faut. C'est vraiment bizzard.

  9. #9
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Par contre je t'ai dit une bêtise. Mes windows sont en 64 bits sur les deux ordinateurs mais excel 2019 est la version 64, excel 2016 (ou mon programme ne fonctionne pas) est en 32. J'ai maintenant un nouveau problème. J'ai supprimé toutes les références à DSO de mon projet sur la version 2016 en 32. J'ai supprimé les DLL en 64. Ma référence apparait toujours dans la liste malgré le fichier qui n'existe plus. (Et crée une erreur de chargement de DLL si je remet une référence à DSO) et du coups je n'arrive pas à utiliser la DLL 32. Tu aurais une idée stp ?

  10. #10
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    Hello,
    Citation Envoyé par poseidonsr Voir le message
    Des propriétés personnalisées. J'ai créé l'une de ces propriétés car l'utilisateur va pouvoir charger un classeur existant. Je teste si cette propriété existe et si elle a la bonne valeur pour m'assurer que c'est un classeur valide pour mon programme.
    Pour lire ce genre de propriétés dans Excel tu n'as pas besoin d'utiliser les OleDocumentProperties, il existe une collection qui permet de lire les propriétés personnalisées d'un classeur, il s'agit de CustomDocumentProperties

    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub LirePropriétésPerso()
    For Each property In ActiveWorkbook.CustomDocumentProperties
       Debug.Print property.Name + " : " + property.Value
    Next
    Debug.Print ActiveWorkbook.CustomDocumentProperties("PropriétéPerso").Value
    End Sub
    PropriétéPerso : valeurPerso
    valeurPerso
    Ami calmant, J.P


  11. #11
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Oui je n'ai pas été assez précis dans la réponse à ta question. J'utilise aussi dso pour lire ces propriétés de classeurs fermés pour créer une liste où l'utilisateur pourra sélectionner le classeur à partir duquel il pourra prendre les données. En fait, je crée un classeur où je pourrais noter des mesures que j'ai pris sur un chantier. Le but est de pouvoir partager facilement ces données entre collègues. Du coups, j'ai créé (pas Access sur pc d'entreprise) un modèle de classeur excel qui sert de bdd ou j'inscris ces données. Ensuite, je peux les exporter sur le serveur de l'entreprise et c'est la que mes listes entrent en jeu. Alors la question est est-ce que dso permet réellement de lire les propriétés d'un classeur fermé ou est-ce qu'en réalité il ouvre le classeur et ça revient au même si je le fais moi même et que j'utilise la fonction dont tu m'as parlé ?

  12. #12
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    N'importe comment pour lire le contenu du fichier il est obligé de l'ouvrir. Bien sur c'est moins lourd qu'avec excel mais c'est quand même une ouverture de fichier.

  13. #13
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Super merci beaucoup. Je pense que pour ce genre de programme je peux me permettre que ce soit un peu plus lent. Du coups je pense que je vais ouvrir mes classeurs et tester la propriété directement sans dso.
    Merci beaucoup pour ton aide.

  14. #14
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    si tu veux que le classeur que tu ouvres ne soit pas visible dans excel pendant que tu lis ses propriétés, juste après l'avoir ouvert tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows("MyWorkbook").Visible = False
    MyWorkbook étant le classeur que tu viens d'ouvrir.

  15. #15
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Merci beaucoup. Je ferai ça dès que j'ai le temps. Ça me fera pas mal de code à retoucher mais je crois que c'est la meilleur solution.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 12h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 11h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 19h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

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