proteger colonnes

adkheir

XLDnaute Occasionnel
bonjour
comment peut on protéger quatre colonnes g,i,k,m avec mot de passe différent c'est dire pour la colonne g un mot de passe afficher masquer, pour i,un autre mdp et ainsi de suite pour le reste .
merci
 

job75

XLDnaute Barbatruc
Re : proteger colonnes

Bonjour adkheir,

Par exemple cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

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") <> tablo2(i) Then _
      [A1].Select: Exit Sub
  End If
Next
End Sub
Fichier joint.

Nota 1 : encore faut-il que les macros soient activées, cherchez sur le forum.

Nota 2 : possible de cacher les caractères tapés dans l'InputBox, bis repetita : cherchez.

Edit : ajouté Exit Sub

A+
 

Pièces jointes

  • Plages protégées(1).xls
    38 KB · Affichages: 52
Dernière édition:

adkheir

XLDnaute Occasionnel
Re : proteger colonnes

Bonjour adkheir,

Par exemple cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

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") <> tablo2(i) Then _
      [A1].Select: Exit Sub
  End If
Next
End Sub
Fichier joint.

Nota 1 : encore faut-il que les macros soient activées, cherchez sur le forum.

Nota 2 : possible de cacher les caractères tapés dans l'InputBox, bis repetita : cherchez.

Edit : ajouté Exit Sub

A+

bonsoir job75
Joli travail d'ailleurs c'est ce que je veux et mille merci , seulement c'est embarrassant de rentrer le mot de passe pour chaque cellule !! , une fois normalement ça doit être très suffisant
merci
++
 

job75

XLDnaute Barbatruc
Re : proteger colonnes

Re,

seulement c'est embarrassant de rentrer le mot de passe pour chaque cellule !! , une fois normalement ça doit être très suffisant

Bien vu adkheir !

Alors quand le mot de passe a été entré correctement, on mémorise sa position (dans l'Array) grâce au tableau bon :

Code:
Option Explicit
Dim bon(255) As Boolean 'mémorise le tableau (max 256 éléments)

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 Or bon(i)) Then
    If InputBox("Mot de passe :", "Plage " & tablo1(i).Address(0, 0)) = tablo2(i) Then
      bon(i) = True
    Else
      [A1].Select
      Exit Sub
    End If
  End If
Next
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Plages protégées(3).xls
    39 KB · Affichages: 54

adkheir

XLDnaute Occasionnel
Re : proteger colonnes

bonsoir
maintenant que le mot de passe est opérationnel j'ai voulu partager le fichier excel en réseau local comprenant un serveur sous win7 et quatre pc sous winxp , j'ai beau essayé mais impossible que les quatre pc prennent en charge le fichier en même temps pour saisir les notes des quatre matières
une idée ou astuce sera la bienvenue
merci
 

job75

XLDnaute Barbatruc
Re : proteger colonnes

Bonjour adkheir,

Je n'ai jamais programmé pour des ordi en réseau...

Mais à tout hasard, essayez cette version (4) :

Code:
Option Explicit
Dim bon(255) As String 'mémorise le tableau (max 256 éléments)

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 And bon(i) <> Environ("Username") Then
    If InputBox("Mot de passe :", "Plage " & tablo1(i).Address(0, 0)) = tablo2(i) Then
      bon(i) = Environ("Username")
    Else
      [A1].Select
      Exit Sub
    End If
  End If
Next
End Sub
C'est le nom utilisateur Windows Environ("Username") qui est mémorisé dans le tableau bon.

Normalement un mot de passe est connu par un seul utilisateur, autrement il sera demandé à chaque changement d'utilisateur...

A+
 

Pièces jointes

  • Plages protégées(4).xls
    39.5 KB · Affichages: 40

adkheir

XLDnaute Occasionnel
Re : proteger colonnes

bonsoir
j'ai voulu transférer le code mais il affiche une erreur !
y a til une possible de reverrouiller les plage protégés a l'aide d'un bouton de commande

merci
 

Pièces jointes

  • error.bmp
    515.7 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re : proteger colonnes

