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