MDP pour chaque colonnes dans la meme feuille

Ilino

XLDnaute Barbatruc
Bonsoir Forum
J’ai un tableau de 20 COLONNES et INFINI LIGNES, je souhaitai protégé chaque colonne (a partir de la 3eme ligne) avec son propre MDP, j’ai ajouté a chaque colonne un bouton
Comment faire pour programmer le bouton de chaque colonne pour activer ou désactiver la protection de la colonne.
Merci
 

Ilino

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Bonsour Forum
PBLM RESOLU
ci dessous le code trouvé sur forum et Proposé par JOB
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tablo1, tablo2, i As Byte
tablo1 = Array([G:G], [I:I], [K:K], [M:M]) 'plages protégées
tablo2 = Array("tata", "titi", "toto", "tutu") 'mots de passe
For i = 0 To UBound(tablo1)
  If Not Intersect(Target, tablo1(i)) Is Nothing Then
    If InputBox("Mot de passe :", "Plage " & tablo1(i).Address(0, 0)) <> tablo2(i) Then _
      [A1].Select: Exit Sub
  End If
Next
End Sub
Merci Gracie JOB
 

Ilino

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Re Bonjour
Je vous rejoint dans le même pblm sans doute le code ça fonctionne mais âpres avoir ajouter avec un 2 eme code ci-dessous, j’ai trouvé des ambigüités , je souhaiterai remédier cette ambigüité
Chaque fois je fais rentrer une donné dans la cellule A2 (par exemple) et apres validation le code affiche la boite de MDP ?

Code:
'--- entrer la donnée dans la 1 cellule de chque colonne seulemnt
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row = 2 And Target.Column < 17 Then
    Set c = Cells(3, Target.Column).Resize(10000).Find(What:=Target.Value, LookAt:=xlWhole)
    If c Is Nothing Then
        Cells(60000, Target.Column).End(xlUp).Offset(1, 0).Value = Target.Value
    Else
        If Target.Value <> "" Then CreateObject("Wscript.shell").Popup "Attention ,la donnée Existe déjà", 2, "SFE 2013" ' MsgBox "Attention , la donnée Existe déjà"
    End If
Else
    Cells(2, Target.Column).Value = "Saisir ici !"
    CreateObject("Wscript.shell").Popup "Attention ,La donnée doit être entrée  dans la cellule bleu", 2, "SFE 2013"
 
End If
Target.Value = ""
Application.EnableEvents = True
End Sub

Code:
'---- Proteger les colonnes
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tablo1, tablo2, i As Byte
tablo1 = Array([A3:A2013], [B3:B2013], [C3:C2013], [D3:D2013]) 'plages protégées
tablo2 = Array("tata", "titi", "toto", "tutu") 'mots de passe
For i = 0 To UBound(tablo1)
  If Not Intersect(Target, tablo1(i)) Is Nothing Then
    If InputBox("Mot de passe :", "Plage " & tablo1(i).Address(0, 0)) <> tablo2(i) Then _
      [A3].Select: Exit Sub
  End If
Next
End Sub
Merci Par Avance
 

job75

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Bonjour Ilino,

Pour vous donner des idées voyez le fichier joint et les macros dans la feuille et ThisWorkbook.

On peut entrer des données en G2 I2 K2 M2 sans avoir la demande du mot de passe.

Tout se joue sur le déplacement après validation :

Code:
Application.MoveAfterReturn = Intersect(Target, [G2,I2,K2,M2]) Is Nothing
A+
 

Pièces jointes

  • Protection multiplages(1).xls
    100.5 KB · Affichages: 33

Ilino

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Bonjour Job, Bonjour Forum
merci encore pour la réponse , mais je n'arrive pas a l'adapter a mon application
If you like ci joint le fichier
dans la feuille LISTE
ESSAYE DE FAIRE UN TESTE DANS CETTE FEUILLE
UN BIG THINKS JOB
 

Pièces jointes

  • FSE 2013.xlsm
    344.4 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Re Ilino,

Vous avez parfaitement adapté ce que j'ai proposé, je ne vois pas où est le problème.

Je ne vois pas non plus à quoi doivent servir tous ces boutons, aucune macro ne leur est affectée.

Vous ne croyez pas qu'ils font un peu usine à gaz ?

Pour les petits copains qui sont sur Excel 2003 je joins le fichier .xls.

A+
 

Pièces jointes

  • FSE 2013.xls
    464 KB · Affichages: 33

job75

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Re,

Finalement je me suis permis de supprimer tous vos boutons.

En double-cliquant en ligne 1 on ôte ou remet en place la protection d'une colonne.

La variable mdp est maintenant un tableau, elle est déclarée dans Module1 :

Code:
Public mdp(1 To 16) As Boolean 'mémorisation
Il y a 15 mots de passe (à adapter dans le code de l'UserForm) pour les colonnes A:K et M:p.

A+
 

Pièces jointes

  • FSE 2013(1).xls
    444 KB · Affichages: 25

Ilino

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Re Ilino,

Vous avez parfaitement adapté ce que j'ai proposé, je ne vois pas où est le problème.

Re amigo JOB
Dans tous les cas un nieme Merci pour tes réponses ...
le problème est au niveau de la feuille LISTE ( essaye de modifier le contenue d'une cellule par exemple la cellule B3 remplacer le A par un autre ex B, il ne s'affiche pas apres la validation )est ce que c'est normale ?????
merci
 

job75

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille ( Resolut )

Re,

PROBLEMI resolvere;)

Tant mieux, mais à mon avis votre macro Worksheet_Change doit être revue, voyez ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then 'interdit de modifier une plage (copier-coller)
  Application.EnableEvents = False
  Application.Undo
  Application.EnableEvents = True
ElseIf Not Intersect(Target, [A2:K2,M2:P2]) Is Nothing Then
  Cells(Rows.Count, Target.Column).End(xlUp)(2) = Cells(2, Target.Column)
End If
End Sub
Fichier (2).

A+
 

Pièces jointes

  • FSE 2013(2).xls
    443.5 KB · Affichages: 25
Dernière édition:

job75

XLDnaute Barbatruc
Re : MDP pour chaque colonnes dans la meme feuille

Bonjour Ilino, le forum,

La macro complétée pour éviter l'entrée de doublons :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then 'interdit de modifier une plage (copier-coller)
  Application.EnableEvents = False
  Application.Undo
  Application.EnableEvents = True
ElseIf Not Intersect(Target, [A2:K2,M2:P2]) Is Nothing Then
  If Target = "Saisir ici !" Then Exit Sub
  If Application.CountIf(Target.Resize(2012), Target) > 1 Then
    MsgBox "La donnée '" & Target & "' existe déjà !", 48
  Else
    Cells(Rows.Count, Target.Column).End(xlUp)(2) = Target
  End If
  Target = "Saisir ici !"
End If
End Sub
Fichier (3).

A+
 

Pièces jointes

  • FSE 2013(3).xls
    444 KB · Affichages: 27

Discussions similaires

Statistiques des forums

Discussions
312 836
Messages
2 092 616
Membres
105 466
dernier inscrit
Jsquare