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

VB 6 et antérieur Discussion :

Comparaison entre un objet et sa classe


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Points : 25
    Points
    25
    Par défaut Comparaison entre un objet et sa classe
    Bonjour à tous.
    Désolé pour le titre, j'ai pas trouvé mieux !!!

    Dans mon code, je crée un objet excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set ObjetOLE = CreateObject("excel.Application")
    '[...]
    'Puis je le ferme
    ObjetOLE.application.quit
    '[...]
    'Puis je le vide, le réutilise pour autre chose, puis le vide encore
    ObjetOLE = nothing
    Puis je ferme la fonction
    Pas de problemes.... sauf s'il y une erreur avant de fermer ma fonction.
    La je voudrais tester si mon objet est encore du type excel.application dans ma gestion des erreurs (et dans ce cas le fermer) mais je ne sais pas comment faire :
    J'avais pensé à :
    If ObjetOLE is excel.application mais cela ne marche pas.
    Je tiens particulierement à tester avec excel.application et non "Microsoft Excel" qui est le nom de l'objet.

    Comment puis je faire?
    Merci à vous
    Damien

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 36
    Points : 41
    Points
    41
    Par défaut
    Il y a TypeName mais je viens de tester, ça ne renvoie pas "Excel.Application", ça renvoie seulement "Application". Je ne sais pas si ça va faire l'affaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?TypeName(mAppXL)
    Application

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Essaie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim ExcelWasNotRunning As Boolean   ' Indicateur de libération finale.
     
    On Error Resume Next   
    Set ObjetOLE = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    Err.Clear    ' Efface l'objet Err si une erreur s'est produite
     
    If ExcelWasNotRunning = True Then ...
            'mon objet n'est pas du type  excel.application

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Merci de vos réponses,
    Rico Nuch : Non cela ne me suffit malheuresement pas, je lance également des word avec et cela s'appelle également application.
    iclic : J'y avait pensé aussi sauf que si excel était bien fermé mais que l'utilisateur avait une autre session excel en cours en meme temps, cela lui fermera l'autre session. Du coup ca ne me convient pas, je ne voudrais fermer que celui que j'ai ouvert, meme si d'autres sont également ouverts.

    Merci à vous pour vos suggestions.
    Damien

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Salut;

    Il te faut alors utiliser le PID(Process ID) de l'instance ouverte

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    C'est effectivement correcte.
    Je ne voulais pas vraiment utiliser cette fonction ; même si elle résoud le probleme elle ne répond pas à ma question.
    Je crains de ne pas avoir de réponse car ce que je demande est peut etre impossible à savoir tester si un objet est du type excel.application.
    Mais si jamais qqn connait l'astuce, n'hésitez pas.
    Merci
    Damien

  7. #7
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Salut,

    Un test avec une instance de l'application Excel ouverte et affichée ou non a permis de voir que c'est l'instance créée par le code suivant qui se ferme uniquement et pas celle déjà en route :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Set ObjetOLE = CreateObject("excel.Application")
       MsgBox "Name : " & ObjetOLE.Name
       ObjetOLE.Application.Quit
       MsgBox "Version : " & ObjetOLE.Version
       Nom = ObjetOLE.Name
       Set ObjetOLE = Nothing
       If Not ObjetOLE Is Nothing Then
        MsgBox ObjetOLE.Name & " est encore activé"
       Else: MsgBox "L'objet " & UCase(Nom) & " a été déchargé = n'est plus accessible", 16
       End If
    Si tu mets en commentaire la ligne tu verras que l'instance est encore active.
    Tu remarqueras que même si on quitte l'application (ObjetOLE.Application.Quit), l'objet reste accessible et on peut en avoir le nom, la version .... par exemple
    En espérant avoir donné une toute petite raie de lumière

Discussions similaires

  1. Comparaison entre 2 objets
    Par lr.remy dans le forum Général Java
    Réponses: 2
    Dernier message: 26/02/2013, 20h41
  2. Réponses: 3
    Dernier message: 09/05/2011, 19h34
  3. Réponses: 2
    Dernier message: 28/05/2010, 16h48
  4. Réponses: 2
    Dernier message: 12/03/2006, 20h28
  5. Comparaison entre les classes et les fonctions
    Par Ashgenesis dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 08/09/2005, 19h09

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