Comparaison de colonnes et lignes entre deux feuilles

Bonjour !

Je me permets de revenir (encore) vous embêter.

J'avance doucement sur mon projet mais je bloque sur une étape.

Contexte du projet rapidement :

Je récupère via une base de données Oracle le statut de différentes applications, selon le statut, je colorise la case associée à l'application d'une certaine couleur selon le mois en cours.

Côté connexion à la base de données et fonction pour coloriser, tout est bon. En revanche, je n'arrive pas à comparer les valeurs retournées par la requête par rapport aux applications présentes sur mon fichier.

Pour plus de visibilité, voici un fichier avec les principaux éléments.

19testmacrov1.xlsm (18.68 Ko)

En gros :

Feuil1 : J'ai la liste de mes applications et les mois de l'année.

Feuille "Résultat" : liste des applications retournées par ma requête sur la BDD avec leur état.


Le but :

Comparer la liste des applications sur la feuille 1 et la feuille "Résultat" et coloriser la case correspondante SI les deux applications sont présentes des deux côtés.

En effet, il y a des applications qui sont retournées par la BDD que je ne gère pas et qui n'apparaissent donc pas sur la feuille 1. Egalement, les applications ne sont pas forcément dans le même ordre sur les deux feuilles.

Avec mon code actuel j'ai une erreur sur la ligne :

Select Case Sheets("Resultat").Range("D" & ligne) And Sheets("Resultat").Range("C" & ligne) = Sheets("Feuil1").Columns("F" & ligne)

Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet.

Une idée ?

Merci !

Bonjour,

Essayez ceci:

Sub Colorisation()
    Dim f1 As Worksheet, f2 As Worksheet
    Set f1 = Sheets("Feuil1")
    Set f2 = Sheets("Résultat")
    Dim DerLig_f1 As Long, DerLig_f2 As Long, Lig_f1 As Long
    Dim Mois As Integer
    DerLig_f1 = f1.Cells(Rows.Count, 1).End(xlUp).Row 'Dernière ligne de la base de données
    DerLig_f2 = f2.Cells(Rows.Count, 1).End(xlUp).Row 'Dernière ligne de l"Résultat"
    f2.Range("A2:A" & DerLig_f2).Interior.ColorIndex = xlNone  'Effacement des couleurs existantes
    Mois = Month(Date)
    'Enregistrement des données dans le tableau + Colorisation de la cellule associée
    For Lig_f1 = 2 To DerLig_f1
        Appli = f1.Cells(Lig_f1, "A")
        With f2.Range("A1:A" & DerLig_f2)
            Set A = .Find(Appli, lookat:=xlWhole)
            If Not A Is Nothing Then
                f1.Cells(Lig_f1, "A").Interior.Color = RGB(0, 176, 240)
                f2.Cells(A.Row, "A").Interior.Color = RGB(0, 176, 240)
                Select Case f2.Range("B" & A.Row)
                     Case "TERMINE"
                         f1.Cells(Lig_f1, Mois + 1).Interior.Color = RGB(0, 128, 0)
                     Case "EN ERREUR"
                         f1.Cells(Lig_f1, Mois + 1).Interior.Color = RGB(255, 0, 0)
                     Case "EN COURS"
                         f1.Cells(Lig_f1, Mois + 1).Interior.Color = RGB(0, 255, 255)
                     Case "A VENIR"
                         f1.Cells(Lig_f1, Mois + 1).Interior.Color = RGB(255, 255, 0)
                     Case "DEPLANIFIEE"
                         f1.Cells(Lig_f1, Mois + 1).Interior.Color = RGB(128, 128, 128)
                     Case "NON PLANIFIEE"
                         f1.Cells(Lig_f1, Mois + 1).Interior.Color = RGB(222, 184, 135)
                 End Select
            End If
        End With
    Next Lig_f1
    'libération de la mémoire
    Set A = Nothing
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Comme je vois que vous avez fait beaucoup d'erreurs de saisie dans la liste des états comparées à la liste du "Select case" dans le code, j'ai ajouté la feuille "Liste" avec la liste des états possibles, et crée les validations dans la feuille "Résultat", ainsi toute erreur de saisie est impossible.

Cdlt

Merci pour ton retour !

Au final j'ai trouvé une solution plus simple. Plutôt que de récupérer toutes les données de la BDD puis de trier sur Excel, j'ai effectué le tri lors de la récupération des données via la requête pour gagner du temps.

Rechercher des sujets similaires à "comparaison colonnes lignes entre deux feuilles"