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 Project Discussion :

Evenement du controle ChartSpace ajouté dynamiquement


Sujet :

VBA Project

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Points : 41
    Points
    41
    Par défaut Evenement du controle ChartSpace ajouté dynamiquement
    bonjour,

    En bon autodidacte (vba pour Excel avec un peu de AODB), je fouille beaucoup sur les forums et tombe souvent sur les articles de SilkyRoad qui sont autant de bibles pour moi.

    Je développe une application utilisant des ChartSpaces (OWC11). Comme cette application est en réseau et que tous les postes n'ont pas les mêmes versions du composent OWC11 (major 1, minor 0 ou major 1, minor 1), je ne peut pas préinstaller ces composants dans mes userforms car le programme plante à l'installation (à cause des références).
    Je souhaiterais donc les installer dynamiquement après avoir installé par le code les références manquante dans ThisWorBook_open (ma macro.xla)

    'Installation des références OWC11
    Set Ref = Nothing
    Set Ref = ThisWorkbook.VBProject.References("OWC11")
    If Ref Is Nothing Then
    'Tentative de Minor=1, Major=1
    ThisWorkbook.VBProject.References.AddFromGuid "{0002E558-0000-0000-C000-000000000046}", 1, 1
    If Err.Number = -2147319779 Then
    'Tentative de Minor=1, Major=0
    Err.Clear
    ThisWorkbook.VBProject.References.AddFromGuid "{0002E558-0000-0000-C000-000000000046}", 1, 0
    If Err.Number = -2147319779 Then MsgBox "Impossible d'installer le composant Windows OWC11" & vbCr & _
    "La bibliothèque n'est pas installée" & vbCr & _
    "Ce programme ne peut pas fonctioner sur Excel 2007" & vbCr & _
    "Si vous êtes sur Excel 2003, téléchargez le fichier OWC11.exe sur le site de Microsoft" & vbCr & _
    "Installez le et réinstallez ProgrammeCQ.xla", vbExclamation, "Echec de l'installation": On Error GoTo 0: End
    End If
    End If


    Ça, ça marche !

    J'arrive à ajouter les controls Chartspace dynamiquement

    Dim ChartSpace1 as Control
    Set ChartSpace1 = Me.Controls.Add("OWC11.ChartSpace.11", "ChartSpace1")

    Je souhaiterai récupérer l'évènement Mouse_down
    Comme pour les controls de type MSForm.textbox.1, j'ai créé une classe
    EvenementsChartSpace
    contenant
    Public WithEvents owchartspace As OWC11.ChartSpace

    Dans mon code Userform, lorsque je fait:
    Dim chrt As EvenementsChartSpace
    Set chrt = New EvenementsChartSpace
    Set chrt.owchartspace = ChartSpace1

    J'ai une erreur N°13: Incompatibilité de type, alors qu'en déboguant, je vois bien que les types sont strictement identiques.
    C'est incompréhensible !!!!!

    Merci de l'éventuel coup de main, je deviens fou !!!

    Meud

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Points : 41
    Points
    41
    Par défaut owc, évènements, references, réseau RESOLU
    J'ai du me tromper de forum en postant ma question, mais ce n'est pas grave car j'ai trouvé la solution...

    Pour ceux qui veulent mettre une macro complémentaire excel en réseau, vous risquez d'être confronté au problème des références. Les numéros de version ne sont pas toujours les mêmes sur les différents postes connectés au réseau, et c'est notament le problème pour OWC (version 10, version 11.0, 11.1, etc...)

    La solution que j'ai trouvé, est de vérifier les reference à l'ouverture du classeur .xla (dans ThisWoorbook, Workbook_Open) comme expliqué au précédent post. Il faut descendre les numéro de version jusqu'à trouver celle qui ne génère pas d'erreur.

    SURTOUT, les references doivent être désinstallée à la fermeture du programme pour ne pas avoir de référence manquante sur un autre PC.
    Pour cela, toujours dans ThisWookbook,

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Ref
    On Error Resume Next
    With ThisWorkbook.VBProject
    Set Ref = Nothing
    Set Ref = .References("Word")
    If Not Ref Is Nothing Then .References.Remove Ref
    Set Ref = Nothing
    Set Ref = .References("MSComCtl2")
    If Not Ref Is Nothing Then .References.Remove Ref
    Set Ref = Nothing
    Set Ref = .References("ADODB")
    If Not Ref Is Nothing Then .References.Remove Ref
    Set Ref = Nothing
    Set Ref = .References("OWC11")
    If Not Ref Is Nothing Then .References.Remove Ref
    End With
    On Error GoTo 0
    End Sub


    Pour finir, le code mentionné pour récupérer les évènements du l'objet OWC ChartSpace fonctionne. L'erreur n°13 venait du fait d'avoir installé manuellement ce controle dans la UserFom (en mode création). Plus de plantage si le code est placé dans une UserForm vierge qui n'a jamais vu de chartspace.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/11/2009, 10h51
  2. Evenements de controles ajoutés Dynamiquement
    Par AirbusA330 dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/09/2009, 00h05
  3. Evenement sur controls ajouter dynamiquement
    Par TheBlackReverand dans le forum ASP.NET
    Réponses: 0
    Dernier message: 11/02/2009, 12h54
  4. Réponses: 1
    Dernier message: 25/04/2006, 16h22
  5. Réponses: 2
    Dernier message: 10/05/2005, 15h54

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