Ouvrir une feuille excel en VBA

Ouvrir une feuille excel en VBA - VB/VBA/VBS - Programmation

Marsh Posté le 09-12-2004 à 20:12:37    

Bonjour,  :hello:  
 
Voilà, j'essaye désespérément  :cry:  d'ouvrir une feuille excel avec du VBA, j'ai trouvé plusieurs codes sur internet, mais aucun d'eux ne marchent. J'ai beau remplacé les variables par les miennes, excel d'ouvre, mais ppur ouvrir la feuille, problème..
 
Voici les différents codes que j'ai trouvés :
1er code
 

Code :
  1. 'Déclaration des variables
  2. Dim appExcel As Excel.Application 'Application Excel
  3. Dim wbExcel As Excel.Workbook 'Classeur Excel
  4. Dim wsExcel As Excel.Worksheet 'Feuille Excel
  5. 'Ouverture de l'application
  6. Set appExcel = CreateObject("Excel.Application" )
  7. 'Ajout d'un classeur car à l'ouverture d'Excel il n'y a aucun classeur d'ouvert
  8. appExcel.Workbooks.Add 'Ceci n'est nécessaire que si vous n'ouvrez pas un fichier existant
  9. 'Récupération du classeur par défaut
  10. Set wbExcel = appExcel.ActiveWorkbook
  11. 'Récupération de la feuille par défaut
  12. Set wsExcel = wbExcel.ActiveSheet


 
2e code :

Code :
  1. 'Declaration de l'objet
  2. Public DevisExcel As Object
  3. 'on dit que l'objet est de type feuille excel et ouvre Excel
  4. Set DevisExcel = CreateObject("Excel.Application" )
  5. 'pour l'afficher à l'écran
  6. DevisExcel.Visible = True
  7. 'ajoute un nouveau classeur
  8. DevisExcel.Workbooks.Add
  9. 'supprime l'affichage des messages d'erreurs ou de confirmation de suppression, ...
  10. DevisExcel.DisplayAlerts = False
  11. 'selectionne la feuille du classeur
  12. DevisExcel.Sheets("Feuil2" ).Select
  13. 'on supprime cette feuille
  14. DevisExcel.ActiveWindow.SelectedSheets.Delete
  15. 'on fait pareil avec la feuille 3
  16. DevisExcel.Sheets("Feuil3" ).Select
  17. DevisExcel.ActiveWindow.SelectedSheets.Delete
  18. 'on selectionne la feuille 1 (la seule qui reste)
  19. DevisExcel.Sheets("Feuil1" ).Select
  20. 'on change le nom de celle ci
  21. DevisExcel.Sheets("Feuil1" ).Name = "Devis n°1"
  22. 'on sauvegarde la feuille sous le nom contenu dans NomSauvegarde
  23. DevisExcel.ActiveWorkbook.SaveAs FileName:=NomSauvegarde, _
  24. FileFormat:=17, Password:="", WriteResPassword:="", _
  25. ReadOnlyRecommended:=False, CreateBackup:=False
  26. 'on quitte excel
  27. DevisExcel.Application.Quit


 
Je pense que les 3/4 de ce code ne me sont pas nécessaires (à partir de "on supprime cette feuille" )mais bon..
 
 
3e code :

Code :
  1. 'Déclaration des variables
  2. Dim appExcel As Excel.Application 'Application Excel
  3. Dim wbExcel As Excel.Workbook 'Classeur Excel
  4. Dim wsExcel As Excel.Worksheet 'Feuille Excel
  5. 'Ouverture de l'application
  6. Set appExcel = CreateObject("Excel.Application" )
  7. 'Ajout d'un classeur car à l'ouverture d'Excel il n'y a aucun classeur d'ouvert
  8. appExcel.Workbooks.Add 'Ceci n'est nécessaire que si vous n'ouvrez pas un fichier existant
  9. 'Récupération du classeur par défaut
  10. Set wbExcel = appExcel.ActiveWorkbook
  11. 'Récupération de la feuille par défaut
  12. Set wsExcel = wbExcel.ActiveSheet


 
 
Pensez vous que l'un de ces codes soit mieux que les autres ? Ou est ce qu'aucun de ces derniers ne correspond à ce que je veux ? Et qu'est ce que je peux bien oublier de faire ?  
 
Merci bcp pour votre aide !  :jap:

Reply

Marsh Posté le 09-12-2004 à 20:12:37   

Reply

Marsh Posté le 09-12-2004 à 20:47:30    

