Microsoft 365 Cacher / détailler certaines colonnes dans certains onglets avec mot de passe

Tsr75a

XLDnaute Nouveau
Bonjour,

Pour la toute première fois depuis que je suis dans l'informatique, je vais oser demander de l'aide à une communauté. ...
Voila, j'utilise Excel en Français sur MacOs, (mais possible qu'il y ai du Windows).

Je souhaite cacher la colonne B situées dans l'onglet A1, la colonne C dans l'onglet A2, puis la colonne E dans l'onglet A3.

Je veux utiliser un mot de passe quand je clic sur le bouton VBA. Ce mot de passe sera renseigné dans un fichier RTF (motdepasse.rtf). Ce fichier sera déposé dans le répertoire où sera positionné le tableau Excel.
J'ai un code qui fonctionne bien pour cacher les colonnes, mais pas l'inverse.

PS: ici le chemin du fichier contenant le mot de passe est en dur, mais au final je souhaiterais que le VBA le recherche depuis le répertoire courant ou est ma feuille de calcule (Mac et si OS = Win),

Pourriez-vous me corriger mes erreurs ? :
Merci par avance

.../
Sub CacherOuLibererColonnesAvecMotDePasse()
Dim MotDePasseFichier As String
Dim CheminFichier As String
Dim Onglet As Worksheet
Dim MotDePasseUtilisateur As String

' Spécifiez le chemin absolu du fichier RTF contenant le mot de passe
CheminFichier = "/chemin/absolu/vers/votre/dossier/motdepasse.rtf"

' Lisez le mot de passe depuis le fichier RTF
On Error Resume Next
Open CheminFichier For Input As #1
Line Input #1, MotDePasseFichier
Close #1
On Error GoTo 0

' Demandez le mot de passe à l'utilisateur
MotDePasseUtilisateur = InputBox("Entrez le mot de passe pour cacher ou libérer les colonnes :", "Mot de passe requis")

' Vérifiez si le mot de passe est correct
If MotDePasseUtilisateur = MotDePasseFichier Then
' Cacher ou libérer les colonnes spécifiques dans les onglets
For Each Onglet In ThisWorkbook.Sheets
Select Case Onglet.Name
Case "A1"
' Cacher ou libérer la colonne B dans l'onglet A1
Onglet.Columns("B").Hidden = Not Onglet.Columns("B").Hidden
Case "A2"
' Cacher ou libérer la colonne C dans l'onglet A2
Onglet.Columns("C").Hidden = Not Onglet.Columns("C").Hidden
Case "A3"
' Cacher ou libérer la colonne E dans l'onglet A3
Onglet.Columns("E").Hidden = Not Onglet.Columns("E").Hidden
End Select
Next Onglet
Else
MsgBox "Mot de passe incorrect. Veuillez réessayer.", vbExclamation, "Accès refusé"
End If
End Sub
 

ThierryP

XLDnaute Occasionnel
Bonjour,

à priori ton code fonctionne correctement, par contre pour la recherche du fichier motdepasse, soit tu lui indiques le dossier de départ par
VB:
Function ChoixDossier()
       With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Show
        If .SelectedItems.Count > 0 Then
           ChoixDossier = .SelectedItems(1)
        Else
           ChoixDossier = ""
        End If
       End With
End Function
Ceci fonctionne si le fichier est dans le répertoire de ton fichier Excel. Si ton fichier motdepasse est dans un sous-dossier du répertoire courant, il faudra faire une recherche récursive (je dois avoir quelque part dans mes archives un truc qui pourrait faire le job).
D'une manière générale, il est assez illusoire d'utiliser des mots de passe avec Excel, sauf si tous tes users sont des "quiches" en Excel et en informatique ! Il va te falloir également protéger l'accès au VBA par MdP, sinon il est assez simple pour un user averi de voir où tu vas cherhcer l'information !
 

Discussions similaires

Réponses
2
Affichages
214
Réponses
5
Affichages
458
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 534
Messages
2 089 383
Membres
104 152
dernier inscrit
sabalex