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 : Mise en forme conditionnelle avec formule

Y'a juste un tout petit truc : maintenant avec mon import, grâce à Jacky:) je ne mets plus DOS avant le n° de fichier, je l'importe en texte, mais du coup je suis obligée de rajouter un format texte à la colonne A sinon j'ai la notation scientifique...
J'en ai profité pour rajouter aussi la largeur de colonne autofit

Un très très grand MERCI

Bises et bonne journée

C@thy
 

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Une petite observation :
la macro de Job75 (Gérard) fonctionne mieux que celle de Marcel32 (Jacky) pour les nombres négatifs car au lieu d'un chiffre dans les négatifs comme dernier caractère je récupère un @ ou > ou < ou = enfin des trucs comme ça...

Du coup celle de Gérard est adoptée... mais sans Jacky on ne serait peut-être pas allé aussi loin...

P.S. la macro de Gérard supprime aussi les 0 non significatifs des montants, et les espaces à la fin, mais ça, c'est un plus qui n'était pas obligatoire...

Donc, encore une fois, un immense Merciiii à tous les deux

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Bonjour C@thy, Jacky, le forum,

Y'a juste un tout petit truc : maintenant avec mon import, grâce à Jacky:) je ne mets plus DOS avant le n° de fichier, je l'importe en texte, mais du coup je suis obligée de rajouter un format texte à la colonne A sinon j'ai la notation scientifique...

Je ne comprends pas trop ce que tu fais avec ton fichier texte.

Si tu fais une extraction à partir d'un fichier .txt dont la 2ème colonne est toujours constituée de 17 chiffres, le format "Texte" ne va pas.

Il faut le format "00000000000000000" avec ce code :

Code:
Sub Extraction()
'-------------
'---données--
source = ThisWorkbook.Path & "\Source.txt" 'à adapter
Set F1 = Workbooks.Open(source).Sheets(1) 'ouverture du fichier source
Set F2 = Feuil2 'CodeName
F2.[A:A].NumberFormat = String(17, "0") 'le format Text "@" ne va pas
Extrais les fichiers zippés joints dans le même répertoire, par exemple le bureau.

A+
 

Pièces jointes

  • Extraction(1).zip
    23.5 KB · Affichages: 96
  • Extraction(1).zip
    23.5 KB · Affichages: 100
  • Extraction(1).zip
    23.5 KB · Affichages: 94

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Hello,

sur les vraies données, l'import se fait avec la notation scientifique, du coup le format avec 17 0 ne peut plus rien faire
du coup, voici ma macro d'import :
Code:
Dim F1 As Worksheet, F2 As Worksheet, code$
Dim Pnom%, Lnom%, Pgrade%, Lgrade%, P As Range, x$, lig&
Dim c As Range, dest As Range, dossier$, s, i%, y$, c1 As Range
Dim Fichier As Variant
Dim Ka As Workbook, Extract As Workbook
 '---données--
Set Extract = ThisWorkbook
Set F1 = Feuil1 'CodeName
Set F2 = Feuil2 'CodeName
'récupération des données du .txt
 Fichier = Application.GetOpenFilename _
 (Title:="Ouvrir", _
  filefilter:="Text (*.txt),*.txt")

 If Fichier = False Then
    MsgBox "Pas de fichier sélectionné.", , "Microsoft"
    Exit Sub
 Else
        Workbooks.OpenText Filename:=Fichier, _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
        Array(0, 1), Array(3, 2), Array(20, 1), Array(28, 1), Array(30, 1)), _
        TrailingMinusNumbers:=True
With ActiveWorkbook
   If LCase(Right(.Name, 4)) = ".txt" Then 'sécurité
     Application.DisplayAlerts = False 'si le fichier .xlsx existe déjà
     .SaveAs Left(.Name, Len(.Name) - 4), 51 '51 => format .xlsx
   End If
 End With
 Set Ka = ActiveWorkbook
 Range("A1:E" & Range("A" & Rows.Count).End(xlUp).Row).Select
      Selection.Copy
  Extract.Activate
  F1.Activate
  Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Ka.Close
 End If
End Sub

C@thy
 

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

la macro de Job75 (Gérard) fonctionne mieux que celle de Marcel32 (Jacky) pour les nombres négatifs car au lieu d'un chiffre dans les négatifs comme dernier caractère je récupère un @ ou > ou < ou = enfin des trucs comme ça...
Oui, c'est ce que j'ai expliqué dans mes deux posts précédents, où je donnais aussi le correctif (pour les lettres J à R, mettre 25 au lieu de 19). ;)



mais sans Jacky on ne serait peut-être pas allé aussi loin...
C'est gentil, mais ce n'est pas la réalité.
Job75 est mille fois plus fort que moi !



