Enregistrement possible uniquement par macro

Bonjour à tous,

J'ai créé un fichier que je met à disposition sur le réseau de l'entreprise et qui doit rester intacte face aux fausses manipulations.

Les utilisateurs doivent remplir leur partie puis cliquer sur un bouton qui créé un autre fichier personnel dans leur C:

Mon problème est que j'aimerai inhiber l'enregistrement via la disquette dans la barre de commande, l'enregistrement sous et le Ctrl "S" jusqu'au démarrage de la macro (via bouton cité plus haut.

Il y a beaucoup de novice Excel dans l'entreprise et souhaiterai éviter la lecture seule, qui va faire, je pense, poser plein de question !

J'ai donc placé ces codes dans "ThisWorkbook"à l'ouverture :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Cancel = True

End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Application.ThisWorkbook.Saved = True 'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture)

End Sub

................. mais il faudrait que j'arrive à faire l'inverse avant le déclenchement de la macro !

Une personne bienveillante aurait elle une solution s'il vous plait ?

J'ai également ceci à l'ouverture dans This Workbook :

Private Sub Workbook_Open()

    ActiveSheet.Unprotect

    If Sheets("Données").[A32].Value <> "3" Then
        Sheets("Données").Visible = True
            Sheets("Données").Select

     MsgBox "Pour commencer à utiliser ce fichier, remplissez obligatoirement les champs verts ci-contre :" & vbNewLine & Chr(13) & "1) Les champs Prénom et Nom." & vbNewLine & "2) Votre matricule (ID)" & vbNewLine & "3) L'adresse du destinataire principal est déjà renseignée par défaut (Vous pouvez la changer si besoin)" & vbNewLine & "4) Les champs CC (par exemple l'adresse mail de votre chef de service, ou la votre pour avoir une confirmation de l'envoi.", , "Bonjour,"

     MsgBox "Vous pouvez également modifier les paramètres de fin d'envoi par défaut ci-dessus selon vos besoins.", , "Important"

     MsgBox "Ceci fait, suivez les instructions inscrites sur le bouton se trouvant sous les données utilisateur.", , "Pour finir le paramétrage"

     Range("B7").Select

     ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True

     End If

    If Sheets("Données").[A32].Value = "3" Then
    If Sheets("S1").Visible = False Then

    MsgBox "Fichier déjà utilisé antérieurement." & vbNewLine & Chr(13) & "Vérifiez ou changez vos données avant de poursuivre.", , "IMPORTANT"
    MsgBox "A la question * Un fichier existe déjà à cet emplacement. Voulez-vous le remplacer? *" & vbNewLine & Chr(13) & "Répondez * OUI * et ciquez sur le bouton se trouvant sous les données utilisateur.", , "ENSUITE"

    Range("H1").Select

    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True

    End If
    End If

End Sub

C'est le bouton sous données utilisateur qui déclenche l'enregistrement de ce fichier avec un nom différent dans leur "C:"

Merci par avance.

@ toute.......

Re bonjour

J'ai beau gratter et ne trouve rien de bien, mais peut être ai-je été un peu tordu ???

Si je pouvais supprimer le message d'alerte à l'ouverture comme quoi le fichier est en lecture seule ça l ferait non ?

Le hic, Application.DisplayAlerts ne fonctionne pas

Private Sub Workbook_Open()

    Application.DisplayAlerts = False

    ActiveSheet.Unprotect

    If Sheets("Données").[A32].Value <> "3" Then
        Sheets("Données").Visible = True
            Sheets("Données").Select

     MsgBox "Pour commencer à utiliser ce fichier, remplissez obligatoirement les champs verts ci-contre :" & vbNewLine & Chr(13) & "1) Les champs Prénom et Nom." & vbNewLine & "2) Votre matricule (ID)" & vbNewLine & "3) L'adresse du destinataire principal est déjà renseignée par défaut (Vous pouvez la changer si besoin)" & vbNewLine & "4) Les champs CC (par exemple l'adresse mail de votre chef de service, ou la votre pour avoir une confirmation de l'envoi.", , "Bonjour,"

     MsgBox "Vous pouvez également modifier les paramètres de fin d'envoi par défaut ci-dessus selon vos besoins.", , "Important"

     MsgBox "Ceci fait, suivez les instructions inscrites sur le bouton se trouvant sous les données utilisateur.", , "Pour finir le paramétrage"

     Range("B7").Select

     ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True

     End If

    If Sheets("Données").[A32].Value = "3" Then
    If Sheets("S1").Visible = False Then

    MsgBox "Fichier déjà utilisé antérieurement." & vbNewLine & Chr(13) & "Vérifiez ou changez vos données avant de poursuivre.", , "IMPORTANT"
    MsgBox "A la question * Un fichier existe déjà à cet emplacement. Voulez-vous le remplacer? *" & vbNewLine & Chr(13) & "Répondez * OUI * et ciquez sur le bouton se trouvant sous les données utilisateur.", , "ENSUITE"

    Range("H1").Select

    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True

    Application.DisplayAlerts = True

    End If
    End If

End Sub

C'est grave docteur ???

Slt,

Et pourquoi ne pas créer ton fichier sous forme de modèle Excel, au moment de sauvegarder il seront obliger de choisir un emplacement et ne pourront pas enregistrer par dessus ton fichier actuel qui restera tjrs intact.

Bonjour,

La solution de zubrow est de loin la plus simple ...

Cela dit, si tu t'en sens " l'envie " ... tu peux aussi imaginer intervenir sur le ruban ...

Merci tous les deux,

Mais non, car après avoir renseigné nom, prénom, matricule, etc..., la macro enregistre le fichier avec leur nom (etc) sous leur C: en local.

Sauf que quelques fois des utilisateurs commencent à remplir, se trompe, ferme le classeur, et au message d'alerte "voulez vous sauvegarder" ils répondent oui ; ce qui modifie le fichier source !

Je pense qu'en fait la lecture seule est plus appropriée sans faire une usine à gaz, mais il faudrait juste que je supprime le massage d'alerte "lecture seule" au départ !

......... grrrrr, pas moyen


J'avais également tenté ceci dans This Workbook :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Cancel = True

End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Application.ThisWorkbook.Saved = True 'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture)

End Sub

Cela inhibe le Ctrl S, enregistrer sous, et la disquette, seulement cela inhibe l'enregistrement sur leur C : avec la macro....

........ donc re grrrrrrrrrrrrrrrrrrr

Re,

Ci-joint un fichier test ...

Bonsoir,

C'est exactement ce qu'il me fallait

Un grand merci James tu as lu dans mes pensées

Re,

Un grand pour tes Très Chaleureux remerciements ...!!

Hello la compagnie

Je me permets de ré-ouvrir ce post car la solution donnée par James fonctionne très bien sur le fichier à télécharger, mais ne fonctionne pas du tout sur mon fichier, voir sur un nouveau classeur !!!

Y a t'il une astuce de paramétrage en plus du code s'il vous plait ?

Merci par avance.

@ toute.......

................ Pour être plus précis, comment faire pour masquer la disquette dans les commandes uniquement dans ce classeur please ?

Merci.

@ +

Bonjour,

Si tu relis les messages précédents ... tu trouveras la réponse ...

Cela dit, si tu t'en sens " l'envie " ... tu peux aussi imaginer intervenir sur le ruban ...

Désolé, mais en ayant cherché toute la journée à intervenir sur le ruban ; j'abandonne

Pourtant ça me plaisais bien !

Je vais utiliser la lecture seule, et basta, je me rends !

@ bientôt.

Salut DasaQuit,

Dommage ...

Pas convaincu par le fichier test : Test No Save DasaQuit ...???

Bonne Continuation ...

Rechercher des sujets similaires à "enregistrement possible uniquement macro"