Macro d'isolation blocs de cellules

Bonjour à tous,

Dans le cadre d'analyse de fin de projets, j'aimerais créer une macro pouvant séparer des suivis de matières. Les matières apparaissent de la manière suivante :

image

Chaque bloc matière commence par un titre en gras et d'une couleur en fonction du type de matière (pièce métal, bois, toile,...) et de titres de taches qui ne sont pas en gras et de la même couleur que le titre. Bien sur les nom des titres ne sont jamais les mêmes.

Dans ce suivi de matière, suivant les projets, il peut y avoir plusieurs blocs de matières, jamais le même nombre de lignes ou le même nombre de matières.

Ce que j'ai essayé de faire, ayant des notions de programmation c'est de pouvoir, par exemple, pour les pièces métal, décomposer ces blocs en ajoutant en cellule B "PMET1", "PMET2", etc en prenant en compte le fait qu'il y ait un titre en gras et la couleur des céllules avant et après le titre pour reconnaitre s'il s'agit ou non de la même matière.

Sub Reconnaissance_bloc_test()

For k = 2 To 1000
Select Case Pmet
Case Cells(k - 1, 3).Font.Bold = True And Cells(k - 1, 3).Font.Color = RGB(112, 173, 71) And Cells(k, 3).Font.Color = RGB(112, 173, 71)
Cells(k, 7).Value = "PMET1"

Case Cells(k - 1, 3).Font.Color = RGB(112, 173, 71) And Cells(k, 3).Font.Bold = True And Cells(k + 1, 3).Font.Color = RGB(112, 173, 71)
Cells(k, 7).Value = "PMET2"

End Select
Next
End Sub

Merci d'avance pour votre aide

Bonjour,

pas bien compris, comme je supose les 17 autres lecteurs.
Dépose plutôt un fichier avec différents cas, ce que tu as au départ et à droite ce que tu veux obtenir.
eric

Bonsoir JMD546 et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum et notamment :

  • Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).

- Quelques fonctionnalités du forum à connaître

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Merci pour votre participation

Cordialement

Voici le fichier exemple, j'ai mis en colonne B ce que j'aimerais obtenir.

11classeur22.xlsm (15.02 Ko)

Merci

Bonjour JMD546

Avec un fichier, c'est toujours mieux

Voici une solution

19jmd546-exemple.xlsm (19.54 Ko)

A+

Merci beaucoup !

Maintenant est-ce qu'il y a une fonction similaire à celle-ci <If InStr(1, .Range("A" & Lig), "Pièce métal", vbTextCompare)> mais pour comparer la couleur de police?

Dans mon fichier Excel de projets, les matières n'ont pas des textes aussi simples et sont différents pour chaque ligne.

Bonjour,

Une proposition :

Sub TestLRD()
    Dim Cpt, DerLigne, I, LeType
    DerLigne = Range("A" & Rows.Count).End(xlUp).Row
    For I = 2 To DerLigne
        If Cells(I, 1).Font.Bold = True Then
            Cpt = Cpt + 1
            Select Case Cells(I, 1).Font.Color
                Case RGB(0, 255, 0)
                    LeType = "PMET"
                Case RGB(255, 0, 0)
                    LeType = "PBOI"
            End Select
            Cells(I, 2) = LeType & " Bloc " & Cpt
        Else
            Cells(I, 2) = LeType & " Sous Bloc " & Cpt
        End If
    Next I
End Sub

Je rejoints mes camarades sur la dépose d'un fichier !

@ bientôt

LouReeD

Merci pour vos exemples de codes.

J'aimerais maintenant, en ajoutant un nom de projet et des retards liés à chaque bloc, pouvoir identifier ces retards en les ajoutant en feuille 2 où j'ai créé un tableau avec pour chaque colonne, la catégorie de matière. Je voudrais que cette nouvelle macro puisse repérer si les matières pour ce nom de projet ont déjà été ajoutées, et sinon, créer une nouvelle ligne en insérant, pour chaque matière en retard en feuille 1 : le nom de projet, le nom du bloc matière (celui en gras) et le retard au dessus de la ligne en rouge qui calcule la moyenne des retards par catégorie de matière.

Bonsoir,

JMD546, avez-vous testé la solution de LouReed

@LouReed, c'est moi ou la solution n'est pas correcte
A gauche, celle qu'elle donnes, à droite celle que veux JMD546... normalement !?

image

PBOI Bloc3 devrait être PBOI Bloc1 (1er pour le bois)

@JMD546 autre demande autre fil SVP, en citant celui-ci

A+

Bonsoir,

en effet, le compteur n'y ait pas mais comme le premier message il n'y a en exemple que le "métal"... Est-ce vraiment nécessaire ?
Sinon vous avez raison c'est plus propre ! Autre chose sur votre prise de vue, on voit qu'il n'y a pas de "métal" mais c'est que je ne me suis pas adapter au vert "spécial", je suis partis du vert "pur" RGB(0,255,0)

Je tâcherais d'être plus précis dans mes réponses. Un jour, je vous assure, je serais aussi bon que vous, en tout cas j'essaie

@ bientôt

LouReeD

Rechercher des sujets similaires à "macro isolation blocs"