Modification rapport possible pendant 24h
Bonjour la communauté,
Je reviens vers vous car mon niveau ne me permet pas de trouver la finesse du code pour:
Actuellement lorsqu'une personne veut modifier son rapport, le code vérifie que son "username" soit dans un listing ("IGG LISTING")
* si l'utilisateur est dans ce listing, il peut modifier sont rapport pendant 24h. Passer les 24 h ce n'est plus possible.
Quand la personne est dans le listing et qu'elle est renseignée comme "ADMIN" , elle peut modifier son rapport indéfiniment.
J'aimerai ajouter cette chose au code:
Si j'encode les utilisteurs en "ADMINTEMP" dans le listing à la 3ieme colonne "IGG LISTING"ceux-ci peuvent modifier les rapports de tous comme un admin mais seulement pendant 24h.
Voici le code actuel:
Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim i As Integer
Dim c, d
If Me.ComboBox2.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox2.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "A") 'A c'est la valeur indiquée dans le combo
'Recherche de l'utilisateur dans la feuille IGG
Set c = Sheets("IGG LISTING").Columns(3).Find(what:=Ws.Cells(Ligne, 4).Value, lookat:=xlWhole)
'Si l'utilisateur est trouvé, comparer son identifiant par rapport à c.offset(0, -1).Value
If Not c Is Nothing Then
'Remplissage des elements du userform
For i = 1 To 9
Me.Controls("TextBox" & i).Value = Ws.Cells(Ligne, i + 2).Value
Next i
Set d = Sheets("IGG LISTING").Columns(2).Find(what:=Environ("username"), lookat:=xlWhole)
If Not d Is Nothing Then
If d.Offset(0, 2).Value <> "ADMIN" Then
'Si le username est différent, laisser l'affichage mais désactiver les champs
If c.Offset(0, -1).Value <> Environ("username") Then
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = False
Next i
'Sinon activer les champs
'ligne 8= texte pour dire 8ieme col
Else
If CDate(Ws.Cells(Ligne, 8).Value) < Now - 1 Then
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = False
Next i
Else
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = True
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
End If
End If
'Si admin activer les champs
Else
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = True
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
End If
Else
'Désactiver les champs
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
MsgBox ("Vous ne faites pas partie de la liste IGG")
End If
Else
'Désactiver les champs
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
MsgBox ("Le créateur du rapport n'est pas trouvé dans la liste IGG")
Exit Sub
End If
End SubD'avance merci pour votre aide précieuse.
DJ
Bonjour Jerome_DD,
Sans le classeur je n'ai pas pu tester alors dis moi si cela fonctionne.
A bientôt
Chris
Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim i As Integer
Dim c, d
If Me.ComboBox2.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox2.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "A") 'A c'est la valeur indiquée dans le combo
'Recherche de l'utilisateur dans la feuille IGG
Set c = Sheets("IGG LISTING").Columns(3).Find(what:=Ws.Cells(Ligne, 4).Value, lookat:=xlWhole)
'Si l'utilisateur est trouvé, comparer son identifiant par rapport à c.offset(0, -1).Value
If Not c Is Nothing Then
'Remplissage des elements du userform
For i = 1 To 9
Me.Controls("TextBox" & i).Value = Ws.Cells(Ligne, i + 2).Value
Next i
Set d = Sheets("IGG LISTING").Columns(2).Find(what:=Environ("username"), lookat:=xlWhole)
If Not d Is Nothing Then
If d.Offset(0, 2).Value <> "ADMIN" Then
'test si ADMINTEMP et moins de 24 H alors dirigé vers ADMIN:
If d.Offset(0, 2).Value = "ADMINTEMP" And CDate(Ws.Cells(Ligne, 8).Value) < Now - 1 Then GoTo ADMIN
'Si le username est différent, laisser l'affichage mais désactiver les champs
If c.Offset(0, -1).Value <> Environ("username") Then
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = False
Next i
'Sinon activer les champs
'ligne 8= texte pour dire 8ieme col
Else
If CDate(Ws.Cells(Ligne, 8).Value) < Now - 1 Then
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
extBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = False
Next i
Else
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = True
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
End If
End If
'Si admin activer les champs
Else
ADMIN:
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = True
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
End If
Else
'Désactiver les champs
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
MsgBox ("Vous ne faites pas partie de la liste IGG")
End If
Else
'Désactiver les champs
For i = 1 To 9
Me.Controls("TextBox" & i).Enabled = False
TextBox1.BackColor = &H80000005
TextBox2.BackColor = &H80000005
TextBox3.BackColor = &H80000005
TextBox4.BackColor = &H80000005
TextBox5.BackColor = &H80000005
Me.CommandButton4.Enabled = True
Next i
MsgBox ("Le créateur du rapport n'est pas trouvé dans la liste IGG")
Exit Sub
End If
End Sub
Chris,
Un tout grand merci !
Cela fonctionne .
Merci l aide
Jérôme
Merci pour le retour et content d'avoir pu t'aider
A la prochaine
Chris