P.S. la macro de Gérard supprime aussi les 0 non significatifs des montants, et les espaces à la fin, mais ça, c'est un plus qui n'était pas obligatoire...
J'avais même cru comprendre qu'il ne fallait surtout pas changer le nombre de caractères (à part ajouter des espaces).



Donc, encore une fois, un immense Merciiii à tous les deux
De rien. ;)


@+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Re,

En fait ce que j'ai présenté au post #93 ne va pas.

Avec des nombres en 2ème colonne du fichier source, on ne peut pas récupérer les 16ème et 17ème chiffres.

Ces chiffres seront toujours zéro après extraction, car Excel conserve au maximum 15 chiffres significatifs.

Regarde le numéro de dossier de MACHIN SOPHIE.

A+
 

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Re,

En conséquence de ce qui précède, il faut "DOS" devant les numéros des dossiers dans le fichier source.

Ce fichier est copié tel quel en 1ère feuille.

Dans la 2ème feuille il est facile de supprimer "DOS" :
Code:
'-----------
    dest = Mid(dossier, 4) 'suppression de "DOS"
Fichiers (4).

A+
 

Pièces jointes

  • Couleur - Extraction(4).zip
    27.3 KB · Affichages: 100

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Y'a juste un tout petit truc : maintenant avec mon import, grâce à Jacky:) je ne mets plus DOS avant le n° de fichier, je l'importe en texte, mais du coup je suis obligée de rajouter un format texte à la colonne A sinon j'ai la notation scientifique...
Déjà c'est bizarre car ça devrait être la colonne B et non la colonne A.

En suite, si tu fais comme je t'ai expliqué les deux fois précédentes où le problème du format des données de la deuxième colonne a été abordé, alors comme je l'ai dit ces deux fois tu n'as pas besoin de formater la colonne puisque c'est lors de l'importation du fichier que tu précises que cette colonne est du texte.

Il serait peut-être bien de tout remettre à plat :
- Quel est le format exact du fichier texte à importer ? Autrement dit, qu'est-ce qui fait que tu obtiens 5 colonnes après importation dudit fichier ? Y a-t-il un séparateur particulier (genre tabulation ou espace) dans le fichier texte, ou est-ce toi qui délimite les colonnes en fonction du nombre de caractères de chacune ???
- As-tu différentes possibilités d'exportation des données vers le fichier texte ?
- As-tu un exemple de fichier texte à proposer ?
- Veux-tu que l'importation du fichier texte se fasse par macro ?

Je pose ces questions simplement parce qu'au départ tu ne voulais pas de macros je crois mais juste une MFC, et tu finis par te retrouver avec une petite usine à gaz qui fait tout par macro. ;)

Allez, courage, je suis sûr que tu n'es plus très loin du but. :cool:
 

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Bonjour C@thy, Jacky,

Déjà c'est bizarre car ça devrait être la colonne B et non la colonne A.

Même si l'on met la colonne B de la 1ère feuille au format texte ça ne change rien.

Le simple fait d'ouvrir (en VBA) le fichier source fait perdre les 16ème et 17ème chiffres des numéros des dossiers.

C'est ce que j'ai expliqué au post #97.

Bonne journée.
 

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Re,

Noter que lorsque l'on crée le fichier Source.txt on peut remplacer "DOS" par une double quote.

Dans ce fichier une simple quote apparaît alors, voir cette version (5).

A+
 

Pièces jointes

  • Couleur - Extraction(5).zip
    27.2 KB · Affichages: 78

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Merci à vous deux, mais le colis est livré à l'utilisateur qui était pressé (comme d'hab!)
vos deux macros pour la mise en jaune et l'extraction sont très bien, je vais laisser l'utilisateur choisir le résultat qu'il souhaite, avec ou sans les 0 devant, mais pour l'import j'ai pris la mienne.

Je vous remercie grandement, travail parfait, voire plus!:)

Bises

C@thy
 

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Même si l'on met la colonne B de la 1ère feuille au format texte ça ne change rien.
Le simple fait d'ouvrir (en VBA) le fichier source fait perdre les 16ème et 17ème chiffres des numéros des dossiers.
C'est ce que j'ai expliqué au post #97.
C'est faux, c'est ce que j'ai expliqué par trois fois plus haut. ;)



j'ai mis le format texte en col. A, ça semble bien coller...
Le numéro de dossier est sencé être en colonne B d'après les fichiers que tu nous as donnés.
Mais vu que tu ne réponds à aucune des questions que j'ai posées, j'en déduis que le problème est définitivement résolu, donc je suis content pour toi. :)

Bonne soirée et peut-être à une prochaine fois.
@+
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
158

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly