Formatage de plusieurs cellules si une contient un texte

0

Bonjour à tous,

Après une grande recherche et toujours en galère, je viens demander aux dieux d'excel...

Voilà mon soucis, je prends l'exemple pour une ligne L12:AEC12, dans celle-ci j'ai une échéance matérialisée par une croix "X" qui varie en fonction de la dernière échéance rentrée en F12 et fonction des heures actuelles en V3. Jusque là pas de soucis.

Le problème que j'ai, c'est que je souhaiterais colorer 10 cases vide après cette croix pour matérialiser une tolérance qui se trouve dans la case H12 quelque soit la position de la croix vu qu'elle va bouger...

Le mieux serait une formules que je puisse reproduire sur toutes les lignes car j'en ai 55 en tout ^^.

Merci pour votre aide.

https://uploadnow.io/f/QQ4kq5S

Posté le 18 juillet 2023, 11:48
par Laclauz
Répondre
1

Bonjour Laclauz,

----------------------------------------------------------------------------------------------------------------

edit du 19/07 : j'ai supprimé le fichier joint, car j'ai fait une erreur dans le calcul
de ma constante K ; le fichier corrigé est dans mon post du 18/07 à 23:43.

----------------------------------------------------------------------------------------------------------------

j'ai ajouté la colonne K ; en K11, il y a "K", mais ce n'est pas car c'est en colonne K ;
c'est car le 38 que tu vois en K12 est une Constante (phonétiquement, K est pareil
que C, et K est plus parlant que C)
.

formule en K12 : =M11-(D12+ARRONDI(M11-D12;-2)) ➯ 38

cette constante sert pour simplifier ton ancienne formule de L11, et ma nouvelle
formule
simplifiée est maintenant en M12 :

=SI(MOD(M11-$K12;100)=0;"X";"")

j'ai déjà étendu cette formule vers la droite, jusqu'en AED12 (eh oui, car maintenant,
la dernière colonne est AED au lieu de AEC)
.

je te laisse vérifier que le résultat est identique : il y a un "X" pour 4438 ; 4538 ;
4638 ; 4738 ; 4838 ; 4938 ; 5038 ; 5138.

les 10 cellules vides à droite de la case contenant un "X" sont en vert clair grâce
à cette règle de MFC (qui utilise aussi la constante de K12) :

=ET(MOD(M11-$K12;100)>=1;MOD(M11-$K12;100)<=10)

rappel : MFC = Mise en Forme Conditionnelle ; c'est sur l'onglet Accueil,
groupe Styles.

rhodo

rhodo Posté le 18 juillet 2023, 14:04
par rhodo
0

Bonjour Rhodo!

Merci pour cette réponse super rapide. Alors le rendu c'est exactement ce que je cherche. Par contre je ne comprends pas vraiment l’intérêt de la constante K.

De plus si je change la date de réalisation de ma visite, par exemple la prochaine échéance (la croix) est à 4438h, si je rentre donc cette réalisation en D12, la prochaine devrait être à 4538 (100h plus tard). Mais là il me l'a met à 4498 et donc me fausse mon pas de maintenance. De même si je change les heures actuelles en V3 le pas passe à une échéance différente encore.

Posté le 18 juillet 2023, 14:42
par Laclauz
0

Ah ! J'ai trouvé quelque chose grâce à ta formule.

En mettant ça:

ET(MOD(M11-($C12-1);100)>=1;MOD(M11-($C12-1);100)<=10)

je retombe bien sur mes pattes ! A tester maintenant sur mes 55 lignes de tâches de maintenance. En tout cas merci !


Posté le 18 juillet 2023, 15:21
par Laclauz
  • C'est un échec >< Pour la suivante, le pas de maintenance est de 500h avec une tolérance de 50h. Avec ma formule ça fonction à moitié car il me répète une zone de 50H oui mais toutes les 50H... j'avoue que je ne comprends pas trop la "logique" de la formule est du coup je patauge – Laclauz 18 juillet 2023, 15:38
0

Bonsoir Laclauz,

j'ai dû m'absenter très longtemps, d'où le gros retard de ma réponse.

-------------------------------------------------------------------------------------------------------------------

tu as écrit : « Alors le rendu c'est exactement ce que je cherche. » ; parfait !  :)

-------------------------------------------------------------------------------------------------------------------

je suis désolé, car en regardant de nouveau le fichier, je me suis aperçu que
je me suis trompé dans mon calcul de la constante K ! j'avais mis en K12 :

=M11-(D12+ARRONDI(M11-D12;-2)) ➯ 38

mais je me suis bêtement "mélangé les pinceaux" : je ne devais pas ôter de M11
la dernière partie ! la nouvelle formule corrigée de K12 est donc plus simple :

=D12+ARRONDI(M11-D12;-2) ➯ 4398

-------------------------------------------------------------------------------------------------------------------

voici le nouveau fichier (en remplacement du précédent) :

