louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009
-
25 juil. 2008 à 15:53
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009
-
25 juil. 2008 à 21:33
Bonjour,
Japprends que lon ne peut pas creer d'exe en VBA mais je desespere pas
jai le code suivant
Private Sub Workbook_Open()
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action1.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action2.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action3.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action4.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action5.xls")
Application.Visible = False
UserformInterface.Show
End Sub
Seuls problemes,
1/ imaginons que jai un autre classeur excel d'ouvert, et bien, il me le reduira avec les autres
2/ ils vont ou quand ils sont reduits'ils sont meme pas dans la barre des taches et donc imaginons que je le relance ils me parle de recuperation et de fichier en read only
3/comme solution a la question 2 on pourrait faire en sorte que quand on clique sur la croix du userform il ferme toutes les fenetres en enregistrant les modif, avez vous une idee de code
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 25 juil. 2008 à 19:42
et la derniere ligne de code je dois lappliquer a Action1.2.3.4.5 aussi?elle fait koi en fait?
Set xlApp = CreateObject("Excel.Application")
cette ligne va ouvrir une nouvelle application excel
Set xlWb(i) = xlApp.Workbooks.Open(Filename:="d:\data\286874870\Desktop\Stagiaire\Programme\Action" & i & ".xls")
cette ligne va ouvrir un nouveau workbook (donc fichier excel) dans ton xlapp
Comme il est possible d'avoir plusieurs workbook d'ouvert pour une meme instance de excel.exe (voir dans tes processus windows)... xlapp a la main sur tes 5 fichiers...
pour controler c'est fichier tu passe comme suit...
Pour choisir le contenu de la cellulle B2 dans le fichier Action3
dim str as string
str = xlapp.workbooks(3).range("B2").formula
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009 25 juil. 2008 à 16:17
Objectifs,
1/ imaginons que jai un autre classeur excel d'ouvert sur un sujet different que je bosse en parallele, et bien, en ouvrant le classeur qui contient le code d'au dessus,il me rendra invisible le classeur avec le code mais aussi celui sur le sujet different Comment y remedier?
2/comment faire en sorte que quand on clique sur la croix dun userform il ferme toutes les fenetres relatives a l'userform en enregistrant les modif?
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 25 juil. 2008 à 16:21
En effet pas de exe en VBA mais... VBA est tellement pret de VB6 que tu peux devellopper en VB6 avec du code VBA (ou presque)... Alors utilise VB :P
Voici un example en vb:
Dim xlApp as Excel.Application
Dim xlWb As Excel.Workbook
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible = False
.AlertBeforeOverwriting = False
.DisplayAlerts = False
End With
Set xlWb = xlApp.Workbooks.Open(Filename:="c:\monFichierXL")
NB : Tu dois inclure la reference Microsoft Excel XX.X Object Library a ton projet pour que ceci fonctionne
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 25 juil. 2008 à 16:32
le code suivant ferme tous les classeurs dont le nom commence par action, lors de la fermeture du userform :
ce code est a mettre dans la page de code du userform
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim Classeur As Workbook, RacineNomFichier As String
RacineNomFichier = "action"
For Each Classeur In Workbooks
If Left$(LCase(Classeur.Name), Len(RacineNomFichier)) = RacineNomFichier Then
Classeur.Close SaveChanges:=False
End If
Next
End Sub
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 25 juil. 2008 à 16:40
au faite zen69 si tu declares tes variables en object au lieu de excel.aplication et Excel.Workbook tu n'aura pas besoin de la reference Microsoft Excel XX.X Object Library.
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 25 juil. 2008 à 16:56
au faite zen69 si tu declares tes variables en object au lieu de
excel.aplication et Excel.Workbook tu n'aura pas besoin de la reference
Microsoft Excel XX.X Object Library.
Merci du tuyau ;)
desole mais je dois obligatoirement utilise VBA seulement
merci de ton aide quand meme
dautres idees? pour faire la meme chose en vba?
merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 25 juil. 2008 à 17:01
ouups j'ai pas vu que tu voulais enregistrer les modifs
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim Classeur As Workbook, RacineNomFichier As String
RacineNomFichier = "action"
For Each Classeur In Workbooks
If Left$(LCase(Classeur.Name), Len(RacineNomFichier)) = RacineNomFichier Then
Classeur.Close SaveChanges:=True End If
Next
End Sub
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009 25 juil. 2008 à 17:01
big fish es tu sur de ton code?
ca marche pas....
Private Sub UserformInterface_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim Classeur As Workbook, RacineNomFichier As String
RacineNomFichier = "Action"
For Each Classeur In Workbooks
If Left$(LCase(Classeur.Name), Len(RacineNomFichier)) = RacineNomFichier Then
Classeur.Close SaveChanges:=True
End If
Next
End Sub
mes fichiers sont Action1.xls
Action2,3,4,5 et Interface.xls a partir duquel se trouve le userform
merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 25 juil. 2008 à 17:10
c'est normale tu as remplacé :
RacineNomFichier "action" par RacineNomFichier "Action" et comme ici :
If Left$(LCase(Classeur.Name), Len(RacineNomFichier)) = RacineNomFichier Then
j'utilise un lCase cela ne peu plus fonctionner ! et si tu comprend pas pourquoi ce n'est pas grave. Tu comprendra plus tard en attendent remplace du if par celle-ci :
If Left$(LCase(Classeur.Name), Len(RacineNomFichier)) = LCase(RacineNomFichier) Then
et puis stp evite de repondre par : ca marche pas.... car ce n'est pas avec ce genre de reponse que l'on pourra t'aider
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009 25 juil. 2008 à 17:11
Mais aussi,
avez vous une idee pour resoudre le 1er pb
1/ imaginons que jai un autre classeur excel essai.xls d'ouvert sur un sujet different que je bosse en parallele, et bien, en ouvrant le classeur programme.xls qui contient le code;
Private Sub Workbook_Open()
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action1.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action2.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action3.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action4.xls")
Workbooks.Open ("d:\data\286874870\Desktop\Stagiaire\Programme\Action5.xls")
Application.Visible = False
UserformInterface.Show
End Sub
et bien louvertur de programme.xls me rendra invisible aussi essai.xls Comment y remedier?
idee mais je ne sais pas le coder
appliquer Application.Visible=False que pour programme.xls
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009 25 juil. 2008 à 17:25
jai modifie le code ainsi:
Dim xlApp as Object
Dim xlWb As Object
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible = False
.AlertBeforeOverwriting = False
.DisplayAlerts = False
End With
Set xlWb = xlApp.Workbooks.Open(Filename:="d:\data\286874870\Desktop\Stagiaire\Programme\Interface.xls")
je suis pas bon en code ca vous parait correct?
et je le met dans le code de mon userform je suppose?
et la derniere ligne de code je dois lappliquer a Action1.2.3.4.5 aussi?elle fait koi en fait?
merci pour ton aide big fish!!!
tu prends les cheques?
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 25 juil. 2008 à 19:35
Dim xlApp as Object
Dim xlWb(5) As Object
Dim i as integer
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible = False
.AlertBeforeOverwriting = False
.DisplayAlerts = False
End With
for i = 1 to 5
Set xlWb(i) = xlApp.Workbooks.Open(Filename:="d:\data\286874870\Desktop\Stagiaire\Programme\Interface" & i & ".xls")
next i
xlapp.visible = false
PS: je n'ai jamais tenter de creer un array avec des objets... mais je crois pas qu'il y auras de problemes...