Mise en forme conditionnelle avec formule

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Re,

Merci pour le Like C@thy mais ce n'était pas sorcier :)

Bonne nuit.
 

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Coucou C@thy,

Peut-être, mais je ne l'aurais pas trouvé...
Je suis sûr que si, mais il fallait que tu prennes le temps de bien comprendre tout ce que fait la macro.

En passant un petit complément qui supprime les espaces inutiles :

Code:
dest(, 3 + i) = Application.Trim(Left(code & s(i), 32))
Application.Trim c'est SUPPRESPACE.

A+
 

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Un très grand MERCIiiiiiii à toi, j'ai juste mis 26 àla place de 32 et 20 comme longueur de grade et c'est parfait...

J'attends de voir ce qu'en diront les utilisateurs (qui comme moi en veulent toujours plus...)

Bizz

C@thy
 

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Aïe aïe aïe...
je savais bien que ça allait se compliquer...
ça plaît beaucoup à l'utilisateur, mais... il en veut encore plus (évidemment!)

du coup il va falloir changer le
dest(, 3 + i) = Application.Trim(Left(Code & s(i), 26))


qui pourtant me plaisait bien...

Afin d’améliorer la lisibilité de la cellule, il faut insérer des blancs.
  • Si le 7[SUP]ème[/SUP] caractère de la zone globale de 32 caractères vaut « 1 »
    • Il s’agit d’une zone dite « montant »
    • Insérer un blanc devant les positions : 7, 8, 9, 13, 15, 17
Pos 1 à 6Pos 7Pos 8Pos 9 à 12Pos 13 à 14Pos 15 à 16Pos 17 à 24Pos 25 à 32
20060410021850JD

  • Si le 7[SUP]ème[/SUP] caractère de la zone globale de 32 caractères vaut « 2 »
    • Il s’agit d’une zone dite « libellé »
    • Insérer un blanc devant les positions : 7, 8, 9
Pos 1 à 6Pos 7Pos 8 à 32
2006042TROP-PERCU MA: 4,20


La virgule doit être positionnée pour obtenir un montant à 2 décimales
Tableau de correspondance :
Caractère initialCaractère convertiCaractère initialCaractère converti
é+ 0 è- 0
A+ 1J- 1
B+ 2K- 2
C+ 3L- 3
D+ 4M- 4
E+ 5N- 5
F+ 6O- 6
G+ 7P- 7
H+ 8Q- 8
I+ 9R- 9
}- 0{+ 0


exemple : « 0001943B » devient « +194,32 » Le B signifie + devant et 2 à la fin...
Attention : pour la zone « 0001254P » il faut restituer « -125,47 » : le P signifie - devant et 7 à la fin!...

C'est possible par macro, ça?

sinon je rajoute des colonnes entre chaque et je le fais par formule...

Si c'est trop compliqué, j'ai remarqué un point commun : un espace devant les positions 7,8 et 9, on peut peut-être se limiter à ça et donc ne pas tester si le 7ème car. est 1 ou 2... (ça devient un peu une usine à gaz, non?:rolleyes:)

Merci et bises

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Bonjour C@thy,

Plusieurs choses pas claires, mais de toute façon j'ai horreur des usines à gaz alors je passe la main.

Tu vas bien trouver quelqu'un pour te faire ça.

A+
 

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Ils sont fous ces utilisateurs...

bon, on doit pouvoir au moin juste mettre les espaces, ou c'est trop lourd???

Bises

C@thy
 

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Re,

Pour l'insertion des espaces tu peux utiliser cette fonction VBA :

Code:
Function InsertEspace(t As String)
Dim a, i As Integer
Select Case Mid(t, 7, 1)
  Case 1: a = Array(7, 8, 9, 13, 15, 17)
  Case 2: a = Array(7, 8, 9)
  Case Else: InsertEspace = t: Exit Function
End Select
For i = Len(t) To 1 Step -1
  If IsNumeric(Application.Match(i, a, 0)) Then _
    t = Application.Replace(t, i, 0, " ") 'fonction REMPLACER
Next
InsertEspace = t
End Function
Dans la macro tu l'appelles comme ceci :

Code:
dest(, 3 + i) = InsertEspace(Left(code & s(i), 32))
Mais tout ça me paraît bizarre car dans le fichier que tu as joint il y a déjà plein d'espaces...

A+
 

Marcel32

XLDnaute Accro
Re : Mise en forme conditionnelle avec formule

A mon avis, si tu veux que quelqu'un reprenne la main, il faudra envoyer le dernier fichier en date pour être sûr de repartir sur les bonnes bases et non sur un fichie rprécédent. ;)


Deux questions, juste par curiosité :

1- Es-tu sûre qu'il n'y a pas moyen d'exporter les données un peu différemment vers le fichier .txt, histoire d'essayer de simplifier le travail dans Excel ?

2- Au début j'ai cru comprendre que la mise en couleur était juste là pour attirer l'attention de la personne travaillant sur le fichier, mais que tout le boulot était ensuite fait manuellement par cette personne. Mais maintenant que c'est la macro qui fait tout, la mise en couleur est-elle toujours utile (peut-être pour simplifier une éventuelle vérification manuelle) ?



[edit]
Bon ben c'est cool, apparemment l'ami Job75 continu tout de même à t'aider. :)
[/edit]

++
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Merci vous deux qui ne m'abandonnez pas. Ces utilisateurs sont vraiment impossibles.

Oui Gérard, c'est vrai il y a plein d'espaces partout où on ne les souhaite pas, mais comme par hasard il n'y en a pas au milieu des zones de 32 car...et c'est justement là où ils en voudraient... va comprendre, Charles!

C'est vrai j'avais bien pensé à reprendre l'import mais en fait la zone de 32 doit rester complète et non séparée en colonnes.

La macro de job fait du bon boulot... et Gérard aussi!... C'est cool..

oui la couleur jaune c'est pour les repérer du 1er coup, très utile, mais ça n'empêche pas le reste du traitement très utile aussi.

Encore Merci.

Pour le reste, c'est d'une complexité à s'arracher tous les cheveux...
22 cas possibles, rien que ça! Le fichier .txt est un peu pourri au départ.
Il contient les infos mais qu il faut décoder... sans dec!!! Cest un truc de ouf...surtout avec le système des + et des -. Faut être tordu pour inventer un truc pareil... (je savais qu'ils étaient tordus, mais à ce point je n'imaginais pas!...

Bonne soiréche...

C@thy
 

Marcel32

XLDnaute Accro
Re : Mise en forme conditionnelle avec formule

Ce n'est pas du joli code comme celui de Job75 mais, si besoin, je te propose ce fichier, basé sur le dernier fichier posté précédemment dans ce fil de discussion.
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Un très très grand merci à tous deux.

Marcel32, je ne peux pas aller chercher ton fichier, on a des firewalls partout...

Gérard, c'est supernickel chrome, comme d'hab... de la belle ouvrage...

Bises

C@thy
 

job75

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Bonjour C@thy, Marcel32,

Je reviens avec une solution plus simple et surtout plus rapide :

Code:
Function InsertEspace(t As String)
Dim a, L As Integer, i As Integer
Select Case Mid(t, 7, 1)
  Case 1: a = Array(7, 8, 9, 13, 15, 17)
  Case 2: a = Array(7, 8, 9)
  Case Else: InsertEspace = t: Exit Function
End Select
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
InsertEspace = t
End Function
Seulement les tableaux a doivent être classés par valeurs croissantes.

Bonne journée et A+
 

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Super Gérard.

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...

Merci à toi, c'est parfait!!

Bises

C@thy
 

Marcel32

XLDnaute Accro
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.
@+
 

C@thy

XLDnaute Barbatruc
Re : Mise en forme conditionnelle avec formule

Merci Gerard oui j'ai vu tu as fait un super boulot! Chapeau!

Merci

C@thy
 

Marcel32

XLDnaute Accro
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:

Discussions similaires


Haut Bas