tris de texte entre slashs par type de données  Sujet résolu

Pour toutes vos questions à propos d'Excel ...

Messagepar haonv » 12 Août 2009, 22:34

Re ,

petite explication:
Dans ta formule, une seule chose me gêne c'est l'utilisation du &"/" dans la formule SEARCH au moment de spécifier la cellule de référence

Comme tu l'a compris ,je me sers de "/" pour trouver la dernière lettre du mot qui précède ce signe.
Je rajoute donc "/" apres le dernier mot de la liste pour pouvoir cibler ce dernier mot.
par exemple :
-"pomme/poire" devient "pomme/poire/"

Bonne soirée
haonv
Membre dévoué
 
Messages: 575
Inscription: 02 Déc 2007, 11:04
Localisation: Gard originaire de Loire
Version Excel: excel 2007 FR et 2003 FR

Messagepar maxibestof » 13 Août 2009, 10:02

Je ne savais pas qu'on pouvait "coller" des caractères en utilisant &.
C'est bon à savoir à savoir ça ! Merci !

D'autre part, depuis hier, je me suis attaqué à ta deuxième formule.

=IF($F7<1,"",INDIRECT(ADDRESS(ROW(),SMALL((($C7:$E7)=($A$7:$A$11))*COLUMN($C7:$E7),16-$F7))))

Après avoir décortiqué chacune des fonctions que tu as utilisé, je n'ai tjrs pas réussi à l'assimiler.

En effet, deux choses me posent problème :
-la plage de données pour la fonction SMALL : comment se fait-il qu'à la place de la plage de données demandée, tu rentres une formule du type ($xX:$xX)=($x$X:$x$X)*COLUMN($xX:$xX). Je cherche à comprendre ton raisonnement / ta logique et ce que cela entraîne dans la formule !
-le rang de la valeur à renvoyer pour cette même fonction. Pourquoi 16 ici ? Pourquoi ce chiffre reste-t'il identique dans toute la colonne et pourquoi est il de 17,10 ou 11 dans les colonnes vers la droite ?

Merci de ton aide !
maxibestof
Utilisateur occasionnel
 
Messages: 23
Inscription: 20 Juil 2009, 10:02
Version Excel: 2003 EN

Messagepar haonv » 13 Août 2009, 15:28

Bonjour a tous,

je vais tenter de t'apporter quelques explications:
(($C7:$E7)=($A$7:$A$11))*COLONNE($C7:$E7)

comme tu as une formule matricielle ,tu compares C7 à A7;A8;A9...A11, puis D7 à A7;A8;A11...etc, en affichant vrai ou faux à chaque comparaison .
Le résultat se présente ensuite comme cela :
(vrai;faux;faux....)*colonne(C7:E7)
qui se traduit ici:
(vrai;faux;faux....)*(3;4;5)
"C" étant la 3° colonne ,"D" la 4° et "E" la 5° .
Vraie prend la valeur numérique "1" et faux la valeur "0".Les 5 résultats des comparaisons de C7sont multipliées par 3 ,les 5 de D7 par 4 et les 5 de E7 par 5. Tu as donc : (3;0;0;...)
Tu as donc créé une plage de données faite de 15 valeurs nulles ou positives.

Ensuite pourquoi 16?
comme tu viens de le voir ,on obtient une liste de choix (3;0;0...)
En I7 , tu veux la plus petite valeur mais >0
Tu as du remarquer que le choix se fait ,en I7, entre 15 résultats( 5 possibilités en colonne C et 3 possibilités en ligne 7).
En F7 tu as le nombre de fois ou un "fruit" apparait dans la liste , ici "1".
tu as donc 14 fois "0".
15 résultats -"1"(valeur de F7)=14 °rang ce qui représente la dernière valeur nulle.Pour avoir la première non nulle ,il faut rajouter 1:
15-F7+1=16-F7
En I8 , il faut la valeur juste supérieure donc 16-F7 +1.
En L7 pourquoi "10"-G7 ?
Tu as 9 résultats(3 possibilités colonne D et 3 possibilités lignes 7)

Espérant t'avoir un peu aidé; pas facile d'expliquer...
N'hésite pas à revenir si nécessaire ...

Amicalement
haonv
Membre dévoué
 
Messages: 575
Inscription: 02 Déc 2007, 11:04
Localisation: Gard originaire de Loire
Version Excel: excel 2007 FR et 2003 FR

Messagepar maxibestof » 13 Août 2009, 17:28

Hello, déjà merci de m'avoir répondu, c'est très gentil de ta part !

En fait un de mes problèmes et que d'habitude je vois écris juste un"=" en début de fonction et pas au sein même d'une fonction !
Là ça me trouble un peu.

