Modifier un tableau de référence à partir d'un tableau de modification VBA

Bonjour tout le monde. Je suis novice et je débute en VBA Excel et j'aimerais avoir quelques pistes afin de réaliser un projet.

Voici le contexte :

J'aimerais mettre à jours un tableau de référence (tableau de donnée en début de projet) en fonction d'un tableau de modification (tableau de donnée en fin de projet avec modification apportées). La comparaison s’opère sur l’ID en :

  • Coloriant les lignes en bleu si elles sont présente dans les deux tableaux
  • Coloriant les lignes en rouges si elles ne sont plus présentes dans le tableau de modification
  • Coloriant les lignes en vertes si elles ont été ajoutées dans le tableau de modification

voici un petit schéma qui illustre mon propos:

tableaux

Si vous avez des liens qui me permettent de réaliser ce genre de chose afin de pouvoir m'inspirer d'un logique car je suis complètement paumé. Ca m'aiderait fortement.

Merci d'avance et bonne journée :)

bonjour,

Voici un lien qui date de plus de 15 ans mais qui n'a pas pris une ride !

http://forum.ruemontgallet.com/ruemontgallet/Programmation/vb-vba/comparaison-ligne-excel-sujet_2286...

Voir en particulier (vers le milieu ma réponse à Kevin66 qui traite exactement ce sujet.

EDIT : Récupération du code en question et adaptation (non vérifié) pour comparaison de 2 feuilles :

Sub CompareWS()
    Dim iLRA%, iLRN%, i%, j%, k%
    Dim Y As Boolean, Ys As Boolean
    Dim TabloA(), TabloN()
    Dim TWB As Workbook
    Dim WsA As Worksheet, WsN As Worksheet
    Set TWB = ThisWorkbook
    'Détermination du nombre de ligne des feuillez "A" et "N"
    Set WsA = TWB.Worksheets(1)
    Set WsN = TWB.Worksheets(2)
    iLRA = WsA.Cells(65535, 1).End(xlUp).Row
    iLRN = WsN.Cells(65535, 1).End(xlUp).Row
    TabloA() = WsA.Range("A1:A" & iLRA)
    TabloN() = WsN.Range("A1:A" & iLRB)
    'Détermination des absents
    For i = 1 To UBound(TabloA)
      For j = 1 To UBound(TabloN)
        'Si égalité alors on pose un drapeau
        If TabloN(j, 1) = TabloA(i, 1) Then
          Y = True
          'et on vérifie la ligne si c'est une égalité stricte
            For k = 1 To 15
              'si différence on pose un drapeau
              If WsA.Cells(i, k) <> WsN.Cells(j, k) Then
                Ys = True
                'et on colore en orange
                WsN.Cells(j, k).Interior.ColorIndex = 45
              End If
            Next
              'sinon 1ere cellule en vert
              WsN.Cells(j, 1).Interior.ColorIndex = IIf(Ys, 45, 4)
            Ys = False
          Exit For
        End If
      Next
      'Si pas trouvé alors on colorie en rouge
      If Not Y Then WsA.Range("A" & i).Interior.ColorIndex = 3
      Y = False
    Next
    Set TWB = Nothing
    Set WsA = Nothing
    Set WsN = Nothing
End Sub

A+

Edit : Code corrigé pour tenir compte de la remarque de l'utilisateur.

Merci beaucoup pour votre réponse rapide. Je me plonge dans le code.

Un grand merci cela fonctionne très bien et c'est très compréhensible. :)

il y a juste à deux endroit du code où vous utiliser iLRB alors que c'est iLRN. Mais après ces deux petites adaptations tout est parfait. Un grand merci :)

Merci pour le retour,

Ce n'est pas étonnant depuis 15 ans ce prog à évolué un nombre de fois effarant avec des conditions souvent mineures au gré des interlocuteurs et des forume différents... (Comme c'est visible dans le fil joint) J'ai donc souvent adapt" quelques variables au fil de l'eau... Sans le plus souvent pouvoir tester faute de temps. Je vérifie et note cela sur mon classeur de référence.

A+

Rechercher des sujets similaires à "modifier tableau reference partir modification vba"