Problème Sélectionner une feuille dans un autre classeur

flostralian Messages postés 26 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 26 mars 2015 - 19 juil. 2011 à 15:44
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 20 juil. 2011 à 18:07
Bonjour à tous,

J'ai cherché une solution sur le forum mais en vain... J'ai essayé de nombreuses solutions énoncées sur ce forum.
Mon problème est celui-ci.
Je dois exporter des données excel dans un autre classeur.
Ouvrir ce dernier, le rendre visible, et sélectionner la deuxième page de ce classeur.
Le problème est au niveau de la sélection de cette feuille et puis de la sélection de la cellule "A4".

Merci beaucoup

Voici mon code:
------------------------------------------------------------------

Sub Export()

Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel


'Ouverture de l'application = OK
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True

'Ouverture d'un fichier Excel = OK
Set wbExcel = appExcel.Workbooks.Open("D:\....\toto.xls")
appExcel.Visible = True

'wsExcel correspond à la deuxième feuille du classeur PROBLEME "Run time error 9, Subscript out of range" sur les lignes suivantes.
Activebook.Sheets("feuille2").Select
ActiveSheet.Range("A4").Select

End

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 juil. 2011 à 16:23
Bonjour,
1) C'est quoi, l'objet Activebook ?
Serait-ce ActiveWorkBook ?
2) tu as vérifié l'existence de ton chemin de classeur ? et- le nom de ta feuille ?.

___________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
flostralian Messages postés 26 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 26 mars 2015
19 juil. 2011 à 16:57
Bonjour,
Tous les éléments ont été vérifiés.
Le chemin du classeur est bon puisque le classeur s'ouvre normalement lors du lancement du code.
Le nom de la feuille a été vérifié, mais c'est celui ci qui pose problème puisque la feuille n'est pas sélectionnée.

J'ai changé également, suite à tes conseils le ActiveWorkBook. En vain.

Enfin, j'ai changé les deux dernières lignes du code en remplaçant successivement ces deux solutions trouvées sur des forums:
- Sheets("Feuille2").Select

Puis

- Set wsExcel = wbExcel.Worksheets(2)

Même problème......
Merci par avance...
Florian
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
19 juil. 2011 à 17:06
Bonjour,
Essaie ceci:

appExcel.Workbook.Select()
appExcel.Sheets(2).Select()



@+Le Pivert
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 juil. 2011 à 17:36
M'enfin...

Tiens ===>> je viens de le faire avec ton propre code (au départ), complété par du sensé ===>>

regarde :

Dim appExcel As Excel.Application 'Application Excel
  Dim wbExcel As Excel.Workbook 'Classeur Excel
  Dim wsExcel As Excel.Worksheet 'Feuille Excel
  Set appExcel = CreateObject("Excel.Application")
  'appExcel.Visible = True
   appExcel.Visible = False '====>> mise ici à false pour "y voir plus clair". remets-là à True ensuite
  'Ouverture d'un fichier Excel = OK
  Set wbExcel = appExcel.Workbooks.Open("D:\Classeur1.xlsm") '===>> mets bien entendu là TON chemin de classeur.
  Dim feuille As Worksheet
  For Each feuille In wbExcel.Worksheets
    MsgBox "la cellule B3 de la feuille " & feuille.Name & " du classeur " & _
    wbExcel.FullName & " contient la valeur " & feuille.Range("B3").Value
  Next




____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0

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

Posez votre question
flostralian Messages postés 26 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 26 mars 2015
20 juil. 2011 à 10:11
Bonjour à tous,
j'ai essayé vos propositions dont celle Ucfoutu, tout marche vraiment bien mais ce n'est pas exactement le but recherché...Peut être que je me suis mal exprimé...
Pour les deux dernières lignes du code, je souhaite sélectionner une feuille précise et une cellule dans un autre classeur (Autre où j'ai lancé la macro), je me suis aperçu d'un élément.
Lors de la macro, je me suis rendu compte que la sélection se faisait dans le premier classeur ou j'ai lancé la macro, et non dans le second.

Avez vous une idée?

Merci pour votre aide

----------------------------------------

Sub ExportQualibat()

Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel

'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True

'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("D:\....\....xls")
appExcel.Visible = True


' Probleme: ça selectionne la cellule dans le premier classeur où j'ai lancé la macro, et non le deuxième.
Sheets("feuil1").Select
Range("A4").Select


' J'ai essayé également ce code, mais même souci:
' Workbooks("toto.xls").Activate
' Activeworkbook.Sheets("feuil1").Select
' ActiveSheet.Range("A4").Select

End sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 juil. 2011 à 10:20
Lors de la macro, je me suis rendu compte que la sélection se faisait dans le premier classeur ou j'ai lancé la macro, et non dans le second.

Avez vous une idée?


Ah oui, alors, que j'en ai une, d'idée ! ===>> tu n'as rien compris au code que je t'ai donné (et que j'ai testé sans faille) !
Allez ===>> montre ce que tu as écrit depuis la ligne :
Set wbExcel = appExcel.Workbooks.Open("D:\....\....xls") 

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
20 juil. 2011 à 10:46
Salut,

j'ai une question :

travailles-tu sur VB.net ou VB2005 ?

apparemment non ! puisque je crois comprendre que ce code est dans un fichier excel et que ce code ouvre une nouvelle session d'excel pour travailler sur un deuxième fichier !!!

Ceci m’amène à une autre question :

pourquoi une deuxième session excel ?
quel est l’intérêt ?

A+
0
flostralian Messages postés 26 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 26 mars 2015
20 juil. 2011 à 10:57
Oui, c'est vrai, j'ouvre une nouvelle session alors que Excel est déjà ouvert. Donc pas trop d’intérêt en effet.
Je travaille sur Excel pour les données brutes et sur VB2005 pour le code des macros.

J'aimerai juste, comme énoncé ci dessus, je souhaite sélectionner une feuille précise et une cellule dans un autre classeur

Merci
Florian
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 juil. 2011 à 11:00
Boinjour, bigfish_le_vrai,

Tu as parfaitement raison et c'est ce que je lui aurais dit in fine (une fois comprise la mise en oeuvre actuelle avec utilisation de createobject au lieu de GetObject).

Mais qu'il fasse d'abord l'effort de comprendre ce qu'il fait déjà.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 juil. 2011 à 11:05
Il serait à ce propos bien inspiré de jeter un coup d'oeil à Cette discussion à laquelle je participe et qui devrait l'inspirer (s'il l'analyse !)

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 juil. 2011 à 18:07
M'enfin quoi !
Il suffit de relire cette partie du code (que je mets en citation pour pouvoir souligner) :
For Each feuille In wbExcel.Worksheets
MsgBox "la cellule B3 de la feuille " & feuille.Name & " du classeur " & _
wbExcel.FullName & " contient la valeur " & feuille.Range("B3").Value
Next

- wbExcel est le classeur examiné
- Il contient une collection de feuille (WorkSheets)
on se réfère à la feuille "truc" de ce classeur ainsi :
wbExcel.worksheets("truc")
ou, si la feuille truc est la seconde
wbExcel.WorkSheets(2)

Quand même !

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Rejoignez-nous