Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bouton formulaire

9 réponses
Avatar
Manu
Bonjour,

Est t'il possible de faire appel par un simple bouton de formulaire une
macro Private Sub Workbook_BeforeClose(Cancel As Boolean)

Car j'ai essayé de faire appel avec un bouton formulaire à mon
workbook_before close par une ligne :
Sub femeture()
ActiveWindow.Close
End Sub
Mais ca ne fait pas fonctionner mon workbook_before

Merci

Manu

9 réponses

Avatar
AV
remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV

Avatar
Manu
Ca fait pareil, dans mon workbook_before close, j'ai ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'test si On valide ou pas
Msg = MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?", 4)
If Msg = 6 Then

'Enregistre le fichier dans l'historique en commencant par Cont + jour +
mois + année
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"
Fichier = "Cont" & _
" " & Cells(8, 2).Value & " " & Day(Now) & _
"-" & Month(Now) & "-" & Year(Now) & ".xls"

ActiveWorkbook.SaveAs Filename:=Repertoire & Fichier


'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and SettingsAdministrateurBureauBDDBDD Contrat.xls"

'Réactive le fichier dans l'historique
Workbooks(Fichier).Activate
....
....
....

Et c'est dans cette ligne que le debogueur m'emmene :
Workbooks(Fichier).Activate

Il faut souligné que j'ai mis cette macro ci dessous dans thisWorkbook (je
ne peux pas la mettre dans un module)
Sub femeture()
ActiveWorkbook.Close
End Sub




"AV" a écrit dans le message de news:

remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV




Avatar
MichDenis
Tu as combien de classeurs d'ouverts ?
Dans quel classeur est ton code ?
Si ton code se retrouve dans le classeur que tu fermes
tu risques de rencontrer des problèmes !

Tu aurais avantage à décrire ton environnement de travail...
les suggestions seraient peut être plus appropriées.

"Manu" a écrit dans le message de news:

Ca fait pareil, dans mon workbook_before close, j'ai ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'test si On valide ou pas
Msg = MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?", 4)
If Msg = 6 Then

'Enregistre le fichier dans l'historique en commencant par Cont + jour +
mois + année
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"
Fichier = "Cont" & _
" " & Cells(8, 2).Value & " " & Day(Now) & _
"-" & Month(Now) & "-" & Year(Now) & ".xls"

ActiveWorkbook.SaveAs Filename:=Repertoire & Fichier


'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and SettingsAdministrateurBureauBDDBDD Contrat.xls"

'Réactive le fichier dans l'historique
Workbooks(Fichier).Activate
....
....
....

Et c'est dans cette ligne que le debogueur m'emmene :
Workbooks(Fichier).Activate

Il faut souligné que j'ai mis cette macro ci dessous dans thisWorkbook (je
ne peux pas la mettre dans un module)
Sub femeture()
ActiveWorkbook.Close
End Sub




"AV" a écrit dans le message de news:

remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV




Avatar
Manu
Effectivement,
J'ai un seul classeur d'ouvert et le code se trouve dans ce classeur que je
souhaite fermer et comme tu dis je rencontre des problemes.

Manu

"MichDenis" a écrit dans le message de news:

Tu as combien de classeurs d'ouverts ?
Dans quel classeur est ton code ?
Si ton code se retrouve dans le classeur que tu fermes
tu risques de rencontrer des problèmes !

Tu aurais avantage à décrire ton environnement de travail...
les suggestions seraient peut être plus appropriées.

"Manu" a écrit dans le message de news:

Ca fait pareil, dans mon workbook_before close, j'ai ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'test si On valide ou pas
Msg = MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?",
4)
If Msg = 6 Then

'Enregistre le fichier dans l'historique en commencant par Cont + jour +
mois + année
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"
Fichier = "Cont" & _
" " & Cells(8, 2).Value & " " & Day(Now) & _
"-" & Month(Now) & "-" & Year(Now) & ".xls"

ActiveWorkbook.SaveAs Filename:=Repertoire & Fichier


'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and SettingsAdministrateurBureauBDDBDD
Contrat.xls"