Salut,
 
Il faut que tu précises un peu. Où te trouves-tu ? Tu parles de VBA donc tu es dans une appli d'Office... Laquelle ? Es-tu dans Excel ou Word ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 09-12-2004 à 21:35:07    

Suis dans excel...

Reply

Marsh Posté le 09-12-2004 à 21:39:08    

Donc tu veux ouvrir un autre classeur Excel. Est-ce bien cela ? Tu veux ouvrir un classeur existant ou en créer un autre ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 09-12-2004 à 21:40:09    

Veut ouvrir un classeur qui existe déjà, en particulier une feuille dans ce classeur qui contient déjà des données..

Reply

Marsh Posté le 09-12-2004 à 21:44:29    

bah nulle part dans le code tu ne fais d'ouverture de fichier existant :??:


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 09-12-2004 à 21:48:44    

Pour ouvrir un classeur :

Code :
  1. Workbooks.Open Filename:=nomdetonfichier


avec le chemin entier et le nom de ton classeur du style C:\Documents and Settings\Truc\Mes documents\monfichier.xls et pour sélectionner ta feuille:

Code :
  1. Worksheets(feuille).Select


Voilà, ça devrait marcher  :)


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 09-12-2004 à 21:48:59    

ben dans mon programme qui est déjà fait, j'inscris juste des données dans excel à partir de mon vba, mais je n'ai pas programmer de bouton qui permet, en cliquant dessus, d'afficher excel.. C'est ce que je cherche à faire. Moi dans ce que j'ai fait, il faut quitter vba et aller dans excel.

Reply

Marsh Posté le 09-12-2004 à 21:52:18    

Comment lances-tu ton programme vba?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 09-12-2004 à 21:54:39    

euh je fais lecture lol
vais ds excel, j'affiche la barre d'outil VB, je clique dessus, ca m'amene tous mes userforms, mon code etc, et lecture.
 
Ca répond à ta question ?

Reply

Marsh Posté le 09-12-2004 à 21:54:39   

Reply

Marsh Posté le 09-12-2004 à 21:59:42    

oui. Donc tu voudrais plutôt un bouton dans excel qui lance ton programme au lieu d'aller le chercher ?
Si c'est le cas, tu construis un bouton à l'aide de la barre d'outil formulaire et il te demandera quelle macro exécuter lorsqu'on clique dessus. Il suffit de la choisir et le tour est joué...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 09-12-2004 à 22:07:16    

lol c'était pas de ça dont je parlais, mais figure toi que j'ai quand meme besoin d'un bouton dans ce style.
Pour revenir à ce dont moi je parlais : mon programme est un programme de "gestion des notes des élèves". Quand je suis sous vba, je veux un bouton sur un userform qui me permette d'afficher la feuille excel, dans laquelle j'ai rentré mes notes (grâce à ce merveilleux programme vba), il faut en fait que l'utilisateur puisse visualiser les notes qu'il a rentré.
 
D'autre part, pour rejoindre ce que tu disais, j'aimerais en effet un bouton sous excel, qui quand cette super feuille excel pourra être affichée, me permette de retourner sous mon programme vba. Je sais qu'il faut une macro, comment l'affecter au bouton etc. Mais je ne sais pas comment faire pour créer cette macro, disons la programmer pour que quand je clique sur mon bouton, cela revienne à mes userform. On avait fait des trucs batos en cours genre mettre des cellules excel en couleur avec une macro, mais ça...
 
Mon dieu qu'elle est longue cette réponse..
Voilà, j'espere que tu comprends à peur près..
 
Merci d'essayer de m'aider !  :jap:

Reply

Marsh Posté le 09-12-2004 à 22:20:28    

J'espère avoir compris ce que tu veux dire. Tu veux mettre en premier plan le classeur Excel déjà ouvert. Par contre je ne comprends par pourquoi tu vas dans le vba, mais bon, ce n'est pas mes affaires...
Tu fais ton useform si il n'est pas déjà construit, tu mets un bouton. Tu double-cliques dessus et tu mets le code entre "Sub" et "End Sub" qui viennent d'apparaîtrent:
Workbooks("classeur.xls" ).Activate


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 09-12-2004 à 22:25:47    

j'ai compris ton problème. Tu veux enlever l'interface deton programme (tes useforms). Tu mets plutôt le code suivant "Me.hide" sur le doucle-clic du bouton. Cela enlèvera le useform sur lequel il se trouve...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 09-12-2004 à 22:29:11    

