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 :

Utiliser fonction dans Dll


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut Utiliser fonction dans Dll
    Bonjour,
    Mon projet est de récupérer les données de Google Calendar dans une feuille excel sous forme de tableau.

    Un utilitaire en version gratuite le permet mais ne dispose pas de support pour les macros...(S*pro, W*nC*lendar)

    Cependant l'assistance technique du soft à eu l'amabilité de me faire parvenir la fonction adéquate au sein d'une de leur dll.
    Il a fallut mettre en Reférence ladite Dll dans la fenêtre VBA, et on a ainsi accès à ses propriétés dans l'explorateur d'objet.

    Le code proposé pour lancer la fonction (sans passer par l'interface du plugin) est du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1)      Set a reference to WinCalendarV3.dll (see VBA tools-> References)
    2)      Use code similar to:
     
    <
    Dim resultObj as Variant
     
    Dim aWinCalendarCreator As WinCalendarV3.XLCalendarCreator
     
           Set resultObj = aWinCalendarCreator.insertTable(startDate, endDate, TargetBook.ActiveSheet, doImportOutlook, doImportUserNotes, DoImportGoogle, isLandscape, useAutoFilter, ””)
    >

    M'inspirant de ce code je crée la procedure suivante:

    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
    <
    Sub WCalendar()
    Dim startDate As Date
    Dim endDate As Date
    Dim TargetSheet As Worksheet
    Dim ImportOutlook As Boolean
    Dim showUserNotes As Boolean
    Dim DoImportGoogle As Boolean
    Dim isLandscape As Boolean
    Dim AutoFilter As Boolean
    Dim modeStr As String
     
    startDate = "01/09/2010"
    endDate = "30/09/2010"
    Set TargetSheet =_ Workbooks("Google_IMPORT_WORKING01.xlsm").ActiveSheet
    ImportOutlook = False
    showUserNotes = False
    DoImportGoogle = True
    isLandscape = True
    AutoFilter = True
    modeStr = ""
     
    Dim ResultObj As Variant
    Dim aWinCalendarCreator As New WinCalendarV3.XLCalendarCreator
    Set ResultObj = aWinCalendarCreator.insertTable(startDate, endDate,_ TargetSheet, ImportOutlook, showUserNotes, DoImportGoogle, isLandscape, AutoFilter, modeStr)
    End Sub
    >
    Et voilà mon souci:
    L'execution de cette Sub ne génère pas d'erreur et semble effectuer les requêtes nécessaires puisque son temps d'execution prends les mêmes quelques secondes qu'en passant par l'interface graphique du plugin.
    (en regardant les variables locates en mode pas à pas toutes sont renseignées sauf ResultObj = Nothing)

    Je n'arrive cependant pas à interpréter la variable de retour de la fonction:ResulObj

    Pour essayer d'être plus clair:
    1/quand j'utilise le Gui, je passe tous les parametres via un userform et son execution genere une nouvelle feuille excel avec toutes les données rapatriées de google calendar.
    2/en utilisant la macro je ne constate pas d'erreur mais je ne sais pas comment interpreter la variable ResultObj pour afficher mon resultat dans une nouvelle feuille excel.

    Je pense que mon probleme vient du fait que jdébute en vba et que je me mélange les pinceaux!!!

    Bref, si quelqu'un arrive à comprendre mon probleme et peut éclairer ma lanterne ce serait super sympa !

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    Citation Envoyé par hotoh Voir le message

    Cependant je n'arrive pas à interpréter la variable de retour de la fonction:ResulObj
    ResulObj n'étant pas une "fonction" (comme tu dis), mais un objet, tu ne peux qu'en extraire les valeurs de ses propriétés !

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Via l'explorateur d'objets (F2 dans VBE), regarde les propriétés de aWinCalendarCreator et particulièrement la propriété InsertTable. Normalement, l'explorateur d'objets te renseignera sur son type. Il semblerait que ce soit un RANGE
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut
    Merci de vos rapides réponses!!

    Alors oui, resultObj semble être un objet de type range:

    Description de l'explorateur d'objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Function insertTable(startDate As Date, endDate As Date, [TargetSheetAfter As Worksheet], [importOutlook As Boolean], [showUserNotes As Boolean], [doImportGoogle As Boolean], [isLandscape As Boolean], [AutoFilter As Boolean = Vrai], [modeStr As String]) As Range
        Membre de WinCalendarV3.XLCalendarCreator
    Ma question, je le sent, est plus basique:
    Une fois "set resultObj = aWinCalendarCreator.insertTable(......)" effectué, comment extraire les propriétés de l'objet 'resultObj' et m'en servir pour créer ma nouvel feuille.

    J'ai déclaré resultObj en Variant comme indiqué par le support technique(mais je crois que variant est "compatible" avec range...)

    je ne connait pas les propriétés de resulObj....
    comment connaitre et exploiter les valeurs des propriétés de resultObj ?

    Je suis conscient de mes lacunes sur quelques bases de programmation, mais je fais tout pour essayer de progresser!



    Je cherche une piste !
    Merci de m'aiguiller !


    Je pense que vous allez me dire que les propriétés de resultObj sont celles de Range, mais dans ce cas je ne vois toujours pas comment generer ma nouvelle feuille ! (je doit faire un blocage !!!)

Discussions similaires

  1. fonction dans dll qui fait planter programme
    Par chris069 dans le forum C++
    Réponses: 22
    Dernier message: 28/04/2009, 16h19
  2. appel de fonction dans dll native
    Par ZaaN dans le forum C++/CLI
    Réponses: 2
    Dernier message: 15/02/2008, 20h56
  3. appel pointeur sur fonction dans DLL
    Par dietrich dans le forum Windows
    Réponses: 6
    Dernier message: 24/10/2007, 21h48
  4. Création de fonctions dans DLL
    Par salrouge dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/08/2006, 09h42
  5. PB pour Appel fonction dans DLL sur Builder3
    Par Fbartolo dans le forum C++Builder
    Réponses: 15
    Dernier message: 10/03/2005, 12h58

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