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:

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

De mon côté j'ai avancé sur le sujet : avec une table de correspondance j'arrive à transformer la lettre de fin de bloc de 32 car. en +1 ou -7 par ex., il reste à mettre une virgule avant les 2 derniers chiffres et mettre le + ou le - devant le chiffre...

Je suis en train de bosser sur une petite macro à part qui ferait ça et qu'on lancerait après avoir fait le traitement principal, qui fonctionne très très bien, grâce à toi!... Je pensais le faire par formules mais on a jusqu'à 8 colonnes de données...
Dans le fichier que j'ai posté, normalement ça insère la virgule au bon endroit et le +, ou le -, au début de la valeur.
Et ça laisse les zéros pour avoir toujours la même longueur de chaîne de 41 caractères suite à la mise en forme : insertion d'espaces, du signe (+ ou -) et de la virgule.


Bref, bonne chance pour la suite.
@+
 

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Ben non, Marcel en fait on l'appelle Jacky habituellement... ;)

(il me semble bien avoir déjà demandé par deux fois s'il était possible de changer de pseudo, mais je n'ai pas eu de réponse de la part de l'admin)
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Hihi vous êtes de joyeux lurons tous les deux.

Marcel ou Jacky, je ne peux pas ouvrir ton fichier, peux-tu le mettre en pièce jointe?

Donc, je reprends, Gérard tu as fait un super boulot, j'adore ton replace. Marcel ou Jacky, tu as sans doute fait du bon boulot aussi, mais je ne peux pas le vérifier.

Merci à vous deux.

C@thy
 

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Test pour joindre un fichier...
 

Pièces jointes

  • Extraction.xlsm
    30.8 KB · Affichages: 108
  • Extraction.xlsm
    30.8 KB · Affichages: 102
  • Extraction.xlsm
    30.8 KB · Affichages: 110
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Ca marche très bien, Marcel-Jacky:)
j'ai combiné avec les espaces de job75 alias Gérard (ou l'inverse!) :
dest(, 3 + i) = s(i)
dest(, 3 + i) = InsertEspace(dest(, 3 + i))

Le résultat est là...

Un grand MERCI à vous deux pour cette... usine à gaz:)... qui fonctionne.

Youpiiiiiiiii!

C'est super, merci beaucoup.

Bises à vous deux et bonne soirée

C@thy
 

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Bonjour C@thy, hello Jacky,

Je reviens sur ce fil malgré l'usine à gaz pour t'éviter de faire des bêtises :rolleyes:

Si tu utilises le code de Marcel32 il ne faut pas utiliser mon code car le sien insère des espaces.

Par ailleurs ce code est peut-être plus "limpide" :

Code:
Function Traitement(t As String)
Dim a, L As Integer, i As Integer
t = Trim(t) 'supprime les espaces à gauche et à droite
Select Case Mid(t, 7, 1)
  Case 1
    a = Array(7, 8, 9, 13, 15, 17)
    t = Nombre(t) 'traitement du nombre
  Case 2: a = Array(7, 8) 'et non pas 7, 8, 9...
  Case Else: Traitement = t: Exit Function
End Select
'---insertion d'espaces---
L = Len(t)
For i = UBound(a) To 0 Step -1
  If a(i) <= L Then t = Application.Replace(t, a(i), 0, " ") 'fonction REMPLACER
Next
Traitement = t
End Function

Function Nombre(t As String)
Dim n As Variant, c As Byte
n = Val(Right(t, 8)) / 10
c = Asc(Right(t, 1))
Select Case c
 Case 233, 123: n = Format(n, "+0.0") & 0 'é ou {
 Case 232, 125: n = Format(n, "-0.0") & 0 'è ou }
 Case 65 To 73: n = Format(n, "+0.0") & Chr(c - 16) 'A à I
 Case 74 To 82: n = Format(n, "-0.0") & Chr(c - 25) 'J à R
 Case Else: Nombre = t: Exit Function
End Select
Nombre = Left(t, Len(t) - 8) & n
End Function
Deux remarques :

- le traitement des nombres n'a lieu que pour le cas "1"

- pour le cas "2" l'insertion d'espaces n'a lieu que pour 7, 8 et non pas pour 7, 8, 9.

Fichier (3).

A+
 

Pièces jointes

  • Couleur - Extraction(3).xlsm
    30.7 KB · Affichages: 127

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Je viens de voir que j'avais fait un copier/coller et oublié de modifier une valeur dans mon bout de code...

Du coup les résultats sont erronés pour les lettres allant de J à R, pour lesquelles il fallait en fait mettre :
Valeur = "-" & Left(Valeur, 7) & Chr(Asc(Rcode) - 29)
 

TooFatBoy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Oui, c'est bien 25 et non 29 comme je l'ai écrit dans mon post précédent, mais surtout ce n'est pas 16 comme écrit dans le code. ;)

Ou, de façon plus simple pour être sûr de ne pas se tromper de A à R :
Valeur = "-" & Left(Valeur, 7) & Chr(48 + (Asc(Rcode) - 1) Mod 9)
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
158

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla