Enregistré le changement de valeur dans une cellule
RésoluNew_VBA_User Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
j'aimerai enregistré les donnés dans une feuilles avec un bouton Sauvegarde dans un 1er temps, et ensuite enregistré les changement dans la donné existante sans crée de doublons.
j'arrive a enregistré les donnés, mais je n'arrive pas enregistré les valeur changés.
je sauvegarde toute la ligne avec ou sans changement.
ça me pose un problème car je dois tracé le changement pour un audit.
merci de l'aide, voici le code utilisé, je peux vous fournir le fichier si souhaité.
Private Sub CommandButton_SaveData_Click()
Dim Plage As Range, i, ii, Ligne, Ligne2 As Long, Nom As String
Dim Ctrl As Control
If MsgBox("Are you sure you want to save your changes?", vbYesNo, "Confirmation request") = vbYes Then
With Sheets("Param")
Set Plage = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
End With
'****************** Write Data in spéficique file *************************************************************
With Sheets("TIA")
.Activate
Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
If IsNumeric(Application.Match(CLng(Me.TextBox_EquipementSAP.Text), .[G:G], 0)) Then ' find equipment N° in colum A, we have a numerical result
Ligne = Application.Match(CLng(Me.TextBox_EquipementSAP.Text), .[G:G], 0) ' get the line number
Else
Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 ' empty line
End If
For i = 1 To 94 ' 98 critères à enregistés'
Nom = Plage(i).Offset(, 1)
If Nom <> "" Then .Cells(Ligne, i) = Me.Controls(Nom).Value ' on sauvegarde toute la ligne'
Next i
End With
End If
End Sub
2 réponses
La problématique porte sur l’enregistrement des données via un bouton Sauvegarder, en créant d’abord une ligne et ensuite en traçant les changements sans doublons pour l’audit. Plusieurs répondants préconisent d’identifier le numéro d’équipement, de localiser la ligne correspondante ou d’en créer une nouvelle, puis d’écrire les valeurs uniquement dans les colonnes modifiées. Une approche avancée propose d’utiliser une feuille de log, Modification Log, pour enregistrer la date, l’utilisateur, la cellule changée et les valeurs précédente et nouvelle, tout en colorant les cellules modifiées. En parallèle, il est conseillé de clarifier où enregistrer chaque champ, de vérifier les déclarations et de tester avec un fichier exemple pour éviter les doublons et assurer l’audit.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
je ne comprends pas "enregistré les changement dans la donné existante sans crée de doublons".
où veux-tu enregistrer quoi? peux-tu donner un exemple?-
-
-
-
je ne comprends pas. peux-tu montrer le résultat si on change tout, pour que je comprenne la différence entre changer tout et ne changer qu'une colonne.
à tout hasard, au lieu de ta ligne 24:If Nom <> "" Then If .Cells(Ligne, i) <> Me.Controls(Nom).Value Then .Cells(Ligne, i) = Me.Controls(Nom).Value End If End If -
Voici une image d'enregistrement de donné dans la feuille TIA, je coloris en orange chaque changement dans la fauille TIA et j'ai un log ou on viens enregistrée les donné de changement, qui a changé et qu'est-ce qui est changé etc. et on viens bien que les ligne pour chaque critère sont en orange au lieu de crée une ligne pour le changement dans la feuille Modification Log.
Je te mets le fichier en exemple, pour que tu puisse voie par toi même le problème.
STP, c'est très important de réussir à résoudre ce problème pour demain. merci d'avance.
lien fichier exemple:
https://www.cjoint.com/c/IIzojOlJKDI
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
tes déclarations ne sont pas correctes, il faut faire:Dim Plage As Range, i As Long, ii As Long, Ligne As Long, Ligne2 As Long, Nom As String