D'autre part, si j'ai bien compris ta logique, tu testes si dans la ligne $C7:$E7
apparait à un moment les fruits de la colonne $A$7:$A$11.

Donc premièrement, pourquoi cela te renverrait des "vrai" ou "faux" comme tu me l'as expliqué ? Sont-ils "visibles" ces "vrai" ou "faux"?

(en ayant admis que cela renvoyait des "vrai" ou "faux", j'ai suivi ton raisonnement.
Si j'ai bien compris donc, pour la colonne (C7:E7)=($A$7:$A$11)
j'aurai en résultat (vrai,faux,faux)
pour la colonne (C8:E8)=($A$7:$A$11)
j'aurai en résultat (vrai,faux,faux)
pour la colonne (C9:E9)=($A$7:$A$11)
j'aurai en résultat (vrai,vrai,vrai)
pour la colonne (C10:E10)=($A$7:$A$11)
j'aurais en résultat (faux,faux,vrai)
pour la colonne (C11:E11)=($A$7:$A$11)
j'aurais en résultat (faux,faux,faux)

Ce qui me donnerait la matrice suivante :

vrai,faux,faux
vrai,faux,faux
vrai,vrai,vrai
faux,faux,vrai
faux,faux,faux

haonv a écrit: "Vraie prend la valeur numérique "1" et faux la valeur "0".

Pourquoi prendrait-elle cette valeur numérique ? cela se fait automatiquement ? As-tu rentré une formule ?


En ayant admis que cela renvoyait Vraie prend la valeur numérique "1" et faux la valeur "0"

Cela devrait me donner la matrice suivante.

100
100
111
001
000

Et là, il faut multiplier par colonne($C7:$E7) ou (3,4,5)

comment effectues-tu cette multiplication ? N'y a t'il pas un pblm de rang entre les deux matrices ?

_____345
100__???
100__???
111__???
001__???
000__???
maxibestof
Utilisateur occasionnel
 
Messages: 23
Inscription: 20 Juil 2009, 10:02
Version Excel: 2003 EN

Messagepar haonv » 13 Août 2009, 21:44

Re ,
je vais tenter d'etre plus clair
(C7:E7)=($A$7:$A$11)
pour I7 :
tu compares C7 à A7puis à A8 puis à A9 puis à A10 puis à A11, ce qui va te donner :
(vrai;faux;faux faux;faux)
tu compares ensuite D7 de la même façon à A8 puis A9 etc..ce qui va te donner :
(faux;faux;faux;faux;faux)
tu compares ensuite E7 de la même façon à A8 puis A9 etc..ce qui va te donner :
(faux;faux;faux;faux;faux)
lorsque tu mets un signe opérateur apres ,ou avant, ces "vrais" ou "faux" ,excel lors donnent les valeurs 1 ou 0 sans aucune autre manip.(voir petit fichier joint: http://www.excel-pratique.com/~files/do ... bestof.xls)
Les 5 resultats de comparaisons de C7 (vrai;faux;faux;faux;faux)sont multipliés par "colonne C7") : (1*3;0*3;0*3;0*3;0*3) ce qui donne : (3;0;0;0;0)
les 5 résultats de comparaison de D7 (faux;faux;faux;faux;faux)sont multipliés par "colonne D7" :ce qui donne (0;0;0;0;0)
les 5 résultats de comparaison de E7 (faux;faux;faux;faux;faux)sont multipliés par "colonne E7" :ce qui donne (0;0;0;0;0)
excel regroupe ces 3 resultats pour obtenir la base (3;0;0;0;0;0;0;0;0;0;0;0;0;0;0)

connais tu les fonctions colonnes et lignes ?
colonne(C7) =3 ."C" est la troisième colonne
ligne(C7)=7 ."7"est la 7° ligne


Amicalement
haonv
Membre dévoué
 
Messages: 575
Inscription: 02 Déc 2007, 11:04
Localisation: Gard originaire de Loire
Version Excel: excel 2007 FR et 2003 FR

Messagepar maxibestof » 17 Août 2009, 17:30

Hello,

En effet avec ces explications complémentaires je suis venu à bout de cette formule et ai pu l'adapter à mon fichier !

Don c'est parfait et je t'en remercie !
Grâce à ta formule j'ai appris de nouvelles possibilités sur Excel, et ça, c'est bien !
maxibestof
Utilisateur occasionnel
 
Messages: 23
Inscription: 20 Juil 2009, 10:02
Version Excel: 2003 EN

Précédente

Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Bing [Bot], fizouFL, Google Adsense [Bot], messondewez, michellehm, Sebou et 45 invités