Fonction STXT combiné à pls autres formules

0

Bonjour à tous, 

J'ai un collègue qui m'a envoyé le fichier ci-joint : https://www.cjoint.com/c/MJwultzeyvi

Au niveau de la feuille bdd_globale, en colonne G je retrouve cette formule : 

SIERREUR(STXT(F2;TROUVE("~";SUBSTITUE(F2;"°";"~";2))+2;9)*1;STXT(F2;TROUVE("°";F2)+2;9)*1)

Je ne comprends pas pk il a décidé de remplacer le "°" de N° commande par "~" sachant que "~" n'apparait pas dans le résultat de la formule colonne G. 

Est ce que quelqu'un pourrait m'expliquer pourquoi cette formule a été combiné ainsi ? 

Merci à vous 


Posté le 22 octobre 2023, 22:20
par Younes
Répondre
0

Bonjour Younes,

voyons la ligne 8 ; tu as mal posé ta question ; ce serait plutôt : je ne
comprends pas pourquoi la formule cherche "~" via TROUVE() alors
que "~" n'apparaît pas dans le texte de F8.

regarde bien tout le texte de F8 (tu vas devoir élargir la colonne F).

note bien qu'il y a deux fois le texte «  » :

"Annulation de commande 105299001" et "Commande 105299002"

en G8 : longue formule avec TROUVE("~";SUBSTITUE(F8;"°";"~";2))+2

la formule remplace le 2ème "°" par "~" ; on a donc :

"Annulation de commande  105299001" et "Commande N~ 105299002"

la formule cherche ce "~" via TROUVE(), afin de ressortir le 2ème
au lieu du 1er , donc 105299002 au lieu de 105299001 ; en G8,
tu peux voir 105299002 (et pas 105299001).

rhodo

rhodo Posté le 23 octobre 2023, 05:10
par rhodo
0

Merci beaucoup pour tes explications. 

Ok je crois que j'ai compris, en gros il a volontairement combiné la formule ainsi pour que lorsque l'on se retrouve dans la situation de la ligne 8 (avec deux numéro de commande et deux signes °) que la formule remplace le signe du numéro de commande annulé par "~" pour que le bon numéro ressorte en colonne G 

Younes

Posté le 23 octobre 2023, 14:33
par Younes
0

@Younes

tu as écrit : « la formule remplace le signe du numéro de commande annulée
par "~" pour que le bon numéro ressorte en colonne G »

non, ce n'est pas tout à fait ça :

c'est le « ° » de la bonne commande (non annulée) qui est remplacé par « ~ »
afin de pouvoir trouver ce « ~ » puis accéder au N° de cette même commande
(non annulée), juste à droite du « ~ » ; ainsi, la formule ignore le N° de la
commande annulée, qui apparaît au début du texte, car le « ° » du N° de cette
commande annulée n'a pas changé : c'est toujours « ° » ; comme c'est « ~ »
qui est recherché par TROUVE(), ça fait bien ce qui est attendu.  :)

pourtant, j'avais bien précisé : « la formule remplace le 2ème "°" par "~" » ;
c'est fait par : SUBSTITUE(F8;"°";"~";2) = remplacer la 2ème occurrence
de « ° » par « ~ ».

regarde l'aide en ligne de la fonction SUBSTITUE(), 4ème argument.

rhodo

rhodo Posté le 23 octobre 2023, 15:14
par rhodo
0

Bonjour Younes,

Lis d'abord mon post précédent du 23 octobre à 15:14.

j'ai un peu optimisé ta formule ; formule initiale en F2 :

=SIERREUR(STXT(F2;TROUVE("~";SUBSTITUE(F2;"°";"~";2))+2;9)*1;STXT(F2;TROUVE("°";F2)+2;9)*1)

nouvelle formule en F2 :

=STXT(F2;SIERREUR(TROUVE("~";SUBSTITUE(F2;"°";"~";2));TROUVE("°";F2))+2;9)

note qu'il y a un seul « STXT() » ; je n'ai pas mis « *1 » : c'est inutile de convertir
le texte du N° en nombre vu qu'y'a pas besoin de faire de calcul dessus ; et faut
même éviter de faire cette conversion, car pour de grands nombres, ça risque
de convertir le N° Commande en nombre scientifique (notation style 1E+67) ;
ça n'afficherait plus alors le N° Commande : ni en entier, ni exact.  :(

rhodo

rhodo Posté le 26 octobre 2023, 12:04
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 :