Bonsoir adkheir,

Je comprends que cette erreur se produit quand on est en réseau.

Donc en réseau on ne peut pas mémoriser en dehors de la macro.

A mon avis il faut que vous changiez votre fusil d'épaule : ne plus utiliser de mot de passe.

Et la possibilité d'accès se donnera en testant uniquement le nom utilisateur.

Voyez ces macros :

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("Gérard", "adkheir", "zozo", "zuzu") 'noms utilisateurs
For i = 0 To UBound(tablo1)
  If Not Intersect(Target, tablo1(i)) Is Nothing And _
    Environ("Username") <> tablo2(i) Then [A1].Select: Exit Sub
Next
End Sub

'pour connaître le nom utilisateur lancer cette macro :
Sub Nom()
MsgBox Environ("Username")
End Sub
Fichier (5).

A+
 

Pièces jointes

  • Plages protégées(5).xls
    39.5 KB · Affichages: 71

job75

XLDnaute Barbatruc
Re : proteger colonnes

Bonjour adkheir,

Pour revenir aux mots de passe, je serais très curieux de savoir si, en réseau, on peut mémoriser dans un nom défini.

Testez donc en réseau avec ces 2 macros :

- dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
'remet à zéro la mémorisation
Dim bon(255) As String
ThisWorkbook.Names.Add "memo", bon 'définit le nom
ThisWorkbook.Names("memo").Visible = False 'masque le nom
End Sub
- dans le code de la feuille Feuil1 :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tablo1, tablo2, i As Byte, bon(255) As String
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)
  bon(i) = Application.Index([memo], i + 1)
Next
For i = 0 To UBound(tablo1)
  If Not Intersect(Target, tablo1(i)) Is Nothing And bon(i) <> Environ("Username") Then
    If InputBox("Mot de passe :", "Plage " & tablo1(i).Address(0, 0)) = tablo2(i) Then
      bon(i) = Environ("Username")
      ThisWorkbook.Names.Add "memo", bon 'définit le nom
      ThisWorkbook.Names("memo").Visible = False 'masque le nom
    Else
      [A1].Select
      Exit Sub
    End If
  End If
Next
End Sub
Chaque fois qu'un utilisateur ouvre le fichier, la mémorisation est remise à zéro.

Fichier (6).

A+
 

Pièces jointes

  • Plages protégées(6).xls
    44 KB · Affichages: 40

adkheir

XLDnaute Occasionnel
Re : proteger colonnes

Bonjour Job75
en exécutant vos deux codes je reçois maintenant une erreur d’exécution 13 et en debogant je recois ça " bon(i) = Application.Index([memo], i + 1)"

Je vous remercie vivement pour l’intérêt que vous portez a ce poste , a vrai dire le forum superbe excel-downloads est une mine d'or pour ceux qui veulent manipuler excel !
merci encore
 

adkheir

XLDnaute Occasionnel
Re : proteger colonnes

bonsoir Job75, le forum
A peine avoir saisi une matière même a moitié le fichier devient très lourd en saisie et sauvegarde je ne comprends pas , la taille actuelle du fichier est environ de 10 Mo , solution serait la bienvenue , surtout que la saisie a commencé , peut etre que excel n'est pas le logiciel idéal pour ce genre d'application , quelqu'un m'a conseillé d’émigrer vers access !!!, j'attends avec impatience vos commentaires
merci a+++
 

job75

XLDnaute Barbatruc
Re : proteger colonnes

Bonsoir adkheir,

Allons allons adkheir, vous venez sur XLD depuis mai 2006...

Vous devriez savoir que les boules de cristal ont des limites.

Et que ce problème, il me semble, n'a plus rien à voir avec la protection de colonnes.

Ouvrez donc une nouvelle discussion avec votre fichier (très allégé...) et des explications sur la manière dont vous l'utilisez.

A+
 

Discussions similaires

Réponses
2
Affichages
169
Réponses
5
Affichages
408
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 240
Messages
2 086 518
Membres
103 241
dernier inscrit
Peyo33