Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Re bonjour et merci de vous attacher à mon pb !
Poy-Poy ->
Ce qui se passe lorsque VBA arrive sur l'instruction wb.close c'est que la
lecture du code s'arrête net....AnonymousA a exactement compris ce qu'il se
passe et en fait à reformulé mon pb.
AnonymousA ->
Comme je le dit plus haut tu as reformulé ma question...Je m'étais rendu
compte de ce pb sans le ratacher à un pb de gestion mémoire ...... Donc
maintenant ma question devient plus simple. En admettant que mon concept soit
bancal ! Comment faire pour retransférer le focus du classeur devant se
fermer (dans l'exemple d'anonymous toto.xls) soit transférer au classeur
maître (gestion.xls ou toto.xls ds le cas d'anonymousA) ?
Je suis preneur de toutes les pistes ....
Cordialement
Re bonjour et merci de vous attacher à mon pb !
Poy-Poy ->
Ce qui se passe lorsque VBA arrive sur l'instruction wb.close c'est que la
lecture du code s'arrête net....AnonymousA a exactement compris ce qu'il se
passe et en fait à reformulé mon pb.
AnonymousA ->
Comme je le dit plus haut tu as reformulé ma question...Je m'étais rendu
compte de ce pb sans le ratacher à un pb de gestion mémoire ...... Donc
maintenant ma question devient plus simple. En admettant que mon concept soit
bancal ! Comment faire pour retransférer le focus du classeur devant se
fermer (dans l'exemple d'anonymous toto.xls) soit transférer au classeur
maître (gestion.xls ou toto.xls ds le cas d'anonymousA) ?
Je suis preneur de toutes les pistes ....
Cordialement
Re bonjour et merci de vous attacher à mon pb !
Poy-Poy ->
Ce qui se passe lorsque VBA arrive sur l'instruction wb.close c'est que la
lecture du code s'arrête net....AnonymousA a exactement compris ce qu'il se
passe et en fait à reformulé mon pb.
AnonymousA ->
Comme je le dit plus haut tu as reformulé ma question...Je m'étais rendu
compte de ce pb sans le ratacher à un pb de gestion mémoire ...... Donc
maintenant ma question devient plus simple. En admettant que mon concept soit
bancal ! Comment faire pour retransférer le focus du classeur devant se
fermer (dans l'exemple d'anonymous toto.xls) soit transférer au classeur
maître (gestion.xls ou toto.xls ds le cas d'anonymousA) ?
Je suis preneur de toutes les pistes ....
Cordialement
Re bonjour et merci de vous attacher à mon pb !
Poy-Poy ->
Ce qui se passe lorsque VBA arrive sur l'instruction wb.close c'est que la
lecture du code s'arrête net....AnonymousA a exactement compris ce qu'il se
passe et en fait à reformulé mon pb.
AnonymousA ->
Comme je le dit plus haut tu as reformulé ma question...Je m'étais rendu
compte de ce pb sans le ratacher à un pb de gestion mémoire ...... Donc
maintenant ma question devient plus simple. En admettant que mon concept soit
bancal ! Comment faire pour retransférer le focus du classeur devant se
fermer (dans l'exemple d'anonymous toto.xls) soit transférer au classeur
maître (gestion.xls ou toto.xls ds le cas d'anonymousA) ?
Je suis preneur de toutes les pistes ....
Cordialement
Re bonjour et merci de vous attacher à mon pb !
Poy-Poy ->
Ce qui se passe lorsque VBA arrive sur l'instruction wb.close c'est que la
lecture du code s'arrête net....AnonymousA a exactement compris ce qu'il se
passe et en fait à reformulé mon pb.
AnonymousA ->
Comme je le dit plus haut tu as reformulé ma question...Je m'étais rendu
compte de ce pb sans le ratacher à un pb de gestion mémoire ...... Donc
maintenant ma question devient plus simple. En admettant que mon concept soit
bancal ! Comment faire pour retransférer le focus du classeur devant se
fermer (dans l'exemple d'anonymous toto.xls) soit transférer au classeur
maître (gestion.xls ou toto.xls ds le cas d'anonymousA) ?
Je suis preneur de toutes les pistes ....
Cordialement
Re bonjour et merci de vous attacher à mon pb !
Poy-Poy ->
Ce qui se passe lorsque VBA arrive sur l'instruction wb.close c'est que la
lecture du code s'arrête net....AnonymousA a exactement compris ce qu'il se
passe et en fait à reformulé mon pb.
AnonymousA ->
Comme je le dit plus haut tu as reformulé ma question...Je m'étais rendu
compte de ce pb sans le ratacher à un pb de gestion mémoire ...... Donc
maintenant ma question devient plus simple. En admettant que mon concept soit
bancal ! Comment faire pour retransférer le focus du classeur devant se
fermer (dans l'exemple d'anonymous toto.xls) soit transférer au classeur
maître (gestion.xls ou toto.xls ds le cas d'anonymousA) ?
Je suis preneur de toutes les pistes ....
Cordialement
Merci de ta reponse ;)
Bon alors je v préciser un peu plus la finalité de la mon application ....
En fait, le fichier gestion.xls contient :
- une feuille de données clients
- une feuille modéle pour réaliser des devis
- une feuille modéle pour réaliser des factures
- une feuille modéle pour réaliser des bons de livraisons...
(je sais , j'aurai pu faire ça sous Access mais maitrîsant bien plus excel
je me suis orienté la dessus)....
Bref! Le classeur gestion.xls est mis à jour à chaque fois que l'on réalise
une opération (nouveau devis, nouvelle facture, modification de devis,
edition de bon de livraison) et je gére tout cela via plusieurs userform VBA
qui s'enchaînent en proposant des options aux utilisateurs : LES EMPLOYES DE
MA SOCIETE ^_^ ...
Alors en gros j'ai utilisé la méthode que je vous ai décrite parce que le
classeur gestion.xls génére des fichiers (pr les devis, les factures et les
bl)... Le pb c'est pas la génération de fichier mais la modification...
Puisque qu'à chaque modification d'un fichier, mon classeur MAITRE
(gestion.xls) ouvre le fichier selectionné par l'opérateur (listbox +
filesearch font des merveilles) et à partir de ce moment j'ai deux solutions :
-> soit je rend la userform qui m'a permis de selectionner puis d'ouvrir le
fichier non-modale ------------> Pb j'ai toujours ma userform qui reste
affichée
-> soit jer cache ma userform (ce que je fais) , donc plus de pb de
modalités et j'essai de redonner son status de maître au fichier gestion.xls
(ce que je n'arrive pas à faire qui n'est peu etre pas faisable d'ailleur
^_^) via un bouton + macro ....
Aprés avoir lu t proposition, il me semble que je ne devrai peu etre pas
essayer de passer comme cela et qu'au lieu d'essayer de fermer les classeurs
esclaves je devrai peu etre juste les masquer et lorsque je ferme le classeur
maître fermer tous les classeurs ouvert -------------> Pb en admettant que
je modifi 100devis différents j'aurai 100devis d'ouvert sans compté les pb de
fichiers déjà ouvert que l'on tente de réouvrir...... Ce qui me chagrine un
peu c'est que j'utilise la mm méthode pour créer un devis et que cela marche
sans pb ..... Cf ci-dessous...
Je peux vous transmettre mes fichiers si vous le souhaiter pour que vous
comprenniez bien le fonctionnement de mon application
Code de création d'un devis :
**************************************************
Private Sub b_creer_Click() 'fichier "gestion.xls"
Application.Run ("gestion.xls") & ("!CREERFICHIER")
End Sub
***************************************************
Sub CREERFICHIER()
Dim nomdevis, nomfichier, newbook As String
Dim xlline As Integer
'MAJ DES DONNEES
'RECUPERATION DE LA LIGNE XL CORRESPONDANT O CLIENT
xlline = devis_p2.recherche2.ListIndex + 3 ' Decalage de 3 due à la feuille
excel
Sht_Clients.Cells(xlline, 14) = Sht_Devis.Cells(9, 3) 'MAJ N° Proposition
Client
Sht_Donnees.Cells(2, 4) = Sht_Devis.Cells(10, 3) 'MAJ Nbre Global de Devis
'RECUPERATION DU NUMERO DE DEVIS'
nomdevis = Sht_Devis.Cells(14, 3)
nomfichier = "DV_" & nomdevis
'MISE EN FORME DU NOUVEAU CLASSEUR
Workbooks.Add
newbook = Application.ActiveWorkbook.Name
ActiveWindow.WindowState = xlMinimized
Workbooks(xlmaster).Activate
ActiveWindow.WindowState = xlMinimized
Sht_Devis.Select
Sht_Devis.Copy Before:=Workbooks(newbook).Sheets(1)
'MASQUAGE DU BOUTON CREER
Sht_Devis.b_creer.Visible = False
Sht_Devis.b_modifier.Visible = True
ActiveWindow.View = xlPageBreakPreview 'Apperçu des sauts de pages
'EFFACAGE DES FEUILLES QUI SERVENT A RIEN EN DESACTIVANT LES ALERTES
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
'MASQUAGE DES BOUTONS
ActiveSheet.b_modifier.Visible = False
ActiveSheet.b_retour.Visible = False
ActiveSheet.b_creer.Visible = False
'SAUVEGARDE
ActiveWorkbook.SaveAs Filename:=(chemindevis) & (nomfichier),
FileFormat:=xlNormal, password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
MSG_RECOK
ActiveWorkbook.Close
'EFFACAGE DU BROUILLON DEVIS
CLEARDEVIS
'RETOUR MENU
Menu.Show
End Sub
***************************************************
Votre avis la dessus ? ^_^
Merci de ta reponse ;)
Bon alors je v préciser un peu plus la finalité de la mon application ....
En fait, le fichier gestion.xls contient :
- une feuille de données clients
- une feuille modéle pour réaliser des devis
- une feuille modéle pour réaliser des factures
- une feuille modéle pour réaliser des bons de livraisons...
(je sais , j'aurai pu faire ça sous Access mais maitrîsant bien plus excel
je me suis orienté la dessus)....
Bref! Le classeur gestion.xls est mis à jour à chaque fois que l'on réalise
une opération (nouveau devis, nouvelle facture, modification de devis,
edition de bon de livraison) et je gére tout cela via plusieurs userform VBA
qui s'enchaînent en proposant des options aux utilisateurs : LES EMPLOYES DE
MA SOCIETE ^_^ ...
Alors en gros j'ai utilisé la méthode que je vous ai décrite parce que le
classeur gestion.xls génére des fichiers (pr les devis, les factures et les
bl)... Le pb c'est pas la génération de fichier mais la modification...
Puisque qu'à chaque modification d'un fichier, mon classeur MAITRE
(gestion.xls) ouvre le fichier selectionné par l'opérateur (listbox +
filesearch font des merveilles) et à partir de ce moment j'ai deux solutions :
-> soit je rend la userform qui m'a permis de selectionner puis d'ouvrir le
fichier non-modale ------------> Pb j'ai toujours ma userform qui reste
affichée
-> soit jer cache ma userform (ce que je fais) , donc plus de pb de
modalités et j'essai de redonner son status de maître au fichier gestion.xls
(ce que je n'arrive pas à faire qui n'est peu etre pas faisable d'ailleur
^_^) via un bouton + macro ....
Aprés avoir lu t proposition, il me semble que je ne devrai peu etre pas
essayer de passer comme cela et qu'au lieu d'essayer de fermer les classeurs
esclaves je devrai peu etre juste les masquer et lorsque je ferme le classeur
maître fermer tous les classeurs ouvert -------------> Pb en admettant que
je modifi 100devis différents j'aurai 100devis d'ouvert sans compté les pb de
fichiers déjà ouvert que l'on tente de réouvrir...... Ce qui me chagrine un
peu c'est que j'utilise la mm méthode pour créer un devis et que cela marche
sans pb ..... Cf ci-dessous...
Je peux vous transmettre mes fichiers si vous le souhaiter pour que vous
comprenniez bien le fonctionnement de mon application
Code de création d'un devis :
**************************************************
Private Sub b_creer_Click() 'fichier "gestion.xls"
Application.Run ("gestion.xls") & ("!CREERFICHIER")
End Sub
***************************************************
Sub CREERFICHIER()
Dim nomdevis, nomfichier, newbook As String
Dim xlline As Integer
'MAJ DES DONNEES
'RECUPERATION DE LA LIGNE XL CORRESPONDANT O CLIENT
xlline = devis_p2.recherche2.ListIndex + 3 ' Decalage de 3 due à la feuille
excel
Sht_Clients.Cells(xlline, 14) = Sht_Devis.Cells(9, 3) 'MAJ N° Proposition
Client
Sht_Donnees.Cells(2, 4) = Sht_Devis.Cells(10, 3) 'MAJ Nbre Global de Devis
'RECUPERATION DU NUMERO DE DEVIS'
nomdevis = Sht_Devis.Cells(14, 3)
nomfichier = "DV_" & nomdevis
'MISE EN FORME DU NOUVEAU CLASSEUR
Workbooks.Add
newbook = Application.ActiveWorkbook.Name
ActiveWindow.WindowState = xlMinimized
Workbooks(xlmaster).Activate
ActiveWindow.WindowState = xlMinimized
Sht_Devis.Select
Sht_Devis.Copy Before:=Workbooks(newbook).Sheets(1)
'MASQUAGE DU BOUTON CREER
Sht_Devis.b_creer.Visible = False
Sht_Devis.b_modifier.Visible = True
ActiveWindow.View = xlPageBreakPreview 'Apperçu des sauts de pages
'EFFACAGE DES FEUILLES QUI SERVENT A RIEN EN DESACTIVANT LES ALERTES
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
'MASQUAGE DES BOUTONS
ActiveSheet.b_modifier.Visible = False
ActiveSheet.b_retour.Visible = False
ActiveSheet.b_creer.Visible = False
'SAUVEGARDE
ActiveWorkbook.SaveAs Filename:=(chemindevis) & (nomfichier),
FileFormat:=xlNormal, password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
MSG_RECOK
ActiveWorkbook.Close
'EFFACAGE DU BROUILLON DEVIS
CLEARDEVIS
'RETOUR MENU
Menu.Show
End Sub
***************************************************
Votre avis la dessus ? ^_^
Merci de ta reponse ;)
Bon alors je v préciser un peu plus la finalité de la mon application ....
En fait, le fichier gestion.xls contient :
- une feuille de données clients
- une feuille modéle pour réaliser des devis
- une feuille modéle pour réaliser des factures
- une feuille modéle pour réaliser des bons de livraisons...
(je sais , j'aurai pu faire ça sous Access mais maitrîsant bien plus excel
je me suis orienté la dessus)....
Bref! Le classeur gestion.xls est mis à jour à chaque fois que l'on réalise
une opération (nouveau devis, nouvelle facture, modification de devis,
edition de bon de livraison) et je gére tout cela via plusieurs userform VBA
qui s'enchaînent en proposant des options aux utilisateurs : LES EMPLOYES DE
MA SOCIETE ^_^ ...
Alors en gros j'ai utilisé la méthode que je vous ai décrite parce que le
classeur gestion.xls génére des fichiers (pr les devis, les factures et les
bl)... Le pb c'est pas la génération de fichier mais la modification...
Puisque qu'à chaque modification d'un fichier, mon classeur MAITRE
(gestion.xls) ouvre le fichier selectionné par l'opérateur (listbox +
filesearch font des merveilles) et à partir de ce moment j'ai deux solutions :
-> soit je rend la userform qui m'a permis de selectionner puis d'ouvrir le
fichier non-modale ------------> Pb j'ai toujours ma userform qui reste
affichée
-> soit jer cache ma userform (ce que je fais) , donc plus de pb de
modalités et j'essai de redonner son status de maître au fichier gestion.xls
(ce que je n'arrive pas à faire qui n'est peu etre pas faisable d'ailleur
^_^) via un bouton + macro ....
Aprés avoir lu t proposition, il me semble que je ne devrai peu etre pas
essayer de passer comme cela et qu'au lieu d'essayer de fermer les classeurs
esclaves je devrai peu etre juste les masquer et lorsque je ferme le classeur
maître fermer tous les classeurs ouvert -------------> Pb en admettant que
je modifi 100devis différents j'aurai 100devis d'ouvert sans compté les pb de
fichiers déjà ouvert que l'on tente de réouvrir...... Ce qui me chagrine un
peu c'est que j'utilise la mm méthode pour créer un devis et que cela marche
sans pb ..... Cf ci-dessous...
Je peux vous transmettre mes fichiers si vous le souhaiter pour que vous
comprenniez bien le fonctionnement de mon application
Code de création d'un devis :
**************************************************
Private Sub b_creer_Click() 'fichier "gestion.xls"
Application.Run ("gestion.xls") & ("!CREERFICHIER")
End Sub
***************************************************
Sub CREERFICHIER()
Dim nomdevis, nomfichier, newbook As String
Dim xlline As Integer
'MAJ DES DONNEES
'RECUPERATION DE LA LIGNE XL CORRESPONDANT O CLIENT
xlline = devis_p2.recherche2.ListIndex + 3 ' Decalage de 3 due à la feuille
excel
Sht_Clients.Cells(xlline, 14) = Sht_Devis.Cells(9, 3) 'MAJ N° Proposition
Client
Sht_Donnees.Cells(2, 4) = Sht_Devis.Cells(10, 3) 'MAJ Nbre Global de Devis
'RECUPERATION DU NUMERO DE DEVIS'
nomdevis = Sht_Devis.Cells(14, 3)
nomfichier = "DV_" & nomdevis
'MISE EN FORME DU NOUVEAU CLASSEUR
Workbooks.Add
newbook = Application.ActiveWorkbook.Name
ActiveWindow.WindowState = xlMinimized
Workbooks(xlmaster).Activate
ActiveWindow.WindowState = xlMinimized
Sht_Devis.Select
Sht_Devis.Copy Before:=Workbooks(newbook).Sheets(1)
'MASQUAGE DU BOUTON CREER
Sht_Devis.b_creer.Visible = False
Sht_Devis.b_modifier.Visible = True
ActiveWindow.View = xlPageBreakPreview 'Apperçu des sauts de pages
'EFFACAGE DES FEUILLES QUI SERVENT A RIEN EN DESACTIVANT LES ALERTES
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
'MASQUAGE DES BOUTONS
ActiveSheet.b_modifier.Visible = False
ActiveSheet.b_retour.Visible = False
ActiveSheet.b_creer.Visible = False
'SAUVEGARDE
ActiveWorkbook.SaveAs Filename:=(chemindevis) & (nomfichier),
FileFormat:=xlNormal, password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
MSG_RECOK
ActiveWorkbook.Close
'EFFACAGE DU BROUILLON DEVIS
CLEARDEVIS
'RETOUR MENU
Menu.Show
End Sub
***************************************************
Votre avis la dessus ? ^_^
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay
Bonjour !
Je vais essayer d'être bref et précis. J'ai parcouru le forum en long
en large et en travers et je n'ai pas trouvé de solutions qui marche
pour moi.
Je gére un application un poil complexe depuis un classeur nommé
"Gestion.xls" qui crée différents classeurs que l'on va appellé
"Classeur(i).xls"...
Via mon interface VBA du classeur gestion.xls je recupére tous les
classeurs de maniére à pouvoir les modifier.
Tous les classeur(i) reçoive leur de leur sauvegarde un bouton "RETOUR
MENU".
Bon on entre dans le vif du sujet.
Via mon interface VBA de gestion.xls j'ouvre un classeur que je désire
modifier...
J'effectue mes modifications
Et maintenant je dois retourne sur l'application principale
(gestion.xls) en fermant ce classeur. Pour ce faire je clique sur le
bouton "retour menu" qui me lance la procédure suivante :
Application.Run ("gestion.xls") & ("!MODIFFICHIER")
dans le fichier "gestion.xls" j'ai :
**********************************************************
Sub MODIFFICHIER()
'SAUVEGARDE DU FICHIER
ActiveWorkbook.Save
ActiveWindow.WindowState = xlMinimized
MSG_RECOK 'ça c juste une msgbox
'RETOUR MENU
Workbooks("gestion.xls").Activate
ActiveWindow.WindowState = xlMinimized
'FERMETURE DES CLASSEURS INACTIFS
CLOSEWBK
Menu.Show
End Sub
**********************************************************
et pour finir (tjrs ds gestion.xls)
Public Sub CLOSEWBK()
Dim Wb As Workbook
Dim AWb As String
AWb = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> AWb Then
Wb.Close False
End If
Next Wb
Menu.show
End Sub
*********************************************************
MAis voila je n'arrive jamais à l'instruction menu.show parce que
lorsque dans la boucle "If" il tombe sur un classeur inactif, il le
ferme et voila c fini é_è
Si vous avez des pistes je suis preneur ....
J'ai déjà essayer en plaçant des evenements ds workbook_beforeclose
mais ça ne marche pas non plus ......
Merci Beaucoup !
Belay