Creation .exe en VBA impossible,solution intermediaire et questions pour bon cod [Résolu]

Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
- - Dernière réponse : louvierseb
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 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
Afficher la suite 

20/22 réponses

Meilleure réponse
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zen69
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
3
Merci
merci beaucoup
juste je met tout ca dans le code de mon userform?
il faut creer un sub?
merci

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de louvierseb
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
3
Merci
dans une sub ;)

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zen69
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
ils ne sont pas réduits ! c'est ton application excel qui est invisible !... et pour cause tu  as cette ligne : Application.Visible = False

par contre ton objectif n'est pas claire !

A+
Commenter la réponse de bigfish_le vrai
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
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?

merci encore pour votre aide
Commenter la réponse de louvierseb
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
0
Merci
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

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
Commenter la réponse de zen69
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
desole mais je dois obligatoirement utilise VBA seulement
merci de ton aide quand meme
dautres idees? pour faire la meme chose en vba?
merci
Commenter la réponse de louvierseb
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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

A+
Commenter la réponse de bigfish_le vrai
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
Tu peux utiliser le code de zen69 meme en VBA cala marche aussi !
Commenter la réponse de bigfish_le vrai
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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.
Commenter la réponse de bigfish_le vrai
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
0
Merci
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

Alors oublie le exe ...

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
Commenter la réponse de zen69
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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
Commenter la réponse de bigfish_le vrai
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
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
Commenter la réponse de louvierseb
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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

A+
Commenter la réponse de bigfish_le vrai
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
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

merci on va y arriver!!!!
Commenter la réponse de louvierseb
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
Pour ça il te faut utiliser la methode de zen69 qui comme je te l'ai deja dit fonctionne aussi en VBA.
Cette methode ouvre une nouvelle session excel.
Commenter la réponse de bigfish_le vrai
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
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?
Commenter la réponse de louvierseb
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
Aideeeeezzz moi sil vous plaittttt
je  dois rendre ce travail pour cet aprem (il est midi au canada..)
merci a tous
Commenter la réponse de louvierseb
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
0
Merci
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...

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
Commenter la réponse de zen69
Messages postés
63
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
je le met ou tout ca?
merci zen69...
Commenter la réponse de louvierseb