Mise en forme conditionnelle avec formule

C@thy

XLDnaute Barbatruc
Bonjour le fofo,

j'ai réussi à faire une mfc qui me repère les lignes dont la colonne E contient plusieurs fois une chaine de caractères (nommée chaine) dans la même cellule. Je colore en jaune la colonne B, jusque là c'est parfait... (exemple joint)

mais, C@thy étant toujours C@thy (on ne change pas les rayures du zèbre...:rolleyes:), il m'en faut encore un peu plus:eek:,
à savoir que j'aimerais mettre aussi en jaune les autres valeurs de la colonne B qui sont égales à la valeur mise en jaune quelle que soit la valeur de la colonne A... (donc tous les codes identiques en B à celui peint en jaune)...

Est-ce possible???

Question subsidiaire, liée :

il va me falloir refaire cette opération pour plusieurs chaines de caractères différentes, ne vaut-il pas mieux écrire une ch'tite macro qui demanderait la chaîne à chaque fois???*

Un très grand Merci pour votre aide.

Bises​
 

Pièces jointes

  • mfc test.xlsx
    9.9 KB · Affichages: 128
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

En fait, mettre la mfc par macro n'est pas une bonne solution, mais la couleur jaune par macro... peut-être...:confused:

la couleur jaune sert juste à repérer les lignes, ensuite je dois faire une extraction (fichier joint)

(je viens d'avoir ces infos par l'utilisateur qui me les distribue au compte-gouttes...)

Biz

C@thy
 

Pièces jointes

  • mfc test(3).xlsx
    14.6 KB · Affichages: 45
  • mfc test(3).xlsx
    14.6 KB · Affichages: 50
  • mfc test(3).xlsx
    14.6 KB · Affichages: 57

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

En fait c'est pas tout à fait ça (c'est encore pire!!) :

il y a le code suivi de 1 ou 2 ou + puis un autre code ou un libellé, il faut récupérer chaque occurence...

bref, c'est un truc de malaaaaade!:mad:

C@thy
 

Pièces jointes

  • mfc test(3).xlsx
    14.7 KB · Affichages: 47
  • mfc test(3).xlsx
    14.7 KB · Affichages: 51
  • mfc test(3).xlsx
    14.7 KB · Affichages: 53

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Merci Gérard de t'intéresser à mon problème.

J'ai peur que ce soit un peu compliqué à faire...:(

voilà, en gros, il y a des n° de dossiers en col. B. lorsque dans la col E on retrouve plusieurs fois la chaine de caractères recherchée (a priori il n'y en aurait qu'un : 200604 ouf!...) on met toutes les lignes (la col B seulement) ayant le même code dossier que celui de la ligne qui a plusieurs fois la chaine de caractères 200604 en jaune...

Ensuite...
sur la feuille 2 on crée une ligne avec ce code dossier.
lorsque pour ce code dossier la col D contient 5 c'est la ligne en-tête, on récupère alors le nom le prénom et le grade (ces éléments sont toujours à la même position car il y a des espaces entre chaque pour arriver à la même position). On copie sur la même ligne que le n° de dossier en feuille 2.
Puis, dans les autres articles ayant le même code on trouve ce code 200604 suivi de 1, 2, 3 ou 4, on a donc de 2 à 4 éléments à récupérer. ex. 2006041 on récupère ce qui suit ce code dans une colonne, 2006042 on récupère ce qui suit ce code dans une colonne à la suite etc... jusqu'à 4 si on a 4 fois le code...

oili oilà...

j'espère avoir été claire, ce n'est pas facile à comprendre, alors à expliquer...

Bisettes

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Bonjour C@thy, Marcel, le forum,

Pour qu'un problème puisse être résolu il lui faut être logique et cohérent.

Or quand tu écris :

- dans la ligne qui porte le même code dossier (col B) et le code 5 en col D le nom, le prénom et le grade
ex.: TOTO ANNELAURE INGENIEUR IND. MINES

quelle est la logique qui peut permettre de trouver ces textes en E2 ???

Edit : plus précisément pourquoi E2 et pourquoi pas E3 E4 E5 ou E6 puisque B3 B4 B5 et B6 sont colorées ?

Bonne journée.
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

En fait, je dispose d'un fichier .txt, je réfléchis (si si :)) pour voir si je peux partir directement de ce fichier sans avoir à l'ouvrir via excel et le convertir car le code dossier (en B) pose un problème à l'import :
il met en format scientifique et on perd la précision des 2 derniers chiffres, du coup avant l'import on est obligé de bidouiller le .txt et de rajouter DOS juste avant le n° de dossier, ce qui oblige l'utilisateur à des manips...