'Réactive le fichier dans l'historique
Workbooks(Fichier).Activate
....
....
....

Et c'est dans cette ligne que le debogueur m'emmene :
Workbooks(Fichier).Activate

Il faut souligné que j'ai mis cette macro ci dessous dans thisWorkbook (je
ne peux pas la mettre dans un module)
Sub femeture()
ActiveWorkbook.Close
End Sub




"AV" a écrit dans le message de news:

remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV









Avatar
MichDenis
Essaie ceci :


Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Repertoire As String
Dim Fichier As String

Fichier = "Cont" & " " & Cells(8, 2).Value & _
" " & Format(Date, "dd-mm-yyyy")
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"

'test si On valide ou pas
If MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?", _
4) = vbYes Then
'Enregistre le fichier dans l'historique
'en commencant par Cont + jour + mois année
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Repertoire & Fichier
'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and Settings" & _
"AdministrateurBureauBDDBDD Contrat.xls"
Application.DisplayAlerts = True
End If
End Sub




"Manu" a écrit dans le message de news:

Effectivement,
J'ai un seul classeur d'ouvert et le code se trouve dans ce classeur que je
souhaite fermer et comme tu dis je rencontre des problemes.

Manu

"MichDenis" a écrit dans le message de news:

Tu as combien de classeurs d'ouverts ?
Dans quel classeur est ton code ?
Si ton code se retrouve dans le classeur que tu fermes
tu risques de rencontrer des problèmes !

Tu aurais avantage à décrire ton environnement de travail...
les suggestions seraient peut être plus appropriées.

"Manu" a écrit dans le message de news:

Ca fait pareil, dans mon workbook_before close, j'ai ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'test si On valide ou pas
Msg = MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?",
4)
If Msg = 6 Then

'Enregistre le fichier dans l'historique en commencant par Cont + jour +
mois + année
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"
Fichier = "Cont" & _
" " & Cells(8, 2).Value & " " & Day(Now) & _
"-" & Month(Now) & "-" & Year(Now) & ".xls"

ActiveWorkbook.SaveAs Filename:=Repertoire & Fichier


'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and SettingsAdministrateurBureauBDDBDD
Contrat.xls"

'Réactive le fichier dans l'historique
Workbooks(Fichier).Activate
....
....
....

Et c'est dans cette ligne que le debogueur m'emmene :
Workbooks(Fichier).Activate

Il faut souligné que j'ai mis cette macro ci dessous dans thisWorkbook (je
ne peux pas la mettre dans un module)
Sub femeture()
ActiveWorkbook.Close
End Sub




"AV" a écrit dans le message de news:

remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV









Avatar
MichDenis
Tu auras noté que j'ai omis de substituer le nom du fichier
et du chemin dans cette ligne de code par les variables définies

Workbooks.Open Repertoire & Fichier


'-----------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Repertoire As String
Dim Fichier As String

Fichier = "Cont" & " " & Cells(8, 2).Value & _
" " & Format(Date, "dd-mm-yyyy")
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"

'test si On valide ou pas
If MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?", _
4) = vbYes Then
'Enregistre le fichier dans l'historique
'en commencant par Cont + jour + mois année
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Repertoire & Fichier
'Ouverture du fichier BDD contrat
Workbooks.Open Repertoire & Fichier
Application.DisplayAlerts = True
End If
End Sub
Avatar
Manu
Non, ca ne fonctionne pas non plus, ce n'est pas grave, je metterai le
bouton fermer dans la barre d'outils.
Merci de votre aide

Manu

"MichDenis" a écrit dans le message de news:
e%
Essaie ceci :


Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Repertoire As String
Dim Fichier As String

Fichier = "Cont" & " " & Cells(8, 2).Value & _
" " & Format(Date, "dd-mm-yyyy")
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"

'test si On valide ou pas
If MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?", _
4) = vbYes Then
'Enregistre le fichier dans l'historique
'en commencant par Cont + jour + mois année
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Repertoire & Fichier
'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and Settings" & _
"AdministrateurBureauBDDBDD Contrat.xls"
Application.DisplayAlerts = True
End If
End Sub




