Enregistré le changement de valeur dans une cellule

Résolu/Fermé
New_VBA_User Messages postés 82 Date d'inscription mardi 27 août 2019 Statut Membre Dernière intervention 3 octobre 2019 - 25 sept. 2019 à 10:33
New_VBA_User Messages postés 82 Date d'inscription mardi 27 août 2019 Statut Membre Dernière intervention 3 octobre 2019 - 27 sept. 2019 à 10:38
Bonjour,

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


Configuration: Windows / Edge 18.17763
A voir également:

2 réponses

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
25 sept. 2019 à 11:15
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?
1
New_VBA_User Messages postés 82 Date d'inscription mardi 27 août 2019 Statut Membre Dernière intervention 3 octobre 2019
25 sept. 2019 à 11:23


voir image,

par exemple, d'abord on registre les valeur de tous les textbox, ensuite, on change la valeur de "Site" dans ce cas j'aimerai juste enregistré la valeur changé "Site" et non le reste, le reste de ligne reste inchangé, dans ce cas, je peux repérer la colonne changé pour audit.
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > New_VBA_User Messages postés 82 Date d'inscription mardi 27 août 2019 Statut Membre Dernière intervention 3 octobre 2019
25 sept. 2019 à 11:47
tu ne donnes pas les informations nécessaires pour adapter le programme.
tu n'as pas répondu à la question "où veux-tu enregistrer quoi?".
où veux-tu enregistrer la valeur changée "Site"?
donne un exemple de ce que contient la feuille "TIA" dans ce cas-là.
0
New_VBA_User Messages postés 82 Date d'inscription mardi 27 août 2019 Statut Membre Dernière intervention 3 octobre 2019
Modifié le 25 sept. 2019 à 12:55
On enregistre les donné dans la Feuille "TIA"

voici un exemple de feuille TIA, si on change Paris par Lyon, alors on ne change pas le reste mai juste la colonne Site.
Merci.
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > New_VBA_User Messages postés 82 Date d'inscription mardi 27 août 2019 Statut Membre Dernière intervention 3 octobre 2019
25 sept. 2019 à 15:00
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
0
New_VBA_User Messages postés 82 Date d'inscription mardi 27 août 2019 Statut Membre Dernière intervention 3 octobre 2019
Modifié le 25 sept. 2019 à 16:11
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




0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
25 sept. 2019 à 11:20
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
1