De VB dans Excel à VB dans Visual Studio

Résolu
stettcher Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
stettcher Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai composé quelques lignes VB sous macro Excel qui marchent parfaitement bien.
Pour avoir plus d'options, je suis passé sous Visual Studio qui râle lors de l'éxécution de ces lignes ....

Voici mon soucis:

afin d'activer un fichier Excel ouvert (nomé "arbre.xls"), j'ai frappé la fonction:

Windows("Arbre.xls").Activate (elle est incluse dans une sub)

Si celle-ci fonctionne sous Excel, Visual Studio bloque sur "Windows " et me dit "Procédure sub ou function non définie".

Faut-il déclarer "Windows"? (set ... ) et si oui, comment ?
Est-ce autre chose?

Merci d'avance pour votre aide.
Configuration: Windows XP Internet Explorer 7.0

5 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Tu dois mettre la référence de ton excel.
    et créer une instance d'excel (objet) dans VB
    Il y a une multitude de tuto sur ce sujet.
    A+
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Et entre autre Ce tuto pour employer Excel dans VB6
    A+
    0
  3. stettcher Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci Lermite pour tes réponses qui m'ont bien éclairé.

    Je pense qu'il faut aussi ajouter que sous VB 6 il faut cocher "Microsoft Excel" dans "Projet->Références" pour que le code pour Excel soit pris en compte.

    Voici ce que ça donne:

    Private Sub Command1_Click()

    Dim appExcel As Excel.Application
    Dim wbExcel As Excel.Workbook
    Dim wsExcel, As Excel.Worksheet

    Set appExcel = CreateObject("Excel.Application")

    Set wbExcel = appExcel.Workbooks.Open("c:\arbre.xls")

    Set wsExcel = wbExcel.Worksheets(Famille) 'Pour l'onglet "famille

    ' Ici tout un tas d'opérations .... puis on quite

    wbExcel.Save

    wbExcel.Close

    appExcel.Quit

    End Sub

    Cela fonctionne très bien si le chemin du fichier est correct.
    Je souhaiterais toutefois conserver l'idée du départ, c-à-d d'activer un fichier Excel déja ouvert (par exemple si le fichier est ammené à être déplacé sans être renommé).
    Par quoi faut-il remplacer la ligne suivante [ Set wbExcel = appExcel.Workbooks.Open("c:\arbre.xls") ] vu que le [.Activate] ne fonctionne plus ?

    Merci d'avance
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Il n'est pas possible d'entrer dans un classeur qui est déja ouvert dans une autre instance d'excel.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. stettcher Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
     
    Pourtant en VB dans des macros Excel ça fonctionnait.
    Il faut croire que Excel reconnait les siens ... dommage.

    Merci encore une fois Lermite pour ton aide
    0