"Manu" a écrit dans le message de news:

Effectivement,
J'ai un seul classeur d'ouvert et le code se trouve dans ce classeur que
je
souhaite fermer et comme tu dis je rencontre des problemes.

Manu

"MichDenis" a écrit dans le message de news:

Tu as combien de classeurs d'ouverts ?
Dans quel classeur est ton code ?
Si ton code se retrouve dans le classeur que tu fermes
tu risques de rencontrer des problèmes !

Tu aurais avantage à décrire ton environnement de travail...
les suggestions seraient peut être plus appropriées.

"Manu" a écrit dans le message de news:

Ca fait pareil, dans mon workbook_before close, j'ai ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'test si On valide ou pas
Msg = MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?",
4)
If Msg = 6 Then

'Enregistre le fichier dans l'historique en commencant par Cont + jour +
mois + année
Repertoire = "C:Documents and
SettingsAdministrateurBureauhistorique"
Fichier = "Cont" & _
" " & Cells(8, 2).Value & " " & Day(Now) & _
"-" & Month(Now) & "-" & Year(Now) & ".xls"

ActiveWorkbook.SaveAs Filename:=Repertoire & Fichier


'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and SettingsAdministrateurBureauBDDBDD
Contrat.xls"

'Réactive le fichier dans l'historique
Workbooks(Fichier).Activate
....
....
....

Et c'est dans cette ligne que le debogueur m'emmene :
Workbooks(Fichier).Activate

Il faut souligné que j'ai mis cette macro ci dessous dans thisWorkbook
(je
ne peux pas la mettre dans un module)
Sub femeture()
ActiveWorkbook.Close
End Sub




"AV" a écrit dans le message de news:

remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV














Avatar
MichDenis
Ben tu dois avoir un environnement particulier,
j'ai testé cela et c'était sans problème

| ca ne fonctionne pas non plus

Qu'est-ce qui ne fonctionne pas ? Des messages d'erreur ?
Quelle est ta version d'excel ?



"Manu" a écrit dans le message de news:
%23$u$
Non, ca ne fonctionne pas non plus, ce n'est pas grave, je metterai le
bouton fermer dans la barre d'outils.
Merci de votre aide

Manu

"MichDenis" a écrit dans le message de news:
e%
Essaie ceci :


Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Repertoire As String
Dim Fichier As String

Fichier = "Cont" & " " & Cells(8, 2).Value & _
" " & Format(Date, "dd-mm-yyyy")
Repertoire = "C:Documents and SettingsAdministrateurBureauhistorique"

'test si On valide ou pas
If MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?", _
4) = vbYes Then
'Enregistre le fichier dans l'historique
'en commencant par Cont + jour + mois année
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Repertoire & Fichier
'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and Settings" & _
"AdministrateurBureauBDDBDD Contrat.xls"
Application.DisplayAlerts = True
End If
End Sub




"Manu" a écrit dans le message de news:

Effectivement,
J'ai un seul classeur d'ouvert et le code se trouve dans ce classeur que
je
souhaite fermer et comme tu dis je rencontre des problemes.

Manu

"MichDenis" a écrit dans le message de news:

Tu as combien de classeurs d'ouverts ?
Dans quel classeur est ton code ?
Si ton code se retrouve dans le classeur que tu fermes
tu risques de rencontrer des problèmes !

Tu aurais avantage à décrire ton environnement de travail...
les suggestions seraient peut être plus appropriées.

"Manu" a écrit dans le message de news:

Ca fait pareil, dans mon workbook_before close, j'ai ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'test si On valide ou pas
Msg = MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?",
4)
If Msg = 6 Then

'Enregistre le fichier dans l'historique en commencant par Cont + jour +
mois + année
Repertoire = "C:Documents and
SettingsAdministrateurBureauhistorique"
Fichier = "Cont" & _
" " & Cells(8, 2).Value & " " & Day(Now) & _
"-" & Month(Now) & "-" & Year(Now) & ".xls"

