ExcelUser21
XLDnaute Nouveau
Bonjour,
je me presente, je suis Giu. je vien d'arrivée et j'espere pourvoir aider et etre aider.
voici mon probleme 🙂)
j 'ai un code VBA, qui m'adapte dans un Sheet les modification dans une autre feuil dans le meme document.
j'ai besion svp de votre aide pour adapter le VBA.
Au moment actuel il me renvoie " auteur, nome de la feuil, text de ligne et colonne, Valeur entree, ancienne valeur, valeur après modification, date heure" dans le feuil de suivi, j'ai un contenu de cellule C à BX. Au moment actuel je recois comme retour ex: si je modifie la cellule D2 il me renvoie dans ma feuille de suivi le contenu de la cellule C1 et D2. mais si je modifie la cellule D3 le retour est : C2 + D3
j'aimerais que le retour de la ligne colonne est tjr la C1 d2, c1 d3 , F1, i1, K1, M1, etc. qui peut me dire ce qui faut changer dans ce code svp?
Private Sub Workbook_Sheetchange(ByVal feuille As Object, ByVal cible As Range)
Dim ValeurE() As Variant, AValeur() As Variant
On Error GoTo fin:
If feuille.Name = "Journal" Then Exit Sub
If cible.Columns.Count = Columns.Count Or cible.Rows.Count = Rows.Count Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Impossible d'agir sur une ligne ou une colonne complète !"
Exit Sub
End If
Application.EnableEvents = False
ReDim ValeurE(1 To cible.Rows.Count, 1 To cible.Columns.Count)
ReDim AValeur(1 To cible.Rows.Count, 1 To cible.Columns.Count)
Application.Undo
For Lig = 1 To UBound(ValeurE)
For col = 1 To UBound(ValeurE, 2)
ValeurE(Lig, col) = cible.Cells(0, 1).Offset(Lig - 1, col - 1).FormulaLocal
Next
Next
Application.Undo
For Lig = 1 To UBound(AValeur)
For col = 1 To UBound(AValeur, 2)
AValeur(Lig, col) = cible.Cells(1, 1).Offset(Lig - 1, col - 1).FormulaLocal
Next
Next
For Lig = 1 To cible.Rows.Count
For col = 1 To cible.Columns.Count
If ValeurE(Lig, col) <> AValeur(Lig, col) Then
With Sheets("Journal").ListObjects(1)
.ListRows.Add
i = .ListRows.Count
With .DataBodyRange
.Cells(i, 7) = Now
.Cells(i, 2) = feuille.Name
.Cells(i, 4) = cible.Cells(0, 1).Offset(Lig - 1, col - 1)
.Cells(i, 3) = cible.Cells(0, 1).Offset(Lig - 1, premierecol - 1)
.Cells(i, 5) = "" & ValeurE(Lig, col)
.Cells(i, 6) = "" & AValeur(Lig, col)
.Cells(i, 1) = Environ("Username")
End With
End With
End If
Next
Next
fin:
Application.EnableEvents = True
If Err Then MsgBox "Erreur #" & Err.Number & " !"
End Sub
Merci Bien pour votre Aide.
cordialement
je me presente, je suis Giu. je vien d'arrivée et j'espere pourvoir aider et etre aider.
voici mon probleme 🙂)
j 'ai un code VBA, qui m'adapte dans un Sheet les modification dans une autre feuil dans le meme document.
j'ai besion svp de votre aide pour adapter le VBA.
Au moment actuel il me renvoie " auteur, nome de la feuil, text de ligne et colonne, Valeur entree, ancienne valeur, valeur après modification, date heure" dans le feuil de suivi, j'ai un contenu de cellule C à BX. Au moment actuel je recois comme retour ex: si je modifie la cellule D2 il me renvoie dans ma feuille de suivi le contenu de la cellule C1 et D2. mais si je modifie la cellule D3 le retour est : C2 + D3
j'aimerais que le retour de la ligne colonne est tjr la C1 d2, c1 d3 , F1, i1, K1, M1, etc. qui peut me dire ce qui faut changer dans ce code svp?
Private Sub Workbook_Sheetchange(ByVal feuille As Object, ByVal cible As Range)
Dim ValeurE() As Variant, AValeur() As Variant
On Error GoTo fin:
If feuille.Name = "Journal" Then Exit Sub
If cible.Columns.Count = Columns.Count Or cible.Rows.Count = Rows.Count Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Impossible d'agir sur une ligne ou une colonne complète !"
Exit Sub
End If
Application.EnableEvents = False
ReDim ValeurE(1 To cible.Rows.Count, 1 To cible.Columns.Count)
ReDim AValeur(1 To cible.Rows.Count, 1 To cible.Columns.Count)
Application.Undo
For Lig = 1 To UBound(ValeurE)
For col = 1 To UBound(ValeurE, 2)
ValeurE(Lig, col) = cible.Cells(0, 1).Offset(Lig - 1, col - 1).FormulaLocal
Next
Next
Application.Undo
For Lig = 1 To UBound(AValeur)
For col = 1 To UBound(AValeur, 2)
AValeur(Lig, col) = cible.Cells(1, 1).Offset(Lig - 1, col - 1).FormulaLocal
Next
Next
For Lig = 1 To cible.Rows.Count
For col = 1 To cible.Columns.Count
If ValeurE(Lig, col) <> AValeur(Lig, col) Then
With Sheets("Journal").ListObjects(1)
.ListRows.Add
i = .ListRows.Count
With .DataBodyRange
.Cells(i, 7) = Now
.Cells(i, 2) = feuille.Name
.Cells(i, 4) = cible.Cells(0, 1).Offset(Lig - 1, col - 1)
.Cells(i, 3) = cible.Cells(0, 1).Offset(Lig - 1, premierecol - 1)
.Cells(i, 5) = "" & ValeurE(Lig, col)
.Cells(i, 6) = "" & AValeur(Lig, col)
.Cells(i, 1) = Environ("Username")
End With
End With
End If
Next
Next
fin:
Application.EnableEvents = True
If Err Then MsgBox "Erreur #" & Err.Number & " !"
End Sub
Merci Bien pour votre Aide.
cordialement
Dernière édition: