enregistrer un classeur à l'aide d'un bouton uniquement

mouss5174

XLDnaute Nouveau
Bonjour,
J'ai créer un classeur sur lequel j'ai désactiver les enregistrements


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Close False
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
motpasse = InputBox("Entrer le mot de passe pour pouvoir sauvegarder:")
If motpasse = "essai" Then
MsgBox ("modification enregistrer")

Exit Sub
Else
Cancel = True
MsgBox ("mot de passe incorrect , modification non enregistrer")

End If
End Sub


je cherche cherche à enregister mon classeur à l'aide d'un bouton , pour qu'il s'enregistre à un endroit précis
mais il me demande le mot de passe
comment puis desactiver la demande de mot passe sur le bouton?

Private Sub enregistrer_Click() 'bouton enregistrer
Dim chemin, repertoire
Dim VBC As Object
chemin = "C:\mesdocuments\"
repertoire = Range("L2")

' creer le fichier
If Dir(chemin & repertoire, vbDirectory) = "" Then
MkDir chemin & repertoire
End If

'enregistre classeur
'ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & repertoire & "\" & [a2].Value & " " & ".pdf"

'message d'enregistrement
'Application.ScreenUpdating = True
'MsgBox ("Le " & " documents PDF viennent d'être créés et son disponnibles dans le répertoire C:\mesdocuments")

Dim dossier As String
dossier = chemin & repertoire & "\" & "commande" & " " & [D6].Value & ".xls"

If Dir(dossier, vbNormal) > "" Then
MsgBox ("le fichier existe")
ActiveWorkbook.SaveAs Filename:=chemin & repertoire & "\" & "commande" & " " & [D6].Value & "(1) "
With Activebook.VBProject
'cette partie du code est de Laurent Longre
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC 'LL
End With
Else
MsgBox ("le fichier n'existe pas")
ActiveWorkbook.SaveAs Filename:=chemin & repertoire & "\" & "commande" & " " & [D6].Value

End If


End Sub


je vous remercie d'avance
 

camarchepas

XLDnaute Barbatruc
Re : enregistrer un classeur à l'aide d'un bouton uniquement

Bonjour ,

un solution simple ,

il faut déclarer un boolean public dans un module standard

Code:
Option Explicit

Public Temoin As Boolean


et corriger ton code comme ceci dans le thisworkbook

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim MotPasse As String
If Not Temoin Then
 MotPasse = InputBox("Entrer le mot de passe pour pouvoir sauvegarder:")
  If MotPasse = "essai" Then
    MsgBox ("modification enregistrer")
    Exit Sub
   Else
    Cancel = True
    MsgBox ("mot de passe incorrect , modification non enregistrer")
  End If
 Else
  Temoin = False
End If
End Sub

'je cherche cherche à enregister mon classeur à l'aide d'un bouton , pour qu'il s'enregistre à un endroit précis
'mais il me demande le mot de passe
'comment puis desactiver la demande de mot passe sur le bouton?

Private Sub enregistrer_Click() 'bouton enregistrer
Dim chemin, repertoire
Dim VBC As Object
Dim dossier As String

Temoin = True
chemin = "C:\mesdocuments\"
repertoire = Range("L2")

' creer le fichier
If Dir(chemin & repertoire, vbDirectory) = "" Then MkDir chemin & repertoire

'enregistre classeur
'ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & repertoire & "\" & [a2].Value & " " & ".pdf"

'message d'enregistrement
'Application.ScreenUpdating = True
'MsgBox ("Le " & " documents PDF viennent d'être créés et son disponnibles dans le répertoire C:\mesdocuments")


dossier = chemin & repertoire & "\" & "commande" & " " & [D6].Value & ".xls"

If Dir(dossier, vbNormal) > "" Then
  MsgBox ("le fichier existe")
  ActiveWorkbook.SaveAs Filename:=chemin & repertoire & "\" & "commande" & " " & [D6].Value & "(1) "
  
  With ActiveWorkbook.VBProject
    'cette partie du code est de Laurent Longre
    For Each VBC In .VBComponents
     If VBC.Type = 100 Then
       With VBC.CodeModule
        .DeleteLines 1, .CountOfLines
        .CodePane.Window.Close
       End With
      Else: .VBComponents.Remove VBC
     End If
    Next VBC 'LL
  End With

Else
 
 MsgBox ("le fichier n'existe pas")
 ActiveWorkbook.SaveAs Filename:=chemin & repertoire & "\" & "commande" & " " & [D6].Value

End If

End Sub
 

mouss5174

XLDnaute Nouveau
Re : enregistrer un classeur à l'aide d'un bouton uniquement

bonjour,

merci pour ton aide cela marche , j'ai encore des lacunes dans les module
mais cela marche et je t'en remercie

sauf l'enregistrement du dossier sans vba
je dois faire une erreur car les codes se désactive alors que je veut enregistrer le classeur sans vba mais protéger

dommage que excel 2003 ne puisse passe enregistrer en format pdf comme sur 2010


merci pour votre aide
 

camarchepas

XLDnaute Barbatruc
Re : enregistrer un classeur à l'aide d'un bouton uniquement

Oups ,

Je crois que j'ai vu : Je ne redescendais jamais le temoin de la façon dont c'était écrit

Voici le bout de code à modifier

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Dim MotPasse As String
 If Not Temoin Then
  MotPasse = InputBox("Entrer le mot de passe pour pouvoir sauvegarder:")
   If MotPasse = "essai" Then
     MsgBox ("modification enregistrer")
     Exit Sub
    Else
     Cancel = True
     MsgBox ("mot de passe incorrect , modification non enregistrer")
   End If
 End If
 Temoin = False
 
 End Sub
 

mouss5174

XLDnaute Nouveau
Re : enregistrer un classeur à l'aide d'un bouton uniquement

bonjour,
j'ai supprimer le fait que je desactive les macro car cela me bloque le reste
j'ai donc supprimer
With ActiveWorkbook.VBProject
'cette partie du code est de Laurent Longre
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC 'LL
End With

du coup ton module ne marche pas car lorsque je clique sur mon bouton d'enregistrement cela me demande le mot passe
peut me dire d'ou cela vient
cordialement
 

camarchepas

XLDnaute Barbatruc
Re : enregistrer un classeur à l'aide d'un bouton uniquement

Bonjour ,

bon essaies d'éxcuter en pas à pas ou avec quelques stop dans le code voir par où il passe .....

A oui , le code du bouton devrais surement être dans un module standard et pas dans le module de la feuille .

Le problème est que le débutant peut trébucher à cause de plein d'éléments et de facteurs dont un est le classeur,

Sans celui ci souvent l'on ne peut qu'échaffauder des hypothéses qui prennent du temps et donc en coute à tous , donc dans l'état actuel des choses , je te dis NON.

Car j'ai bien sur essayé le code si dessus dans un classeur asseptisé et il fonctionne sur les quelque tests que j'ai réalisé.

Donc soit tu envois ton classeur débarrassé des éléments confidentiels soit je rennonce à t'aider ......
 
Dernière édition:

mouss5174

XLDnaute Nouveau
Re : enregistrer un classeur à l'aide d'un bouton uniquement resolu

bonjour,
Désolé pour ce retard, j'ai repris du départ et du coup le problème est résolu.

je te remercie d'avoir pris un peu de temps pour mon problème je n'ai pas compris mon erreur mais le fait est que cela marche
 

Discussions similaires

Statistiques des forums

Discussions
313 270
Messages
2 096 727
Membres
106 733
dernier inscrit
Alain EDZOA