lol y'a un progrès, disons que là, on sent que l'ordi cherche mais alors il a du mal, ca marche pas et je suis obligée de faire Ctrl+Alt+Suppr..
 
J'ai mis ce que tu m'as dit de mettre dans une boucle Do Loop, je sais pas i c une boucle mais bon on se comprend lol.
Mais bon faudrait que j'active la feuille aussi..

Reply

Marsh Posté le 09-12-2004 à 22:33:15    

Nos messages se sont croisés..
 
Ouais le code "Me.Hide", pkoi pas, je veux bien te croire lol
Je suis incapable de faire un truc pareil, ptetre que mon cop saura le faire, avec tout ce qui a été dit ce soir, il trouvera bien un truc, enfin j'espere lol
Comme tu peux le constater je fais pas grd chose par moi meme !!  :)  
 
Merci pour ton aide, je repasserai surement demain essayer de résoudre ce pb, si ca te dit d'essayer encore de répondre..
 
Là vais me coucher, suis nase.
Encore merci, bonne soirée ! :bounce:

Reply

Marsh Posté le 09-12-2004 à 22:34:57    

Pourquoi mettre cela dans une boucle. Ton ordi plante parce qu'il ne peut pas sortir de la boucle...
Tu as ton programme vba. Tu mets dessus un bouton dans Microsoft Visual Basic (éditeur de VBA d'Excel) que tu pourras appeler "Quitter" (pour revenir à la feuille de note). Tu double-clique sur le bouton que tu viens de créer, une nouvelle macro vide apparaît du style:

Code :
  1. Private Sub CommandButton1_Click()
  2.    
  3. End Sub


Tu mets "Me.Hide comme cela :

Code :
  1. Private Sub CommandButton1_Click()
  2.     Me.Hide
  3. End Sub


Voilà, ceci te permettras de quitter ton interface du programme et de retourner à Excel.
 
Pour faire un bouton pour lancer ton appli vba, tu dois connaître le nom de la macro première à lancer. Elle doit porter un nom dans ce sens là. Tu crées un bouton comme je te l'ai dis auparavant et tu choisis la macro qui lance le vba.
 
Le tour est normalement joué.
 
Bonne fin de soirée :hello:


Message édité par Manu la Science le 09-12-2004 à 22:37:51

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 10-12-2004 à 12:17:16    

Salut,  
je suis le copain qui l'aide ;)
 
J'ai essayé :
Workbooks.Open FileName:="C:\Documents and Settings\Administrateur\Bureau\Projet.xls"
Worksheets("tableau" ).Select
 
mais ca ne marche pas, ca me dis que le workbook est deja ouvert et donc si je clic sur oui pour réouvrir, ca lance excel et ferme les formulaires vba et en plus ca ouvre pas la page voulu d'excel ca met juste la premiere feuille (on veut la 4eme)...
Pas facile cette histoire :/

Reply

Marsh Posté le 10-12-2004 à 12:25:22    

ThisWorkbook.Sheets("tableau" ).Select
en faisant ca, ca marche mais ca ne me met pas excel en premier plan (ca selectionne bien la feuille tableau mais j'ai tjs mon formulaire au premier plan)
Comment mettre la feuille en premier plan ?
De plus peut on acceder au proprieté de la feuille excel pour par exemple ne pas avoir en bas les onglets permettant de passer aux autres feuille ou encore de virer la barre d'outil ?
 
Merci :)

Reply

Marsh Posté le 10-12-2004 à 12:36:28    

Workbooks.Open FileName:="C:\Documents and Settings\Administrateur\Bureau\Projet.xls"  
 
Nom=ActiveWorkbook.Name
 
Workbooks(NOM).Worksheets("tableau" ).activate
 
ActiveWindow.DisplayWorkbookTabs = False
 
Application.DisplayFullScreen = True
 
Userform1.Hide

 
si "Userform1" est bien le nom de ton formulaire
 
En ce qui concerne le fait d'avoir la macro toujours a disposition tu peut la charger comme macro complementaires et inserer un bouton dans une barre d'outils d'excel.
Ceci te permettera de l'ouvrir a n'importe quel moment sans etre obligé de lancer l'ouverture du fichier la contenant.


Message édité par Profil supprimé le 10-12-2004 à 12:40:08
Reply

Marsh Posté le 10-12-2004 à 12:47:17    

Cool merci, gargamail, je viens de tester ca, ca marche niquel :)
 
Par contre 2 petits problemes :
ActiveWindow.DisplayWorkbookTabs = False  
Application.DisplayFullScreen = True  
Cela ne semble pas marcher mais bon c'est un détail et du moment que la feuille excel apparait au premier plan c'est deja tres bien ! :)
 
Par contre cela ferme vba et donc le formulaire, c'est pour ca que vous parlez d'une macro pour ouvrir le formulaire quand on clic dessus depuis excel ? Je vais regarder ca, merci en tout cas :)
 
Edit : Marche niquel avec la macro :)


Message édité par Loizo le 10-12-2004 à 12:48:57
Reply

Marsh Posté le 10-12-2004 à 13:00:35    

Par contre y a un probleme, j'ai donc un formulaire pour afficher les notes d'une classes par matiere. La feuille excel se rempli bien comme il faut, ca c'est ok. Par contre quand je veux l'afficher, ca va me l'afficher avec les anciennes caracteristiques.
Par exemple si avant j'affichais les notes de T1 en math avant de tester le code d'affichage d'excel ca m'affichait bien T1 en math. Mais maintenant apres avoir mis ce code si je met T2 en anglais ca charge bien le T2 en anglais mais quand ca affiche ca remet T1 en math... (Surement a cause du msg "Projet.xls est deja ouvert, si vous l'ouvrez à nouveau, toutes vos modifications seront perdus. Voulez vous rouvrir Projet.xls ?" En cliquant oui ca doit remettre comme c'etait :/)


Message édité par Loizo le 10-12-2004 à 13:15:24
Reply

Marsh Posté le 10-12-2004 à 13:52:51    

je n'ai pas tout saisi , mais pour moi ta macro et son formulaire doivent etre dans un fichier bien a part.
Qu'y a t'il exactement dans ton fichier "Projet.xls" pour avoir a l'ouvrir a nouveau a chaque fois ?

Reply

Marsh Posté le 10-12-2004 à 14:19:51    

Pour eviter d'ouvrir à chaque fois ton fichier "Projet.xls", tu peut inserer ca au debut de ton code ou juste avant la commande d'ouverture
 

Code :
  1. OUV=0
  2. For t = 1 To Workbooks.Count
  3. If Workbooks(t).Name="Projet.xls" then OUV=1
  4. Next t
  5. If OUV=0 then Workbooks.Open FileName:="C:\Documents and Settings\Administrateur\Bureau\Projet.xls"


 
ca t'eviteras le message " voulez vous rouvrir blablabla ..."


Message édité par Profil supprimé le 10-12-2004 à 14:20:23
Reply

Marsh Posté le 10-12-2004 à 15:39:17    

Bah dans le projet de ma copine, y a le "Projet.xls" contenant 5 feuilles excel (3 classes, 1 matiere et 1 tableau de note) + si on clic sur le bouton vba tous les formulaire avec leur code. Donc en gros on a un formulaire "afficher les notes" qui ouvre la feuille "tableau" du projet en cours "Projet.xls".
C'est pour ca qu'a priori ca rouvre la version anciennement enregistré de Projet.xls et donc sans les modifs qu'on vient d'aporter (afficher les notes d'une autre matiere par exemple, ca affiche tjs ce qu'on vient d'enregistrer...)

Reply

Marsh Posté le 10-12-2004 à 15:54:37    

Quand tu parles de formulaire et de code, tu es dans l'éditeur de macros vba d'Excel ou tu as lancé les macros ? Est-ce le même écran que celui obtenu en cliquant sur Outils dans Excel, Macro puis Microsoft Visual Editor ?
Si tu veux revenir au classeur et à la feuille modifiée, il faut que tu "caches" le formulaire qui se trouve au premier plan et qui t'empêche de voir la feuille. Tu peux mettre un bouton sur le formulaire en question et le code suivant:

Code :
  1. Private Sub CommandButton1_Click()
  2. Me.Hide
  3. Sheets("mafeuille" ).Select
  4. End Sub


Ainsi, tu fermes le formulaire et tu actives la feuille voulue.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 10-12-2004 à 16:12:03    

Yes ca marche niquel avec ta methode + les lignes de gargamail !!
Donc en gros pour ceux interessé je fais comme ceci :
 

Code :
  1. 'On affiche la feuille Excel
  2. Me.Hide
  3. Sheets("tableau" ).Select
  4. ActiveWindow.DisplayWorkbookTabs = False
  5. Application.DisplayFullScreen = True


 
Merci bcp a vous deux !!!!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed