Modifier formulaire après vérification du username

Bonjour,

Je suis plus que novice en VBA mais grâce à des forums comme le vôtre j'ai pu créer un fichier qui me permet d'encoder via des formulaires les rapports de poste à mon boulot.

Néanmois, je bug sur un dernier dé

tails.

J'aimerais que lorsque nous devons modifier un rapport, que la modification de celui-ce ne soit autorisée que si le "username" de l'encodeur corresponde au username qui se trouve dans la colonne I(i) à l'origine du 1er rapport.

Voici le code initial, qui fonctionne très bien mais qui permet de modifier tout les rapports sans verification du username.

Option Explicit

Dim Ws As Worksheet

Private Sub ComboBox1_Change()

End Sub

'Pour la liste déroulante de la référence

Private Sub ComboBox2_Change()

Dim Ligne As Long

Dim I As Integer

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

For I = 1 To 4

Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)

Next I

End Sub

''Pour le bouton Quitter''

Private Sub CommandButton3_Click()

Unload Me

End Sub

'Pour le bouton Modifier

Private Sub CommandButton4_Click()

ActiveSheet.Unprotect ("Block") 'enlève protection feuille

Dim Ligne As Long

Dim I As Integer

If MsgBox("Confirmez-vous la modification de ce rapport ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then

If Me.ComboBox2.ListIndex = -1 Then Exit Sub

Ligne = Me.ComboBox2.ListIndex + 2

Ws.Cells(Ligne, "A") = ComboBox2

For I = 1 To 4

If Me.Controls("TextBox" & I).Visible = True Then

Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)

End If

Next I

End If

'Sheets("EXTRUSION").Protect Password:="Block" 'Remettre protection de la feuille

' remet protection avec certaines autorisation

ActiveSheet.Protect ("Block"), DrawingObjects:=True, Contents:=True, Scenarios:=True _

, AllowFiltering:=True

'script pour sauvegarde automatique lors de l'insertion

Application.AlertBeforeOverwriting = False

ThisWorkbook.Save

End Sub

''Pour le formulaire''

Private Sub UserForm_Initialize()

Dim J As Long

Dim I As Integer

ComboBox1.ColumnCount = 1 ''Pour la liste déroulante Civilité''

ComboBox1.List() = Array("MATIN", "APRES-MIDI", "NUIT", "MATIN 12h", "NUIT 12h", "AUTRE...")

Set Ws = Sheets("EXTRUSION") ''Correspond au nom de l onglet dans le fichier Excel''

With Me.ComboBox2

For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row

.AddItem Ws.Range("A" & J)

Next J

End With

For I = 1 To 4

Me.Controls("TextBox" & I).Visible = True

Next I

End Sub

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

End Sub

D'avance merci pour votre aide

Hello, si c'est en fonction du user windows tu peux essayer de comparer la varibale d'environnement Environ("username") aux valeurs de ta colonne qui contient les users autorisés.

si tu veux tester la variable d'environnement avec toi tu peux faire:

Sub test()

Msgbox(Envrion("username"))

End Sub

Histoire de voir si ce qu'il te renvoie correspondrait à ce que tu veux

Merci de la réponse mais je vais essayer d être plus clair.

J ai un 1er formulaire dans lequel les utilisateurs encode leurs rapports journalier. Dans ce 1er formulaire le username environ est repris et est indiqué comme identifiant de la ligne du rapport.

Puis il y a un 2ieme formulaire pour pouvoir sélectionner un des rapports et pouvoir modifier ceux ci.

Sauf que je voudrais qu il ne soit possible de modifier les rapports encodé à l origine que par le rédacteur lui-même et seulement lui.

Il pourrait uniquement modifier les rapports où son username est indiqué sur les lignes d une colonne du tableau.

J espere être plus clair. Pas facile à expliquer

Le code indiqué au dessus est le code de mon 2ieme formulaire de modification

Mais il permet de modifier tous les rapports et par tous.

Je voudrais qu il autorise seulement de modifier les lignes concernant son identifiant

Merci d avance pour votre aide

J'avoue qu'un petit fichier illustratif ne serait pas de trop pour bien comprendre ^^

Oui tu as tout à fait raison, voilà donc en pièce jointe le fichier.

Donc l'idée est de pouvoir modifier que ses propres rapports en fonction de l'iGG (IDENTIFIANT). repris en colonne I

D'avance merci

6elogbook.xlsm (208.16 Ko)

Voilà tu peux essayer avec le fichier en pièce jointe.

J'ai fait une recherche du nom de l'auteur dans IGG pour récupérer l'identifiant associé et quand il ne correspond pas à l'utilisateur actif, les champs du formulaire se désactivent.

6elogbook.xlsm (210.02 Ko)

Un super grand merci , c'est tout à fait ce que je pouvais espérer !

Bravo pour votre travail !

Une dernière petite question, pensez-vous qu'il soit possible de limiter la modification dans le temps ?

Autoriser la modif seulement pendant 24heures par exemple.

Merci

Voilà j'en ai profité pour corriger une erreur de copier/coller sinon les champs ne s'activent jamais.

J'ai mis 24h soit Now -1

10elogbook.xlsm (210.90 Ko)

Oui j'avais vu le petit "ic" du copier/coller mais un très grand merci pour l'aide.

Juste une question, si je modifie le -1 par -2 celà comptera 48h avant de bloquer les modifs ?

Mais je viens de tester de modifier un de mes rapports crée il y a 2 semaines et je sais le modifier. Une idée ?

Merci funkyfoenky

Absolument.

Now - X enlève X jours à la date/heure courante

Pour ton soucis de date, remplace:

Ws.Cells(Ligne, 8).Value < Now - 1

par

CDate(Ws.Cells(Ligne, 8).Value) < Now - 1

C'est un soucis de format de cellule rien de grave.

Sorry

Mais cela semble ne pas fonctionner. J arrive à modifier des rapports posté depuis plus de 2 jours

Cf l'edit de mon post précédent

Désolé mauvaise lecture de ma part, cela fonctionne parfaitement.

Merci pour votre collaboration !

Bjr,

Je me permet de revenir vers vous pour une ultime aide.

Ma demande initiale était de permettre aux encodeurs de modifier leurs propres rapport pendant une période de 24h. Et cela était fait en comparant l identifiant de la colonne I avec un tableau IGGlisting sur une autre feuille.

Mais pensez vous que je puisse créer un autre tableau avec les identifiants ADMIN qui eux pourraient toujours modifier n importe quel rapport ? Et sans limite dans le temps.

Merci d avance si vous avez l opportunité de m aider.

Rechercher des sujets similaires à "modifier formulaire verification username"