ActiveWorkbook.SaveAs Filename:=Repertoire & Fichier


'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and SettingsAdministrateurBureauBDDBDD
Contrat.xls"

'Réactive le fichier dans l'historique
Workbooks(Fichier).Activate
....
....
....

Et c'est dans cette ligne que le debogueur m'emmene :
Workbooks(Fichier).Activate

Il faut souligné que j'ai mis cette macro ci dessous dans thisWorkbook
(je
ne peux pas la mettre dans un module)
Sub femeture()
ActiveWorkbook.Close
End Sub




"AV" a écrit dans le message de news:

remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV














Avatar
Manu
Oui, tu as raison la macros before_close est tres longue...
Cette fois ci il me debogue sur une autre ligne, je suis sur Excel 2003
Merci mais si tu dois refaire tout mon code, c'est pas la peine, tu as
d'ailleurs deja bcp contribué à cette réalisation

"MichDenis" a écrit dans le message de news:

Ben tu dois avoir un environnement particulier,
j'ai testé cela et c'était sans problème

| ca ne fonctionne pas non plus

Qu'est-ce qui ne fonctionne pas ? Des messages d'erreur ?
Quelle est ta version d'excel ?



"Manu" a écrit dans le message de news:
%23$u$
Non, ca ne fonctionne pas non plus, ce n'est pas grave, je metterai le
bouton fermer dans la barre d'outils.
Merci de votre aide

Manu

"MichDenis" a écrit dans le message de news:
e%
Essaie ceci :


Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Repertoire As String
Dim Fichier As String

Fichier = "Cont" & " " & Cells(8, 2).Value & _
" " & Format(Date, "dd-mm-yyyy")
Repertoire = "C:Documents and
SettingsAdministrateurBureauhistorique"

'test si On valide ou pas
If MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique ?", _
4) = vbYes Then
'Enregistre le fichier dans l'historique
'en commencant par Cont + jour + mois année
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Repertoire & Fichier
'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and Settings" & _
"AdministrateurBureauBDDBDD Contrat.xls"
Application.DisplayAlerts = True
End If
End Sub




"Manu" a écrit dans le message de news:

Effectivement,
J'ai un seul classeur d'ouvert et le code se trouve dans ce classeur que
je
souhaite fermer et comme tu dis je rencontre des problemes.

Manu

"MichDenis" a écrit dans le message de news:

Tu as combien de classeurs d'ouverts ?
Dans quel classeur est ton code ?
Si ton code se retrouve dans le classeur que tu fermes
tu risques de rencontrer des problèmes !

Tu aurais avantage à décrire ton environnement de travail...
les suggestions seraient peut être plus appropriées.

"Manu" a écrit dans le message de news:

Ca fait pareil, dans mon workbook_before close, j'ai ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'test si On valide ou pas
Msg = MsgBox("Voulez-Vous mettre à jour votre BDD et votre historique
?",
4)
If Msg = 6 Then

'Enregistre le fichier dans l'historique en commencant par Cont + jour +
mois + année
Repertoire = "C:Documents and
SettingsAdministrateurBureauhistorique"
Fichier = "Cont" & _
" " & Cells(8, 2).Value & " " & Day(Now) & _
"-" & Month(Now) & "-" & Year(Now) & ".xls"

ActiveWorkbook.SaveAs Filename:=Repertoire & Fichier


'Ouverture du fichier BDD contrat
Workbooks.Open Filename:= _
"C:Documents and SettingsAdministrateurBureauBDDBDD
Contrat.xls"

'Réactive le fichier dans l'historique
Workbooks(Fichier).Activate
....
....
....

Et c'est dans cette ligne que le debogueur m'emmene :
Workbooks(Fichier).Activate

Il faut souligné que j'ai mis cette macro ci dessous dans thisWorkbook
(je
ne peux pas la mettre dans un module)
Sub femeture()
ActiveWorkbook.Close
End Sub




"AV" a écrit dans le message de news:

remplacer
ActiveWindow.Close
par

ActiveWorkbook.Close

AV