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 :
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 SubMerci 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.
Merci
Bonjour JMD546
Avec un fichier, c'est toujours mieux
Voici une solution
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 SubJe 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 !?
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