Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Arnold35

XLDnaute Junior
Bonsoir le Forum,

J'ai créé un fichier de validation d'étapes de facturation (commande/réception/facture) avec plusieurs mots de passe car plusieurs personnes ont accès au fichier. A savoir 3 acheteurs, 1 comptable, 2 signataires.

J'ai créé des mots de passes différents en fonctions des colonnes de validation => 1 mot de passe pour la colonne Réception, 1 mot de passe pour la colonne Compta et 1 mot de passe pour la colonne Signature facture.

Je souhaiterai aller plus loin en créant 3 mots de passe différents (1 par personne pour la colonne Réception) en fonction du nom de la personne dans la colonne A.

Savez vous si cela est faisable? Avez vous des idées de Macro (ou peut-être n'y en a t-il pas besoin?)?

Pour info
- Le mot de passe de la déprotection de la feuille est "citedia"
- Le mot de passe pour les colonnes "A:H" est "ACH"
- Le mot de passe pour la colonne I est "CPT"
- Le mot de passe pour la colonne J est "SIG"


Je vous joins le fichier, ce sera certainement plus parlant.

Merci de votre aide,

Arnold
 

Pièces jointes

  • MODELE_validation des commandes V7 - Forum.xlsm
    196.4 KB · Affichages: 47

Paritec

XLDnaute Barbatruc
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Bonjour Arnold 35 le forum
Je me demande, quand vas-tu demander un mot de passe par ligne???
des mots de passe, sur des mots de passe, avec des mots de passe, vont rendre ton fichier inutilisable sous peu.
Enfin ce n'est que mon avis.
a+
Papou:eek:
 

Arnold35

XLDnaute Junior
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

En fait, je souhaiterai que le mot de passe de la cellule de validation de réception (colonne H) soit demandé si une personne souhaite saisir dans cette cellule.

Par exemple si l'acheteur en colonne A est D. PRODHOMME, je souhaiterai mettre un mot de passe (que seul D. PRODHOMME connaitra) lorsqu'il viendra renseigner un "1" dans la colonne pour approuver la réception de la commande.

Cela afin d'éviter qu'une autre personne vienne valider la réception de la commande à sa place.

Comprends-tu où j'essaye d'en venir? :)
 

Pièces jointes

  • MODELE_validation des commandes V10.xlsm
    250.2 KB · Affichages: 43
  • MODELE_validation des commandes V10.xlsm
    250.2 KB · Affichages: 51
  • MODELE_validation des commandes V10.xlsm
    250.2 KB · Affichages: 47
Dernière édition:

job75

XLDnaute Barbatruc
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Bonjour Arnold, Papou, Martial,

Pas besoin de mots de passe pour les plages, c'est fastidieux.

Dans la macro Workbook_Open de ThisWorkbook, mettre une simple InputBox pour demander le mot de passe.

En fonction de ce mot de passe déverrouiller la plage concernée.

Et dans la macro Workbook_BeforeClose verrouiller les cellules des plages.

Bien sur pour les 2 macros déprotéger/protéger la feuille.

A+
 

Yaloo

XLDnaute Barbatruc
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Bonjour Job,
Re, Arnol, Papou,

@Arnold, si tu es en réseau et que chacun a son PC, tu peux, toujours avec Workbook_Open, déverrouiller les plages en fonction du PC.

A+

Martial
 

Arnold35

XLDnaute Junior
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

En fait l'acheteur rentre un bon de commande avec son nom (bouton ajouter commande). Lorsqu'il a ajouté cette commande, une ligne dans le fichier se créé avec son nom qui figure dans la colonne A1.

Ensuite lorsque la livraison arrive, il faut que l'acheteur aille dans le fichier et renseigne "1" ou "0" dans la colonne "Validation réception".

Seulement je veux qu'il n'y ai que cette personne qui puisse renseigner "1" ou "0" dans la cellule associée à sa ligne. C'est pourquoi je souhaitais mettre un mot de passe.
 

Arnold35

