Macro : comparer 2 tableau sur 2 feilles et MAJ conditionnel
Bonjour,
je suis un utilisateur de niveau moyen d'excel, et je cherche à réaliser un tableau dont la mise à jour serait automatique (via macro) partir d'un autre fichier et qui me permettrait de faire des statistiques. j'arrive à ouvrir le 2nd fichier, importer les données, réaliser les statistiques automatiquement, mais je bloque sur la mise à jour du tableau.
j'ai donc créé le fichier joint (exemple.xls) pour que vous puissiez m'aider :
j'aimerais une macro qui complète le tableau de la feuille "feuille à compléter" à partir du tableau "feuille référente". Seules les lignes contenant "OK" en colonne D doivent être copiées (soit les rang 77,78,80,81,82).
Pour les lignes présente sur la feuille "feuille à compléter", il faudrait mettre à jour les dates (colonnes C et E) lorsqu'elles sont vides selon la "feuille référente" (dans l'exemple, les dates des rang 23 à 26 et 48 à 50) si celles-ci ne sont pas vides.
Enfin, il faudrait remplir d'une couleur les cases qui ont été mises à jour afin que je puisse rapidement les repérer.
(bien sûr, je n'ai créé le fichier joint que pour le post, mais le fichier initial contient des milliers de lignes, et la MAJ manuelle serait fastidieuse....)
Merci d'avance à tous ceux qui pourront m'aider
Bonsoir
Autre code
Sub MAJ_Tableau_A_COMPLETER()
Application.ScreenUpdating = False
Dim Lig As Long, NbrLig As Long, NumLig As Long, i As Integer
With Sheets(1)
NumLig = 1
NbrLig = .Cells(65536, 2).End(xlUp).Row
For Lig = 2 To NbrLig
If .Cells(Lig, 4).Value = "OK" Then
.Range("A" & Lig & ":E" & Lig).Copy Sheets(2).Cells(Rows.Count, "A").End(xlUp)(2)
NumLig = NumLig + 1
End If
Next
End With
With Sheets(2)
.Activate
.Range("A2:E" & .UsedRange.Rows.Count).Interior.Color = xlNone
.UsedRange.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess
For i = .Range("A65536").End(xlUp).Row + 1 To 2 Step -1
If .Range("A" & i) = .Range("A" & i + 1) Then
If .Range("C" & i) <> .Range("C" & i + 1) Then
Range("C" & i) = Range("C" & i + 1)
Range("C" & i).Interior.ColorIndex = 3
End If
If .Range("E" & i) <> .Range("E" & i + 1) Then
Range("E" & i).Interior.ColorIndex = 3
Range("E" & i) = Range("E" & i + 1)
End If
.Range("A" & i + 1).EntireRow.Delete
End If
Next
End With
End SubAmicalement
Nad
Parfait, merci à vous, les 2 possibilités fonctionnent!!
Je retiens le code de Banzaï64 qui colorie bien toutes les lignes mises à jour, alors que dans le code de Nad, les nouvelles lignes ne l'étaient pas (je pense que ce n'était pas trop difficile à modifier si j'avais dû le faire).
Encore merci à vous 2 car je n'était encore arrivé à rien de concluant de mon coté avec un code beaucoup plus long.
Bonne journée