Macro excel comparaison

Résolu


Bonjour,

J'essaie de faire une macro qui compare des données références à des données sources du même type et qui me donne un tableau récapitulatif avec toutes les données avec le code couleur.

voici l'exemple dans l'image.

Merci,

3 réponses

  1. Pourquoi une macro ? Une RechercheV suffit amplement.

    Et pour les couleur on peux le faire avec une Mise en forme conditionelle.

    Vous voulez un exemple ?
    1. Je veux bien l'exemple pour voir si c'est vraiment ce que je veux faire!

      Mais ce que je veux faire, c'est vérifier si la référence des données de références existe dans la référence des données sources:
      - si elle est identique, je compare leur status, si le status est identique je mets dans l'extract comparé la référence et les 2 status en vert
      - si elle est identique, je compare leur status, si le status est différent je mets dans l'extract comparé la référence et les 2 status avec le status source en orange
      - si la référence des données de références n'existe pas, je la mets dans l'extract comparé avec son status en rouge et le status source (status 1') vide
      - si la référence des données de sources n'existe pas, je la mets dans l'extract comparé avec son status en rouge et le status références (status 1) vide

      Une macro pour automatisé car les sources changent.
      1. Oui j'avais compris :)

        combient de lignes maximum ?
      2. 1048500 lignes max
      3. Haha voici déjà un exemple avec 200 lignes.

        Faites attention car avoir autant de lignes va faire que votre ficher va prendre beaucoup de place inutilement, ce qui va ralentir l'ouverture et la sauvegarde.

        Le fichier : https://www.cjoint.com/?3GksOt16uuK
      4. Je viens de voir ton exemple et merci bien!
        Mais la colonne ref de l'extract comparé, tu l'as copié manuellement, moi ce que je voulais faire c'est automatisé tout le tableau même la récupération de la ref.

        "si elle est identique, je compare leur status, si le status est identique je mets dans l'extract comparé la référence et les 2 status en vert
        - si elle est identique, je compare leur status, si le status est différent je mets dans l'extract comparé la référence et les 2 status avec le status source en orange
        - si la référence des données de références n'existe pas, je la mets dans l'extract comparé avec son status en rouge et le status source (status 1') vide
        - si la référence des données de sources n'existe pas, je la mets dans l'extract comparé avec son status en rouge et le status références (status 1) vide "

        Merci en tout cas!+
      5. Hum donc enfaîte dans la 3e partie ça irait chercher automatiquement .dans toutes les valeurs ref (De la 1ere et de la 2e partie) et de es ajouter dans la 3e (en les comparent) ?

        Donc vous devrez remplir la partie 1 puis la partie 2. Finalement vous appuillez sur un bouton et la ça génère la partie 3 ?
    2. Contributeur
      re,

      proposition:
      boulot intéressant
      je n'ai pas encore fait les mises en couleurs car je dois m'absenter : donc patience
      'mais tu peux les faire manuellement sur les 1 million quelques lignes!!!attention à la saturation de la RAM; apparemment, tu n'as pas traité le cas ou "g" est vide(ligne 28 à >=1000000)--> pas de couleurs

      https://www.cjoint.com/?3GrqitJCLbw

      Tu dis
      1. Je tenais à vous remercier pour l'effort fourni.
        Je veux m'en servir comme base d'apprentissage en VBA si vous pouvez commenter pour que je sache comment c'est fait.
        Bien sure quand vous aurez le temps.

        Très chouette!

        A+
      2. Contributeur
        et voilà pour les couleurs avec VBa
        ca augmente la durée mais le classeur est moins lourd qu'avec des MEFC: personnellement je testerais sur 15000 à 20000 lignes et opterai pour une des 2 solutions
        a insérer après
        Rows(Derlig & ":" & Cells.Rows.Count).Hidden = True

         'mise en couleur
        For Cptr = 3 To Derlig - 1
        If IsEmpty(Cells(Cptr, "i")) Then
        Cells(Cptr, "I").Interior.Color = 255 ' rouge
        Else
        If Cells(Cptr, "H") = Cells(Cptr, "I") Then Range(Cells(Cptr, "H"), Cells(Cptr, "I")).Interior.Color = 5296274 'vert
        If Cells(Cptr, "H") <> Cells(Cptr, "I") Then Range(Cells(Cptr, "H"), Cells(Cptr, "I")).Interior.Color = 49407 'orange
        End If
        Next

        pour les explications pédagogiques ça risquerait d'^tre très long, désolé !!!

        un truc à consulter pour apprendre et comprendre
        https://excel.developpez.com/cours/
      3. Ok merci je vais faire ça
        Je reviendrai vers vous pour m'orienté car j'ai pas mal de chose à ajouter à mon fichier.
        Il faut que j'y réfléchisse.

        A+