Je ne peux pas poster le .txt (confidentialité oblige) car les noms prénoms et adresses sont vrais.

C@thy
 

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Je peux même m'arranger pour mettre des colonnes supplémentaires lors de l'import afin que le nom prénom soit dans une colonne puis 1 col avec un caractère dont on ne se sert pas puis 1 colonne avec le grade...

C@thy
 

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Re C@thy,

Ci-joint ton dernier fichier avec cette macro :

Code:
Sub Couleur_Extraction()
Dim F1 As Worksheet, F2 As Worksheet, code$
Dim Pnom%, Cgrade%, Lgrade%, P As Range, x$, lig&
Dim c As Range, dest As Range, dossier$, s, i%, y$, c1 As Range
'---données--
Set F1 = Feuil1 'CodeName
Set F2 = Feuil2 'CodeName
code = F1.[I1] 'à adapter
Pnom = 241 'position du nom
Cgrade = 2 'code devant le grade
Lgrade = 60 'longueur du grade
'---RAZ---
Application.ScreenUpdating = False
F1.[B:B].Interior.ColorIndex = xlNone
F2.Range("2:" & F2.Rows.Count).ClearContents
If code = "" Then Exit Sub
'---analyse---
Set P = F1.Range("B1", F1.Range("B" & F1.Rows.Count).End(xlUp))
x = "*" & code & "*" & code & "*"
lig = 1
For Each c In P
  If c(1, 4) Like x Then 'en colonne E
    lig = lig + 1
    Set dest = F2.Cells(lig, 1)
    dossier = c
    dest = dossier
    s = Split(c(1, 4), code)
    For i = 1 To UBound(s)
      y = Mid(s(i), 2)
      If InStr(y, ",") Then 'longueur définie par la virgule
        y = Left(y, InStr(y, ",") + 2)
      ElseIf InStr(y, "  ") Then 'longueur définie par 2 espaces
        y = Left(y, InStr(y, "  ") - 1)
      End If
      dest(, 3 + i) = y
    Next
    For Each c1 In P
      If c1 = dossier Then
        c1.Interior.ColorIndex = 6 'couleur jaune
        If c1(1, 3) = 5 Then 'en colonne D
          y = Mid(c1(1, 4), Pnom)
          dest(, 2) = Application.Trim(Left(y, InStr(y, Cgrade) - 1))
          dest(, 3) = Application.Trim(Mid(y, InStr(y, Cgrade) + 1, Lgrade))
        End If
      End If
    Next
  End If
Next
F2.Columns.AutoFit 'ajustement largeurs colonnes
End Sub
Elle colore la colonne B de la 1ère feuille et crée le tableau dans la seconde.

A+
 

Pièces jointes

  • Couleur - Extraction(1).xlsm
    29.1 KB · Affichages: 44

TooFatBoy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

En fait, je dispose d'un fichier .txt, je réfléchis (si si :)) pour voir si je peux partir directement de ce fichier sans avoir à l'ouvrir via excel et le convertir car le code dossier (en B) pose un problème à l'import :
il met en format scientifique et on perd la précision des 2 derniers chiffres, du coup avant l'import on est obligé de bidouiller le .txt et de rajouter DOS juste avant le n° de dossier, ce qui oblige l'utilisateur à des manips...
Je ne sais plus si c'était possible sous Excel 2003, mais sous 2013 tu peux forcer le type de données de chaque colonne lors de l'importation d'un fichier.

Par exemple, dans ton cas tu dis que chaque colonne est au format texte et ça te permettra peut-être de supprimer cette étape de bidouillage du fichier .txt avant son importation dans Excel ???
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

oui, j'ain coché texte j'ai même formaté la colonne en texte avant l'import mais je récupère quand même la notation scientifique.

Pour job75 (Gérard) : j'avais bidouillé les noms du coup je n'ai pas fait attention à leur longueur
le nom a 20 car le prénom 15 lorsque je mets les vraies données ça coince, je regarde pourquoi.

C@thy
 

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

OK c'est presque ça... on approche
dans les colonnes D E F je dois aussi, récupérer le code (il faut donc toute la chaine de caractères, code compris... ce que je ne savais pas au début... c'est l'utilisateur qui l'a dit....)

J'ai essayé de modifier le code mais je n'ai pas trouvé... si tu peux me dire où c'est...

Merci

C@thy
 

Discussions similaires

Réponses
12
Affichages
158

Statistiques des forums

Discussions
311 721
Messages
2 081 928
Membres
101 842
dernier inscrit
seb0390