Modification codes VBA sur fichier

Bonjour,

Avec votre aide, j'ai crée un fichier qui comportait une fonction VBA. Cette fonction consistait à déprotéger toutes les feuilles de mon fichier à l'aide d'un Mot de Passe. Aujourd'hui je voudrais supprimer la demande du MdP. Je vous transmet en PJ un fichier surlequel figurent les codes Thisworkbook, Module1 et Module 2.

Merci de bien vouloir m'indiquer les suppressions à apporter pour déprotéger toutes mes feuilles sans l'aide du MdP.

Cordialement

Edit modo : fichier Word supprimé, le code se met entre balises directement sur le post

Bonsoir mibri,

Est-ce que vous regardez parfois vos MP (Messages privés)

Cela en fait déjà 2 que je vous envoie je vais donc vous l'expliquer ici

Le code n'est pas à donner dans un fichier Word mais à mettre entre balises avec le bouton

image

Si vous ne le faite pas ainsi, votre demande sera supprimée !

Bonsoir, Je suis désolé mais je n'utilise pas très souvent la transmission de code vba

Thisworkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet

  For Each Sh In Sheets
    Sh.Protect Password:="fidji"
  Next Sh
  ThisWorkbook.Save
End Sub

Module1

Sub Ouvre()
Dim Rep
Dim Sh As Worksheet
Dim I As Integer

  Rep = InputBox("Déprotection des feuilles")
  For I = 1 To Len(Rep)
    If UCase(Mid(Rep, I, 1)) = Mid(Rep, I, 1) Then
      MsgBox "le mot de passe ne contient pas de majuscule"
      Exit Sub
    End If
  Next I
  If Rep <> "fidji" Then Exit Sub
  For Each Sh In Sheets
    Sh.Unprotect Password:="fidji"
  Next Sh
End Sub

Module 2

Sub Rectangle6_QuandClic()

End Sub

Merci

Bonjour, est ce que quelqu'un peut me répondre, merci

Bonjour

il manque certainement quelque chose dans le thisworkbook.

quelque chose du genre :

Private Sub Workbook_Open()
Ouvre
End Sub

il faut supprimer l'appel de la sub ouvre à l'ouverture du fichier.. car si plus demande de mot de passe.. déprotection automatique à l'ouverture du fichier ne sert plus a rien...

après il faut savoir si remettre le mot passe à la fermeture est encore nécessaire...

si c'est plus le cas.. il faudra aussi supprimer/mettre en commentaire toute la sub :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Fred

Bonjour

Dans la sub Ouvre() il faut juste garder

  For Each Sh In Sheets
    Sh.Unprotect Password:="fidji"
  Next Sh

A+

Edit : salut Fred

Salut Bruno

Fred

Bonjour et merci à tous les deux pour vos interventions, ne connaissant pas VBA, il m'a paru plus simple d'intervenir dans le ThisWorkBook et ne laisser que

"For Each sh In Sheets ...etc...

Lorsque j'ai appliqué ceci, c'est bien ce que je recherche sauf que

1/ j'ai un message dans Module 1 (sur Sh )

Sub Ouvre()

  For Each Sh In Sheets
    Sh.Unprotect Password:="fidji"
  Next Sh
End Sub

2/ egalement ouvre un fichier de l'année précédente avec lequel j'ai une liaison de données...j'ignore pourquoi ??

merci

le message est le suivant : Erreur de compilation variable non définie

merci

pour l'erreur de compilation :

il faut certainement laisser la déclaration de variable :

Dim Sh As Worksheet

pour l'ouverture du fichier de l'année précédente.. cela n'est pas fait par le code... donc peut-être effectivement la mise a jour des liaisons.. mais normalement la mise a jour se fait sans ouvrir les fichiers... mais je ne pratique pas les liaisons..

Fred

Si je comprends bien il faut que je rajoute dans module ce que tu m'indiques ??

Bonsoir mibri,

Quelque chose que je ne comprends pas

A quoi cela sert de protéger tour les feuilles à la fermeture pour les déprotéger à l'ouverture

Concernant la définition de variable, vous l'avez dans

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet

Que ne comprenez vous pas

Bon de toutes façon c'est du grand n'importe quoi à mes yeux.
Même si vous êtes débutant (nous l'avons tous été) ayez au moins une logique

A+

Bonjour BrunoM45

Je vais essayer de vous répondre.......

"A quoi sert de protéger toutes les feuilles à la fermeture pour les déprotéger à l'ouverture"

Bien que cela vous semble n'importe quoi, il y a une raison. Je suis concepteur (avec l'aide qques fois d'Excel pratique) mais pas utilisateur. Ce programme s'adresse bénévolement à une agence Immobilière. Pour moi il me semble nécessaire d'assurer l'intégrité du programme, c'est la raison pour laquelle dans une utilisation quotidienne toutes les cellules comportant des formules sont protégées.

Il est possible que l'utilisateur ait besoin qques fois d'intervenir sur des cellules protégées, il est donc plus pratique et plus court de déprotéger l'ensemble des feuilles (il y en a une trentaine au total) plutôt que de le faire manuellement une à une.

Afin que pour vous les choses soient plus claires , je vous propose de vous joindre le fichier (raccourci)sur lequel vous pourrez vérifier le contenu des ThisWorkBook, Module1 et Module2

Pourquoi lorsque je clique sur le bouton (onglet Version) le programme demande l'ouverture du fichier N-1 (2022) ???, mais la déprotection ne s'effectue tout de même pas.

Je vous transmet le fichier avec les VBA originales, sans tenir compte de vos observations ainsi que celles de Fred..

Dans tous les cas que ce soit à l'aide du bouton ou bien manuellement sur chacunes des feuilles, je souhaite que la déprotection s'effectue sans l'aide du Mot de Passe

Vous voudrez bien m'excuser pour la longueur, mais il me semblait nécessaire d'expliquer.

Je reste à votre disposition, je vous remercie

Bonsoir mibri

Ma question reste entière...

Donc, bonne chance....

Edit modo

Rechercher des sujets similaires à "modification codes vba fichier"