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 :

Recherche sur plusieurs instances EXCEL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut Recherche sur plusieurs instances EXCEL
    Bonjour,

    Après avoir parcouru votre Forum plein d'astuces et de bons conseils, je n'ai pu résoudre mon exercice:

    Créer une macro de recherche de caracteres sur plusieurs instances Excel dont je ne connais pas d'avance le nom (ceux-ci changent au bon vouloir des utilisateurs).

    Pourquoi plusieurs instances ?? les Fichiers Excel sont sur réseau interne et lors de leur activation (manuelle) ceux-ci s'ouvrent dans des instances distinctes .

    D'après ce que j'ai pu réaliser grace à votre Forum , il est possible de connaitre la quantité d'instances Excel ouvertes mais pas les noms des fichiers (workbooks) associés ?

    Merci à tous ceux qui plancheront.

  2. #2
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut Instances Excels
    Bonjour,

    C'est une anomalie de fonctionnement ; Si pour chaque fichier Excel , on relance une nouvelle instance ?
    Quand je clique plusieurs fois sur l'icône Excel , j'ouvre plusieurs instances. Lorsque je clique sur un fichier .xls , c'est la même instance...

    A mon avis, c'est un paramètre windows , lequel ?

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour le forum, bonjour Hourko,

    il est possible de connaitre la quantité d'instances Excel ouvertes mais pas les noms des fichiers (workbooks) associés ?
    Je me suis intéressé à ton post et j'en suis au même point, as-tu déjà commencé quelque chose au quel cas tu pourrai mettre le code pour nous aider à avancer. Par exemple la mêthode que tu as choisi pour compter les instances.

    Une question, peux-tu fermer les instances excel une fois ton traitement sur les chaînes de caractère efféctuées ?

    Si c'est le cas je verrai peut être une solution pas des plus simple:
    Faire un GETOBJET, travailler sur tous les classeurs actifs
    Fermer cette instance ...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut On avance à l'instance
    Pour le code, aucun mérite. Je l’ai «chipé» dans le forum (un grand merci au façonneur ).
    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
     
    Sub nb_instances()
     
    Dim strComputer As String
    Dim objWMIService As Object
    Dim objList As Object
     
    strComputer = "."
     
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objList = objWMIService.execquery("select * from win32_process where name='EXCEL.EXE'")
     
    MsgBox "Nombre d'instances : " & objList.Count
     
    Set objWMIService = Nothing
    Set objList = Nothing
     
    End Sub
    La première idée concernant le paramétrage Windows, Excel ou même le réseau j’ai lancé l’idée au boulot. Je pense également à chercher un forum spécial Windows. Si je trouve je vous en ferais part.

    La deuxième idée, même si elle ne s’applique pas à mon mini projet, est intéressante.
    Créer une instance Excel, traiter le fichier associé puis fermer le fichier et l’instance.

    Et donc voilà (avec en plus le nb d'instances qui s'affiche):
    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
     
    Sub traitement_instance_Excel()
    Dim strComputer As String
    Dim objWMIService As Object
    Dim objList As Object
    strComputer = "."
    Set xlApp = CreateObject("excel.application") ‘la nouvelle instance
    xlApp.Visible = True    'affiche l'application.
    Workbooks.Open Filename:="C:\......\Toto.xls" ‘le nouveau fichier dans la nouvelle instance
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objList = objWMIService.execquery("select * from win32_process where name='EXCEL.EXE'")
     
    MsgBox "Nombre d'instances : " & objList.Count 'il y a effectivement une instance de plus
     
    Range("A1").Select          'le traitement ici...
    ActiveCell.FormulaR1C1 = "Bonjour le traitement"
    ActiveWorkbook.Save
    ActiveWorkbook.Close
     
    xlApp.Quit
    Set objWMIService = Nothing
    Set objList = Nothing
    Set xlApp = Nothing     
     
    End Sub
    nota: un truc rigolo, le fichier ne s'affiche pas dans l'instance tant que le message du nb d'instances n'est pas activé. Je pense à un rafraichissement de l'écran à rajouter éventuellement.

    Si cella vous inspire ?

    Je n'ai tj pas trouvé comment me ballader d'une instance à une autre sans connaitre le nom du fichier à l'avance. A vos compiles Messieurs et merci pour vos futurs comments...

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    forum spécial Windows
    Ça existe sur DVP
    Pour se balader d'une instance d'Excel sur l'autre, je ne vois pas le pb.
    Quand tu crées une instance, tu as son nom. Si tu utilises le nom de l'instance dans une ligne de commande, c'est bien dans l'instance que tu te "balades"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim xlApp As Object 'on déclare l'objet application
    Dim wkb As Object 'on déclare un objet Workbook (non encore affecté)
    Dim sht As Object 'et on déclare un objet feuille (non encore affecté)
        Set xlApp = New Excel.Application 'On crée l'objet application
    'c'est ici que ça se passe : On se "balade" dans l'application pour créer l'objet Classeur
        Set wkb = xlApp.Workbooks.Add
    Et c'est bien dans xlApp qu'est créé l'objet wkb, et non dans l'application en cours.
    A moins que tu ne parles d'autre chose
    Tu dis
    A+

    Edit
    Pour le nom d'un classeur ouvert dans une instance, as-tu essayé de lister les classeurs et de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For each classeur in xlApp.workbooks
        Nom = Classeur.name
    Next
    NB - Une recommandation : Evite d'utiliser la sélection dans ton code. A de très rares exceptions près, l'utilisation de select ne fait que ralentir le code et créer des mouvements de fenêtres. Je parle de ces deux lignes que tu peux facilement simplifier :
    Range("A1").Select 'le traitement ici...
    ActiveCell.FormulaR1C1 = "Bonjour le traitement"
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1") = "Bonjour le traitement"
    Enfin, FormulaR1C1 est utilisé pour écrire dans des adresses relatives et est donc totalement inutile ici.
    Bonne journée

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,
    Quand tu crées une instance, tu as son nom.
    Oui, mais si j'ai bien compris, comment faire pour parcourir toutes les instances, quand on ne crée pas l'instance par macro ?

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

Discussions similaires

  1. [XL-2007] Formulaire VBA Excel - recherche sur plusieurs critères et affichage des résultats
    Par kl1ft dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/08/2016, 20h44
  2. [XL-MAC 2011] Recherche sur plusieurs fichiers excel
    Par Muzzik dans le forum Excel
    Réponses: 2
    Dernier message: 14/05/2015, 17h50
  3. [MySQL] Recherche sur plusieurs tables
    Par hubidev dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/03/2006, 10h42
  4. Réponses: 2
    Dernier message: 30/11/2004, 09h42

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