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

C# Discussion :

Pointer sur le bon process Excel.Exe


Sujet :

C#

  1. #1
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut Pointer sur le bon process Excel.Exe
    Bonjour à tous,

    je souhaiterai avoir un peu de conseils sur un bout de code sur lequel je butte

    Je souhaite à partir d'un nom de classeur (test.xls) pouvoir rattacher l'application Excel sur laquelle le classeur est ouvert (je suis dans un cas de figure avec plusieurs Excel.Exe tournant simultanément sur le poste).

    Au niveau de l'algorithme, c'est bon j'arrive à cela :
    Pour tous les process
    >Si le Process.Nom = Excel.Exe alors
    >>Rattacher mon xlApp sur le process à partir de son ID
    >>Parcourir tous les classeurs ouverts
    >>détecter si le nom du classeur correspond

    Bref, côté code, il me manque mon étape de rattachement :

    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
    private void button1_Click(object sender, EventArgs e)
            {
                Microsoft.Office.Interop.Excel.Application xlapp;
                //Microsoft.Office.Interop.Excel.Workbook xlwbk;
                Process[] processlist = Process.GetProcesses();
     
                foreach(Process theprocess in processlist)
                {
                    if (theprocess.ProcessName.IndexOf("EXCEL") >= 0)
                    {
                        //ici
                        //xlapp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject(theprocess.Id) ;
                        foreach(Microsoft.Office.Interop.Excel.Workbook xlwbk in xlapp.Workbooks)
                        {
                            if (xlwbk.Name.IndexOf(this.textBox1.Text) > 0)
                            {
                                MessageBox.Show("Trouvé!");
                            }
                        }
                        MessageBox.Show("Process: " + theprocess.ProcessName + "ID: " + theprocess.Id);
     
                    }
     
                }
                MessageBox.Show("Fini !");
     
            }
    Quel code dois-je utiliser pour faire le lien xlapp = Mon application ?

    Merci d'avance pour vos lumières
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    Hello,

    j'ai quelque peu contourner le problème en pointant non pas sur les applications Excel, mais en pointant directement sur le classeur :
    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
    private void button1_Click(object sender, EventArgs e)
            {
     
                //declaration
                Microsoft.Office.Interop.Excel.Workbook xlwbk;
                Microsoft.Office.Interop.Excel.Application xlapp;
                object test;
                //exemple de code sur cas de fichier non ouvert/inexistant
                try
                {
                    test = Microsoft.VisualBasic.Interaction.GetObject("fauxemplacement");
                }
                catch (Exception exc)
                {
                    MessageBox.Show(exc.Message);
                }
     
                //initialisation
                xlwbk = (Microsoft.Office.Interop.Excel.Workbook)Microsoft.VisualBasic.Interaction.GetObject(this.textBox1.Text);
     
                xlapp = xlwbk.Application;
                //a partir de ce point on doit pouvoir travailler avec xlapp et xlwbk
     
     
     
            }
    je laisse le sujet ouvert, car j'aurais souhaité traiter mon problème comme énoncé à l'origine
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. Pointer sur une cellule fusionnée en Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 56
    Dernier message: 03/02/2009, 11h48
  2. Pointer sur le bon enregistrement Firebird et delphi2007
    Par makaphrodite dans le forum Bases de données
    Réponses: 4
    Dernier message: 22/01/2009, 10h31
  3. Impossible de fermer le process 'Excel.exe'
    Par davidQC dans le forum VB.NET
    Réponses: 5
    Dernier message: 24/09/2007, 14h20
  4. Pointer sur le bon Objet
    Par Cpt Anderson dans le forum Delphi
    Réponses: 4
    Dernier message: 12/02/2007, 10h36
  5. [VBA-E] Pointer sur un autre fichier Excel
    Par Yop dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/12/2006, 19h43

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