https://www.cjoint.com/c/MGst4D2S3D0

-------------------------------------------------------------------------------------------------------------------

avec l'ancienne formule erronée, et avec 4198 en D12, ça mettait "X" pour :
4438 ; 4538 ; 4638 ; 4738 ; 4838 ; 4938 ; 5038 ; 5138.  :(

avec la nouvelle formule correcte, et avec 4198 en D12, ça met "X" pour :
4498 ; 4598 ; 4698 ; 4798 ; 4898 ; 4998 ; 5098 ; 5198.  :)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

donc maintenant, c'est bien comme dans ton fichier initial, où tu avais mis
en L12 cette très longue formule :

=SI(L11=$D$12+100;"X";SI(L11=$D$12+200;"X";SI(L11=$D$12+300;"X";SI(L11=$D$12+
400;"X";SI(L11=$D$12+500;"X";SI(L11=$D$12+600;"X";SI(L11=$D$12+700;"X";SI(L11=
$D$12+800;"X";SI(L11=$D$12+900;"X";SI(L11=$D$12+1000;"X";SI(L11=$D$12+1100;
"X";SI(L11=$D$12+1200;"X";SI(L11=$D$12+1300;"X";SI(L11=$D$12+1400;"X";SI(L11=
$D$12+1500;"X";"")))))))))))))))

ma formule de M12 est à la fois bien plus simple et bien plus courte :

=SI(MOD(M11-$K12;100)=0;"X";"")

mais pour pouvoir faire ça, c'est obligé de mettre la constante K.

-------------------------------------------------------------------------------------------------------------------

tu as écrit : « Par contre je ne comprends pas vraiment l’intérêt de la constante K. »

c'est car en ligne 11, le 1er nombre sur fond blanc est 4436 et pas le 4198 de D12 ;
ma constante K est donc nécessaire pour tenir compte de cette différence.

rappel de la formule de K12 : =D12+ARRONDI(M11-D12;-2)

M11 - D12 = 4436 - 4198 = 238

ARRONDI(M11-D12;-2) : ARRONDI(238;-2) = 200

D12 + cet arrondi : 4198 + 200 = 4398

donc constante K de K12 : 4398

en fait, c'est le nombre le plus à droite de 4198 (éloigné par multiples de 100) ET
en même temps, c'est le nombre le plus proche de 4436 (en lui étant inférieur).

la preuve est que si tu ajoutes 100 à 4398, ça fait 4498 ; mais 4498 > 4436.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

