Ouvrir une feuille excel en VBA - VB/VBA/VBS - Programmation
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 ?
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 ?
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..
Marsh Posté le 09-12-2004 à 21:44:29
bah nulle part dans le code tu ne fais d'ouverture de fichier existant
Marsh Posté le 09-12-2004 à 21:48:44
Pour ouvrir un classeur :
Code :
|
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 :
|
Voilà, ça devrait marcher
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.
Marsh Posté le 09-12-2004 à 21:52:18
Comment lances-tu ton programme vba?
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 ?
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é...
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 !
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
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...
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..
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 !
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 :
|
Tu mets "Me.Hide comme cela :
Code :
|
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
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
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
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.
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
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 )
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 ?
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 :
|
ca t'eviteras le message " voulez vous rouvrir blablabla ..."
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...)
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 :
|
Ainsi, tu fermes le formulaire et tu actives la feuille voulue.
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 :
|
Merci bcp a vous deux !!!!
Marsh Posté le 09-12-2004 à 20:12:37
Bonjour,
Voilà, j'essaye désespérément 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
2e code :
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 :
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 !