1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
| '*******************************************************
' VARIABLES GLOBALES
'*******************************************************
'
' MOT DE PASSE - ADMIN - FEUILLE
Public Const mdp_admin = "admin"
Public Const mdp_sheet = "95<daz?k7wJ"
'
'Déclaration des variables globals des noms des feuilles
Public Const sheet_source = "source"
'
Public t_secteur() As String 'tableau d'info des secteurs
Public nb_secteur As Integer 'NB total de secteur
'
'
'
'||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
' LIGNE DE CODE POUR LE FICHIER SOURCE DU FILTRE
'||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'
'********************************************************************
' BTN_RECALIBRAGE (Retour en Haut à gauche)
'********************************************************************
Sub btn_recalibrage_camera()
'On sélectionne la cellule tout en haut à gauche
Sheets(sheet_source).Range("C3").Select
End Sub
'********************************************************************
' Initialisation du tableau des SECTEURS
'********************************************************************
Sub fct_initialisation_secteurs()
Dim new_secteur As Boolean
nb_secteur = 0
decalage = 3 'decalage
'Calcul le nombre de secteur déclarés
Do Until IsEmpty(Sheets(sheet_source).Range("A" & 4 + nb_secteur))
nb_secteur = nb_secteur + 1
Loop
'On définie le tableau 0: nom, 1: mdp, 2: début, 3: fin
ReDim t_secteur(nb_secteur, 4)
'on recupère le nom du secteur et son mdp
For i = 0 To nb_secteur - 1
t_secteur(i, 0) = Sheets(sheet_source).Range("A" & 4 + i).Value
t_secteur(i, 1) = Sheets(sheet_source).Range("B" & 4 + i).Value
Next i
i = 0
'on recherche/enregistre la plage de chaque secteur
Do Until IsEmpty(Sheets(sheet_source).Cells(3, decalage + i).Value)
new_secteur = False
'Parcours tous les secteurs
For ii = 0 To nb_secteur - 1
'Si la valeur = à un secteur alors nouveau secteur
If t_secteur(ii, 0) = Sheets(sheet_source).Cells(3, decalage + i).Value Then
new_secteur = True 'Donc elle n'appartien pas a un secteur
num_secteur = ii 'Savoir dans quel secteur on se situe
Exit For 'sorti de boucle for
End If
Next ii
'Si c'est un nouveau secteur on recup la lettre de début de colonne
If new_secteur Then
t_secteur(num_secteur, 2) = oth_NumCol2Lettre(i + decalage + 1) 'debut secteur
Else
t_secteur(num_secteur, 3) = oth_NumCol2Lettre(i + decalage) 'fin secteur
End If
i = i + 1
Loop
End Sub
't_secteur(x,0) = nom_secteur
't_secteur(x,1) = mdp
't_secteur(x,2) = 1ère colonne du secteur
't_secteur(x,3) = dernière colonne du secteur
'********************************************************************
' BTN_DEVEROUILLER SECTEUR
'********************************************************************
'Dévérouille les secteurs suivant le mot de passe entré
Sub btn_deverouiller()
'Vérif données
On Error Resume Next 'Skip le message d'erreur
If LBound(t_secteur()) Then 'On regard si le tableau est initialisé
MsgBox "vide donc on appel l'initialiseur"
Call fct_initialisation_secteurs
End If
'on demande un mot de passe
reponse = InputBox("Saisissez le mot de passe de votre secteur pour dévérouiller et modifier les colonnes associées.", "Mot de passe du secteur à dévérouiller")
'on dévérouille la plage associé
mdp_valid = False
For i = 0 To nb_secteur - 1
'vérification du Mot de passe
If reponse = t_secteur(i, 1) Then
MsgBox "Vous venez de vous connecter dans le secteur: " & t_secteur(i, 0)
Call fct_unlock_section_zone(t_secteur(i, 2), t_secteur(i, 3))
mdp_valid = True
Exit For
'If le mot de passe est celui de l'administrateur
ElseIf reponse = mdp_admin Then
MsgBox "Bienvenue Administrateur :) "
ActiveSheet.Unprotect mdp_sheet 'Unlock ALL !!
Range("C3").Select
mdp_valid = True
Exit For
End If
Next i
'Si mauvais mot de passe
If mdp_valid = False Then
MsgBox "Mot de passe incorrect", vbCritical
End If
End Sub
'********************************************************************
' BTN_VEROUILLER SECTEUR
'********************************************************************
'Btn pour verouiller toute la feuille
Sub btn_lock_sheet()
'on FIGE l'affichage pour le User
Application.ScreenUpdating = False
'Unlock la feuille
ActiveSheet.Unprotect mdp_sheet
'On vérrouille toutes les autres cellules (dont l'ancienne plage dévérouillée)
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
Cells(3, 3).Select
'On LOCK la feuille
ActiveSheet.Protect mdp_sheet, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowInsertingColumns:=True, AllowDeletingColumns:=True
ActiveSheet.EnableSelection = xlUnlockedCells 'on décoche "selectionner les cellules vérouillées"
'on DEfige l'affichage pour le User
Application.ScreenUpdating = True
End Sub
'********************************************************************
' BTN_VEROUILLER SECTEUR
'********************************************************************
Sub fct_unlock_section_zone(ByVal l_debut, l_fin As String)
'on FIGE l'affichage pour le User
Application.ScreenUpdating = False
'Unlock la feuille
ActiveSheet.Unprotect mdp_sheet
'On vérrouille toutes les autres cellules (dont l'ancienne plage dévérouillée)
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
Cells(3, 3).Select
'On sélectionne la plage du secteur appropriée
Columns(l_debut & ":" & l_fin).Select
'on dévérouille les cellules
Selection.Locked = False
Selection.FormulaHidden = False
'on vérouille les deux 1ère lignes
Rows("1:2").Select
Selection.Locked = True
Selection.FormulaHidden = False
'On protège la feuille
ActiveSheet.Protect mdp_sheet, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowInsertingColumns:=True, AllowDeletingColumns:=True
ActiveSheet.EnableSelection = xlUnlockedCells 'on décoche "selectionner les cellules vérouillées"
'on DEfige l'affichage pour le User
Application.ScreenUpdating = True
End Sub
'********************************************************************
' Other fonctions useful
'********************************************************************
'Conversion lettre de colonne, Microsoft Windows Excel, en numéro :
Public Function oth_Lettre2NumCol(ByVal Chaine As String) As Long
Dim i As Long, ValeurCh As Long, v As Long
Const ChaineAlpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For i = 1 To Len(Chaine)
ValeurCh = InStr(1, ChaineAlpha, Mid(UCase(Chaine), i, 1))
v = v * 26 + ValeurCh
Next
oth_Lettre2NumCol = v
End Function
'Conversion numéro de colonne, Microsoft Windows Excel, en lettre :
Public Function oth_NumCol2Lettre(ByVal NumCol As Long) As String
Dim i As Long, x As Long, s As String
For i = 6 To 0 Step -1
x = (26 ^ (i + 1) - 1) / 25 - 1
If NumCol > x Then
s = s & Chr(((NumCol - x - 1) \ 26 ^ i) Mod 26 + 65)
End If
Next i
oth_NumCol2Lettre = s
End Function |
Partager