rappel de la formule de M12 : =SI(MOD(M11-$K12;100)=0;"X";"")
(qui est étendue à droite jusqu'en AED12)

ce que j'ai mis en évidence en gras dans la formule est la condition de la formule.

c'est grâce au 4398 de K12 que la condition de la formule de M12 (étendue à droite)
retourne 0 pour 4498 ; 4598 ; 4698 ; 4798 ; 4898 ; 4998 ; 5098 ; 5198 ; et c'est
seulement quand la condition retourne 0 que la formule retourne "X".

-------------------------------------------------------------------------------------------------------------------

si en D12 tu saisis 4438 (à la place de 4198), ça met "X" pour :
4438 ; 4538 ; 4638 ; 4738 ; 4838 ; 4938 ; 5038 ; 5138.

ça ne met pas "X" pour 5238 car le dernier nombre en AED11 est 5233,
et 5238 est supérieur à 5233 ; à contrario, ça met "X" pour 4438 car ce
nombre 4438 est présent en O11, et donc il est supérieur ou égal au
1er nombre sur fond blanc de la ligne 11 : 4436.

-------------------------------------------------------------------------------------------------------------------

je n'ai pas cherché à voir ce que ça fait si on change les heures actuelles en W3 ;
je te laisse faire des essais maintenant que j'ai corrigé ma formule de K12.

si c'est OK, tant mieux ! sinon, donne-moi des exemples pour lesquels ça ne
va pas ; exemple : en W3, je saisis 4500 (au lieu de 4445), et j'ai ça au lieu
de ça (préciser les 2 ça).

-------------------------------------------------------------------------------------------------------------------

je n'ai pas cherché à voir non plus ce que ça fait pour ton pas de maintenance
de 500 h avec une tolérance de 50 h ; idem : je te laisse faire des essais, et
s'il y a quelque chose qui ne va pas, dis-moi précisément de quoi il s'agit.

mais comme je ne suis pas du tout calé dans ton domaine, qui m'a l'air
très spécialisé, je ne suis pas sûr que je pourrai t'aider davantage !

rhodo

rhodo Posté le 18 juillet 2023, 23:43
par rhodo
0

Bonjour Rhodo,

En effet, je pense comprendre un peu mieux l'histoire de K et surtout la simplification de ma grande formule ^^

Pour avoir une idée, je te faire suivre le tableau complet, pour l'explication il sert à nous donner une estimation (normalement précise) des futures taches de maintenance à réaliser sur un hélicoptère.

J'ai commencé à faire donc les 3 premières lignes avec tes explications. Avec tes nouvelles formules, tout fonctionne bien, même en changeant les heures de réalisation (Dxxx) et heures actuelles (N3 après quelques modifs).

Mon problème est maintenant d'arriver à faire, pour la ligne 13 par exemple, 50 cases toutes les 500 (soit après une croix), donc 50h de tolérance avec une échéance toutes les 500h de vol.

https://www.cjoint.com/c/MGujPMEdWL1

Merci encore pour ton temps et tes explications.

Posté le 20 juillet 2023, 11:44
par Laclauz
1

Bonsoir Laclauz,

attention : dans ton fichier initial, en K12, il y a 4498 ; mais ce n'est pas bon
car 4498 est supérieur au 4451 de M11 !  :(

-----------------------------------------------------------------------------------------------------------------------

ton fichier en retour : https://www.cjoint.com/c/MGuxFxE3NP0

les données des colonnes C "Échéance" et H "Tolérance" ne sont pas très normalisées ;
aussi, j'ai préféré ajouter 2 colonnes K "Pas" et M "Nb cases" ➯ la constante est en L.

("Nb Cases" est le nombre de cases vertes après un "X")

-----------------------------------------------------------------------------------------------------------------------

ce qui suit est pour la ligne 12.

pour la constante, la formule précédente était : =D12+ARRONDI($M11-D12;-2)

vu tes nouvelles données, j'ai préféré changer pour une formule qui n'utilise plus
le « ARRONDI(...;-2) » que j'avais choisi avant ; maint'nant, la formule équivalente
en L12 serait : =D12+ENT((O$11-D12)/K12)*K12

car en plus, je veux retourner une chaîne vide quand D12 est vide ; et je veux aussi
retourner un slash « / » quand D12 contient « / » ➯ formule complète de L12 :

=SI(D12="";"";SI(D12="/";"/";SI(K12=0;"";D12+ENT((O$11-D12)/K12)*K12)))

le « SI(K12=0;""; » est pour éviter une éventuelle division par 0 lors de « .../K12 ».

avec ma formule de L12, ça retourne 4398 en L12 (au lieu de ton 4498) ;
c'est OK car 4398 est inférieur ou égal au 4451 de O11.  :)

j'ai déjà étiré la formule de L12 vers le bas jusqu'en L53.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

formule en O12 (déjà étirée jusqu'en AEF12) :

=SI(OU($K12=0;$L12="";$L12="/");"";SI(MOD(O$11-$L12;$K12)=0;"X";""))

puis j'ai étiré O12:AEF12 jusqu'en ligne 53.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

règle de MFC pour le 1er tableau : S'applique à : =$O$12:$AEF$53 ; Formule :

=ET(COLONNE()>(15+$M$12);MOD(O$11-$L12;$K12)>=1;MOD(O$11-$L12;$K12)<=$M12)

====================================================================

ce qui suit est pour ton 2ème tableau (lignes 56 à 62).

-----------------------------------------------------------------------------------------------------------------------

formule en L57 (déjà étirée jusqu'en L62) :

=SI(D57="";"";SI(D57="/";"/";SI(K57=0;"";D57+ENT((O$56-D57)/K57)*K57)))

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

formule en O57 (déjà étirée jusqu'en AEF62) :

=SI(OU($K57=0;$L57="";$L57="/");"";SI(MOD(O$56-$L57;$K57)=0;"X";""))

puis j'ai étiré O57:AEF57 jusqu'en ligne 62.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

règle de MFC pour le 2ème tableau : S'applique à : =$O$57:$AEF$61 ; Formule :

=ET(COLONNE()>(15+$M$57);MOD(O$56-$L57;$K57)>=1;MOD(O$56-$L57;$K57)<=$M57)

====================================================================

ce qui suit est pour ton 3ème tableau (lignes 64 à 70).

-----------------------------------------------------------------------------------------------------------------------

formule en L65 (déjà étirée jusqu'en L70) :

=SI(D65="";"";SI(D65="/";"/";SI(K65=0;"";D65+ENT((O$64-D65)/K65)*K65)))

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

formule en O65 (déjà étirée jusqu'en AEF70) :

=SI(OU($K65=0;$L65="";$L65="/");"";SI(MOD(O$64-$L65;$K65)=0;"X";""))

puis j'ai étiré O65:AEF65 jusqu'en ligne 70.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

règle de MFC pour le 3ème tableau : S'applique à : =$O$65:$AEF$69 ; Formule :

=ET(COLONNE()>(15+$M$65);MOD(O$64-$L65;$K65)>=1;MOD(O$64-$L65;$K65)<=$M65)

====================================================================

je te laisse faire toutes les vérifications (y compris les MFC).

rhodo

rhodo Posté le 20 juillet 2023, 23:18
par rhodo

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :