Extraction des données en fonction de la couleur des cellules

Bonjour à tous !

Je travaille sur un fichier excel permettant de faire le point sur le nombre d'interventions (Maintenance Industrielle) chez un Client.

Ce fichier est sous forme de reporting, c'est-à-dire qu'il y a un onglet pour chaque mois et différents onglets de synthèse.

Pour poser le contexte : en amont de ce fichier, j'avais déjà sélectionné plusieurs postes critique chez le client. (Ses postes critiques apparaissent donc en rouge quand la personne rentre l'un des 30 postes critiques dans la colonne C du tableau).

capture

Une 2ème mise en forme ce fait à l'aide d'une MFC et VBA : cette mise en forme permet de mettre en orange tous les postes redondants à l'aide d'une MFC doublon. La VBA permet d'appliquer la MFC, à tous les onglets, mais surtout de prendre en compte toutes les colonnes C de tous les onglets. (Par exemple : il peut y avoir un doublon au mois de janvier et décembre, car le matériel sera passé 2 fois en atelier en une année).

capture2 capture3

Bref, je suis maintenant bloqué ...

Le but recherché maintenant serait de trouver par VBA, une solution afin de récupérer le texte des cellules de couleurs orange. Et de compter leurs occurrences dans les différents mois. (cela me donnera un visuel sur les postes redondants et le nombre de fois qu'ils sont passés en atelier).

J'espère avoir été le plus clair possible...

Etant donné que les données sont confidentielles, je fais un fichier excel pour se rapprocher de l'original. Je vous le fait joindre dès que possible.

En vous remerciant par avance.

Bonne journée à tous !

Bonjour GaetanB,

Un petit bout de code à adapter, te permettant de récupérer déjà les cellules colorées. Il suffit ensuite d'ajouter ce que tu souhaite avoir :

Sub countColor()
    colorCount = 0
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        Range("A" & i).Select
        If Selection.Interior.Color = 49407 Then
            colorCount = colorCount + 1
        End If
    Next i
    MsgBox (colorCount)
End Sub

Cordialement,

Je viens de tester le code... Le message suivant apparaît...

capture4

Le problème est que je ne suis pas une BAAAYYYTE en VBA, mais je mis met petit à petit.

Merci pour ton aide

Ben, je n'y arrive pas, je m'arrache les cheveux

Quelqu'un pourrait m'aider svp ?

Il faut modifier le code couleur de "Selection.Color" avec le code couleur de votre tableau.

Pour plus de faciliter, mettez en pièce jointe de votre message le fichier ou un exemple du fichier avec quelques données que l'on puisse s'adapter au mieux à votre demande.

@IronBlade

Voici le fichier exemple.

Encore merci pour ton aide

97fichier-exemple.xlsm (141.92 Ko)

J'ai adapté le code en fonction de ton fichier.

Il va regardé les cellules orange de la colonne C pour chaque mois, et te donner le nombre de cellules oranges de ces 12 onglets.

Tu peux faire un test en cliquant sur le bouton TEST de l'onglet Postes redondants :

142fichier-exemple.xlsm (143.76 Ko)

Si besoin d'autres infos, je serais disponible dès demain.

Parfait, cela me trouve bien le nombre d’occurrences (48)... Le problème maintenant, est que je voudrais que le texte présent dans les différentes cellules "orange", soit copier dans l'onglet "Postes redondant".

En même temps, je voudrais que le n° de dossier de la ligne ayant le poste "orange", soit copié également dans cet onglet.

Je ne vois pas du tout comment faire par VBA je débute

Mais bon comme on dit : Petit à petit, l'oiseau fait son nid

Bonne journée

Salut GaetanB, IronBoule,

Tu as le nombre d’occurrences, je te conseil donc de créer une variable tableau, que tu remplis de tes occurences puis que tu iras coller dans postes redondants, voici la structure à adapter à ton cas

Dim DataRange As Variant
    Dim Irow As Integer
    Dim Icol As Integer
    Dim Myvar As Variant

    DataRange = Worksheets("JANVIER").Range("D2:E" & Worksheets("Feuil1").Range("E65536").End(xlUp).Row).Value

    For Irow = 1 To 2

        For Icol = 1 To 5

            Myvar = DataRange(Irow, Icol)

            Myvar = 'ACTION ICI

            DataRange(Irow, Icol) = Myvar

        Next Icol

    Next Irow

    Worksheets("Postes redondants").Range("D2:E" & Worksheets("Feuil1").Range("E65536").End(xlUp).Row).Value = DataRange

Si une seul colonne, tu peux supprimer Icol !

Bonne chance !

Baboutz

EDIT : ERRATUM, j'avais pas bien saisie ta demande, je fais des tests et reviens vers toi

Bonjour Baboutz,

Merci pour ta réponse, le problème est que la macro doit s'appliquer à la colonne M des 12 premiers onglets.

Et je ne vois pas comment je peux utiliser la macro de IronBoule avec la tienne... Sachant que la macro ne m'affiche qu'un message, avec le nombre d’occurrence des postes technique, il y a donc peut-être des doublons...

Et je m'excuse d'avance mais je ne suis vraiment pas très bon en VBA.

Bonne journée

Bon finalement, j'ai changé de tactique, je ne maîtrise pas encore assez bien les variables tableaux.

Est-ce que ça t'irai ? J'ai repris la base d'@IronBoule

A+,

Baboutz

Oups erreur, j'ai posté deux messages et je n'arrive pas à le supprimer... Décidément aujourd'hui !

@Baboutz

Pas de problème

Parfait, j'ai la liste des occurrences ! Mais encore des petits problèmes ...

- N'y a t'il pas un moyen pour rendre l'actualisation des données automatique ? (En supprimant le bouton actualiser)

- Est-il possible d'ajouter le N° de dossier et le mois correspondant au poste redondant (orange) ?

- Est-il possible également d'avoir le nombre d’occurrence d'un poste technique pour supprimer les doublons ?

En gros, la VBA exporte dans l'onglet "Postes redondant" ses infos :

POSTE REDONDANT / N° DE DOSSIER (plusieurs possible) / LE NBR DE FOIS QUE LE POSTE TECHNIQUE APPARAÎT DANS L’ANNÉE

Un grand merci pour ton aide, j'essai de comprendre le code que tu as réaliser

Bonsoir,

Exemple pour extraire des cellules de couleur avec le filtre élaboré.

Boisgontier

Bonjour Boisgontierjacques,

Merci pour ton aide ! J'ai regardé mais je pense que je vais essayer autre chose....

Je pense faire plus simple, je voudrais que le code VBA puisse extraire la ligne entière par rapport à la couleur orange du poste technique ou non.

Je fais des recherches et je vous tiens informé

Si quelqu'un à une solution je suis preneur

Merci par avance et bonne journée

Bonjour GaetanB,

En cliquant sur le bouton, le nombre de postes redondants est inscrit dans un MsgBox et les lignes de ces dernières sont ajoutées à l'onglet des Postes Redondants.

Salut @IronBoule,

Parfait la macro fonctionne, par contre, je n'arrive pas à extraire les données dans la cellule "A2" pour pouvoir nommer les colonnes.

Il y a un décalage des données à partir de la ligne 37 (voir screenshot en PJ)

capture5

Comment je peux remédier au problème ?

Un très grand merci pour ton aide, tu me sauve la vie !

@+ bonne journée

Salut à tous,

Je faisais un fichier de proposition pendant qu'@IronBoule post.

Je le joint tout de même. Comme tu le voulais, il s'actualise automatiquement, à chaque ouverture du fichier.

On pourrait même faire en sorte que le fichier envoie un mail des redondance à X

Erreur encore

Voici le bon fichier :

@Baboutz

Problème en ouvrant ton fichier

capture6

Je cherche pour voir si je trouve l'erreur.

En tout cas, un grand merci à vous tous !

Rechercher des sujets similaires à "extraction donnees fonction couleur"