De VB dans Excel à VB dans Visual Studio

Résolu/Fermé
stettcher Messages postés 8 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 28 mai 2010 - 21 août 2009 à 17:02
stettcher Messages postés 8 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 28 mai 2010 - 25 août 2009 à 11:21
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.
A voir également:

5 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 août 2009 à 18:11
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 août 2009 à 03:14
Et entre autre Ce tuto pour employer Excel dans VB6
A+
0
stettcher Messages postés 8 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 28 mai 2010
24 août 2009 à 15:38
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
24 août 2009 à 17:58
Il n'est pas possible d'entrer dans un classeur qui est déja ouvert dans une autre instance d'excel.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stettcher Messages postés 8 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 28 mai 2010
25 août 2009 à 11:21
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