XLDnaute Junior
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Je ne m'y connais pas assez en VBA, mais est ce que lorsque quelqu'un ouvre le fichier et qu'une inputbox lui demande son mot de passe, on peut donner accès à cette personne uniquement pour les cellules qui la concerne, c'est à dire celles qui se trouve a croisement de la colonne H et des lignes qui portent son nom?

Ce serait formidable! (même si je ne sais pas comment m'y prendre :D )
 

Yaloo

XLDnaute Barbatruc
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Fais un essai avec ton fichier modifié.
J'ai rajouté une feuille "Employés", avec les données ci-dessous :
NomMot de passeType
D. PROD'HOMMEDPAdmin
F. DEMAYFDAcheteur
S. WEHRLESWAcheteur
C. ComptableCCComptable
S. SignataireS.Signataire
D. DAFDDDAF

A l'ouverture, tu as un UserForm demandant l'utilisateur et son mot de passe. En fonction de son type l'utilisateur a accès à différentes cellules, l'admin : à toutes les cellules et à toutes les feuilles, Acheteur : uniquement a ses dossiers colonne de A à H de la 1ere feuille, Comptable : uniquement colonne I de la 1ere feuille etc....
A coté de ton bouton "Ajout commande" j'ai mis le lancement de l'UserForm "mot de passe", pour pourvoir tester.
Il est possible de changer les feuilles pour chaque type.

A+

Martial

PS : Je n'ai pas testé avec ton UserForm pour ajouter une commande.
 

Pièces jointes

  • MODELE_validation des commandes V10.xlsm
    250.6 KB · Affichages: 60
  • MODELE_validation des commandes V10.xlsm
    250.6 KB · Affichages: 58
  • MODELE_validation des commandes V10.xlsm
    250.6 KB · Affichages: 50
Dernière édition:

job75

XLDnaute Barbatruc
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Re,

Ci-joint le fichier de votre autre fil avec cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Dim mdp$, x$, i&
mdp = InputBox("Entrez votre mot de passe :")
With Sheets("suivi des cdes MDA V2")
  .Unprotect "citedia"
  Select Case mdp
    Case "ACH1", "ACH2", "ACH3"
      x = Switch(mdp = "ACH1", "D. PROD'HOMME", mdp = "ACH2", "F. DEMAY", mdp = "ACH3", "S. WEHRLE")
      For i = 17 To .[H65000].End(xlUp).Row
        .Cells(i, "H").Locked = .Cells(i, "A") <> x
      Next
    Case "CPT": .Range("I17", .[I65000].End(xlUp)).Locked = False
    Case "SIG": .Range("J17", .[J65000].End(xlUp)).Locked = False
    Case "DAF": .Range("K17", .[K65000].End(xlUp)).Locked = False
  End Select
  .Protect "citedia"
End With
End Sub
Il y a 6 mots de passe : ACH1 ACH2 ACH CPT SIG DAF.

Il reste pas mal d'autres choses à faire si l'on veut éviter toute erreur d'entrée dans les cellules déverrouillées.

Edit : le fichier joint était très alourdi par un mauvais formatage, je l'ai allégé.

A+
 

Pièces jointes

  • MODELE(2).zip
    140.3 KB · Affichages: 56
  • MODELE(2).zip
    140.3 KB · Affichages: 60
  • MODELE(2).zip
    140.3 KB · Affichages: 61
Dernière édition:

Arnold35

XLDnaute Junior
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Merci à vous 2, c'est exactement ce qu'il me fallait. Vous êtes des as!

Je suis entrain de tester vos 2 fichiers, par contre dans celui de Yaloo les cases d'option sont verrouillées quand on clique dessus pour faire des filtres dans la base. Comment puis-je faire pour les dévérouiller pour tous les utilisateurs afin qu'ils puissent filtrer la base?

Merci à vous
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Mettre un mot de passe sur une plage en fonction de la valeur d'une cellule

Re,

Pour les onglets, je les cache de façon à ce que les utilisateurs ne voient pas les autres onglets et donc pas les mots de passe. Pour avoir tous les onglets, il faut se mettre en Admin, utilisateur : D. PROD'HOMME, mot de passe : DP, type :Admin

Pour les cases d'option je n'ai pas testé.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 247
Messages
2 086 591
Membres
103 248
dernier inscrit
Happycat