Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1403 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[Excel]Aide sur fonctions de recherche

n°1771715
Movez LanG
....huhu....
Posté le 10-08-2008 à 17:43:10  profilanswer
 

Reprise du message précédent :
seniorpapou ? pourrais-tu, s'il te plait, désigner tes colonnes A, C et N ?
 
 
Edit : j'ai fais ainsi, mais cela ne fonctionne pas
 

Code :
  1. =SI($C2>0;SOMMEPROD(((Liste_transport_2008!$A$2:$A$916)=tableau_bord!$C2)*(GAUCHE((Liste_transport_2008!$I$2:$I$916))=GAUCHE(tableau_bord!N$1))*(Liste_transport_2008!$K$2:$K$916));"" )


 
C @ TdB = n° OM
A @ LT = n° OM
I @ Ldt = Liste moyen transport
N1 @ TdB = Avion
K @LT = Montants prestations
 
Résultat = 0
 
 :pt1cable:
 
edit2 :
 

Code :
  1. =SI($C2>0;SOMMEPROD(((Liste_transport_2008!$A$2:$A$916)=tableau_bord!$C2)*(GAUCHE((SUPPRESPACE(Liste_transport_2008!$I$2:$I$916)))=GAUCHE(tableau_bord!N$1))*(Liste_transport_2008!$K$2:$K$916));"" )


 
Non...je ne sais pas où je me trompe ?!?!
 
edit3 :
 

Code :
  1. =SI($C2>0;SOMMEPROD(((Liste_transport_2008!$A$2:$A$916)=$C2)*(GAUCHE((Liste_transport_2008!$I$2:$I$916))=GAUCHE(N$1))*(Liste_transport_2008!$K$2:$K$916));"" )


 
naaaa...
 
edit4 :

Code :
  1. =SI($C2>0;SOMMEPROD(((Liste_transport_2008!$A$2:$A$916)=$C2)*(GAUCHE((Liste_transport_2008!$I$2:$I$916);2)=GAUCHE(N$1;2))*(Liste_transport_2008!$K$2:$K$916));"" )


 
même en ayant viré la fonction SI, je n'arrive pas à faire remonter correctement l'information avec cette fonction somme.Prod.


Message édité par Movez LanG le 10-08-2008 à 18:23:51

---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
mood
Publicité
Posté le 10-08-2008 à 17:43:10  profilanswer
 

n°1771727
seniorpapo​u
Posté le 10-08-2008 à 18:30:02  profilanswer
 

Bonjour,
Pour les colonnes j'ai simplement utilisé  les colonnes de ton exemple en:
http://cjoint.com/?ihpDHyq7Iq
si tu peux, case ta formule dedans et envoie le xls sur cjoint
 
voici le même avec la formule
http://cjoint.com/?iksHCqLXdH
Cordialement


Message édité par seniorpapou le 10-08-2008 à 18:34:57
n°1771744
Movez LanG
....huhu....
Posté le 10-08-2008 à 20:47:52  profilanswer
 

Bon, j'avais apparemment bien saisi ta formule, ainsi que l'utilité de la fonction somme.prod, je l'ai appliqué correctement aussi chez moi, il doit y avoir un bug qqpart.
Je t'envoie le fichier ...


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1771746
Movez LanG
....huhu....
Posté le 10-08-2008 à 21:11:46  profilanswer
 

alors j'ignore s'il faut que je me réjouisse ou non :)
car d'un côté j'ai bien compris l'intérêt de cette fonction, je l'ai d'ailleurs correctement appliqué je pense :
 

Code :
  1. AVION
  2. =SI($A2>0;SOMMEPROD(((Liste_transport_2008!$A$2:$A$916)=tableau_bord!$C2)*(GAUCHE(Liste_transport_2008!$I$2:$I$916;2)=GAUCHE(tableau_bord!$P$1;2))*(Liste_transport_2008!$K$2:$K$916));"" )


 

Code :
  1. TRAIN
  2. =SI($A2>0;SOMMEPROD(((Liste_transport_2008!$A$2:$A$916)=tableau_bord!$C2)*(GAUCHE(Liste_transport_2008!$I$2:$I$916;2)=GAUCHE(tableau_bord!$Q$1;2))*(Liste_transport_2008!$K$2:$K$916));"" )


 

Code :
  1. VL
  2. =SI($A2>0;SOMMEPROD(((Liste_transport_2008!$A$2:$A$916)=tableau_bord!$C2)*(GAUCHE(Liste_transport_2008!$I$2:$I$916;2)=GAUCHE(tableau_bord!$R$1;2))*(Liste_transport_2008!$K$2:$K$916));"" )


 
 
d'un autre côté, je n'ai pas le même montant total qui est remonté alors que ma base n'a pas changé depuis qu'on bosse dessus...
 
sinon j'ai bien accroché par cette fonction, même si je tapais somme.prod au début lol :p
 
 
merci encore!


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1771749
seniorpapo​u
Posté le 10-08-2008 à 21:27:00  profilanswer
 

Bonsoir,
j'attends le fichier, mais en attendant, je ne comprends pas pourquoi tu prends les deux premiers caractères pour VL, en effet, si dans liste_de transport tu as Véhicule... et dans R1 tu as VL, tu ne trouveras jamais égal. J'avais simplifié en mettant GAUCHE.. sans le deuxième paramètre pour ne prendre que le premier caractère. Ce qui donne: A pour Avion et AV, T pour Train et TR, et V pour Véhicule et VL
Bonne soirée


Message édité par seniorpapou le 10-08-2008 à 21:29:13
n°1771750
Movez LanG
....huhu....
Posté le 10-08-2008 à 21:30:46  profilanswer
 

En fait, l'intitulé des colonnes du tableau en ta possession a été changé depuis et c'est Avion, Train et Véhicule de location en toute lettre.
Ce qui fonctionne si je demande à excel d'aller chercher les 2 premiers caractères :)
Ne sachant pas si ta formulation signifiait "va chercher le premier caractère de gauche", j'ai préféré cette méthode...
J'aurais pu prendre que le premier caractère d'ailleurs,   :heink:  
 
Sinon, bah ce fichier contenant des données ultra sensibles, je ne ferais pas l'envoi sur le net.
 
Par contre, il est vrai que cette méthode est plus lourde que la méthode de concaténation + recherchev, m'enfin sur 2000 lignes ça ne m'ennuie guère et ça me permet de virer la colonne utilisée pour la concaténation, ça en fera toujours une en moins à créer par le gestionnaire :)
 
Merci bien à vous,
 
PS : faut toujours que je bosse l'EQUIV et INDEX, donc si babasss pouvait détailler les colonnes utilisées dans sa formule, ça m'aiderait pas mal :D
 
 :hello:   :hello:   :hello:


Message édité par Movez LanG le 10-08-2008 à 21:40:16

---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1771751
seniorpapo​u
Posté le 10-08-2008 à 21:41:35  profilanswer
 

ok pour le fichier, c'est tout à fait normal, mais un fichier "bidon" aurait suffit. Ok pour les 2 caractères.  
J'espère que tu ne t'es pas fatigué à réécrire la formule pour chaque colonne, les $ sont placés pour que tu puisses l'étendre horizontalement et verticalement.
 
@+

n°1771753
Movez LanG
....huhu....
Posté le 10-08-2008 à 21:45:04  profilanswer
 

Questions subsidiaires ?
 
- comment organiser mes MàJ ? j'avais pensé à rompre les liaisons, supprimer l'onglet, puis rapatrié le nouveau que je nommerai à l'identique pour réactiver les liaisons ensuite...est-ce faisable ? si oui, comment ?
Si non, autre solution ?
 
- cette Bdd contenant des ordres de missions à destination de l'international, j'aurai aimé savoir s'il était envisageable d'utiliser une fonction excel ou tout autre outils externes et compatibles avec excel, pour représenter la fréquence des missions par ville...un peu comme les planisphères démographique ?  
 
Merci encore,
ML


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1771755
Movez LanG
....huhu....
Posté le 10-08-2008 à 21:49:06  profilanswer
 

Oui j'aurais pu recréer un fichier bidon, mais j'ai tellement de liaisons dans un sens et dans un autre que j'aurai Certainement pas réussi à le créer en moins de 5 minutes...au-delà, ça devient 'chiant', toute proportion gardée eu égard le temps que vous avez pris à répondre :)
 
Sinon, non je ne me suis pas fatigué à recopier les formules, simplement réfléchit deux minutes sur l'emplacement des $, puis j'ai revérifié sur ta formule :p et il m'a suffit d'étirer jusqu'en ligne 2000, et oui elle est bien utile la fonction SI du début :p
 
encore merci seniorpapou


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1771789
seniorpapo​u
Posté le 11-08-2008 à 07:19:24  profilanswer
 

Bonjour,
je n'ai rien compris à ta question sur les MAJ, je n'aurai surement pas la réponse, mais retire le RESOLU de ton sujet si tu veux être relu....
Cordialement


Message édité par seniorpapou le 11-08-2008 à 07:19:54
mood
Publicité
Posté le 11-08-2008 à 07:19:24  profilanswer
 

n°1771945
Movez LanG
....huhu....
Posté le 11-08-2008 à 14:25:57  profilanswer
 

Bonjour,
 
Tant pis pour les mises à jour, je verrais le moment venu..
Merci encore!
 
Cdlt


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1772165
Movez LanG
....huhu....
Posté le 11-08-2008 à 20:18:45  profilanswer
 

Bonsoir,
 
Pour commencer, j'ai modifié le titre du topic.
Ensuite, pour les liaisons, j'ai bien peur que cela ne soit pas possible.
Je m'explique, tu peux rompre les liaisons d'un classeur à l'autre, pour x raisons, mais apparemment pas d'un onglet à l'autre.  
 
Et dans mon cas, j'ai construit mon tableau en isolant deux onglets qui m'auraient permis de mettre à jour mes données mensuellement sans avoir à remettre les mains dans la barre de formule :)
 
Sinon, j'aurais un problème supplémentaire, qui m'a encore ruiné 1h30 de recherche après le boulot pour rien, qui je pense doit pouvoir se faire très facilement :X !!!
 
J'aimerais aller piocher dans mon onglet tableau_bord le numéro de l'ordre de mission, en colonne C, en fonction du contenu de ma colonne J. (J=I-H différence entre deux dates et qui me donne 364,5833383 un truc du genre..pour les dossiers qui m'intéressent).
 
Si t'as une idée je suis preneur, j'ai essayé pas mal de choses, dont certains te feraient sûrement sourire ^^ une fonction gauche() pour ne citer qu'elle...
Enfin, si t'as une idée, j'aimerais aller bosser en ayant ne serait-ce qu'une direction :D
 
Merci d'avance,
YC
 
 
Edit : j'essaie avec une recherchev  
 

Code :
  1. =RECHERCHEV(tableau_bord!J36;tableau_bord!C2:J2000;1)


 
mais mon critère doit pas être bon, ça renvoie n'importe quoi..
le critère étant la différence entre le début et la fin de l'année, je n'ai pas de valeur fixe...
il doit exister une solution -__-
 
 
edit 2 :
 

Code :
  1. =SI((tableau_bord!J:J=tableau_bord!$J$36);tableau_bord!C:C;"" )


 
ça revient à appliquer un filtre 'Non vide' là-dessus...


Message édité par Movez LanG le 11-08-2008 à 20:34:51

---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1772265
seniorpapo​u
Posté le 12-08-2008 à 07:18:45  profilanswer
 

Bonjour,
Lorsque tu écris ceci:
=RECHERCHEV(tableau_bord!J36;tableau_bord!C2:J2000;1)
 
que penses-tu obtenir d'après les spécifications de la fonction?
 
Bonne journée

n°1772271
seniorpapo​u
Posté le 12-08-2008 à 07:53:11  profilanswer
 

Plus je lis ta question, moins je comprends ce que tu veux. Un exemple concret serait bien venu.
 
@+

n°1772306
Movez LanG
....huhu....
Posté le 12-08-2008 à 09:54:46  profilanswer
 

"J'aimerais aller piocher dans mon onglet tableau_bord le numéro de l'ordre de mission, en colonne C, en fonction du contenu de ma colonne J. (J=I-H différence entre deux dates et qui me donne 364,5833383 un truc du genre..pour les dossiers qui m'intéressent)."
 
Pour être plus clair, j'ai deux types de dossiers :
- Ordre de mission normal
- Ordre de mission permanent (durée : 364.5j, courant du 2/01 au 31/12)
 
Mon but est d'aller piocher dans mon onglet tableau de bord le contenu de la colonne C (les numéro d'OM), selon un critère bien précis :)
à savoir les dossiers d''ordre de mission permanent, donc ceux pour lesquels le contenu de la colonne J est égal à 364,5 et uniquement ceux la...
 
J'espère avoir été un peu plus clair :o
 
Le problème qui se pose à mon avis, c'est :
1- le contenu de la colonne J est un arrondi, et devant le poser comme critère de recherche, j'ignore comment faire :x
2- ensuite, la structure de la matrice est inversée par rapport aux tableaux sur lesquels je bossais jusqu'à présent puisque j'ai mon critère qui se trouve dans une colonne 'derrière' la colonne à recopier et non plus devant.
 
 
Pour schématiser :
 
 
  A B C D E F G H I J K L M N  
1     OM1             1
2     OM2             0,6
3     OM3             364,5
4     OM4             7
5     OM5             364,5
 
Merci d'avance :)


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1772410
86vomito33
Posté le 12-08-2008 à 12:12:06  profilanswer
 

bonjour,
 
javais deja fait une macro qui fait a peu pres ce que tu as besoin et je l'ai modifie.
 
http://cjoint.com/?imml2054t0
 
est ce que cela te va? (clic sur TDB onglet Liste_transport_2008)
 
pour ton probleme de 365.5...... je suppose que le 365.5 est fixe ton en admettant que ta valeur se trouve en cells(1,1) tu peux faire
if mid(cells(1,1),1,5)=365.5 then
on garde
else
on vire
end if
 
EDIT:
 
Sub ListerNumOMDansBufferPuisCopierDansTableauDeBord()
nbl1 = Sheets("Liste_transport_2008" ).Range("A55555" ).End(xlUp).Row
 
'on copie les donnes quon va ensuite filtrer
Sheets("Liste_transport_2008" ).Select
Range(Cells(2, 1), Cells(nbl1, 4)).Select
Selection.Copy
Sheets("Buffer" ).Select
Range("A1" ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
 
'on tri les donnes par num om
nbl2 = Sheets("Buffer" ).Range("A55555" ).End(xlUp).Row
Sheets("Buffer" ).Select
Range(Cells(1, 1), Cells(nbl2, 4)).Sort Key1:=Range("B2" ), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
 
'si les num sont identiques on supprime
For i = nbl2 - 1 To 2 Step -1
If Sheets("Buffer" ).Cells(i, 1) = Sheets("Buffer" ).Cells(i + 1, 1) Then
Rows(i).Select
Selection.Delete Shift:=xlUp
End If
Next i
'a la fin il reste que les num om distinct
 
nbl3 = Sheets("Buffer" ).Range("A55555" ).End(xlUp).Row
Range(Cells(1, 1), Cells(nbl3, 1)).Select
Selection.Copy
Sheets("tableau_bord" ).Select
Cells(2, 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'avec ce mode de copie pas de probleme de lien
'par contre quand tu fais des mis a jour fo relance la macro

 
Cells(1, 1) = "Num OM"
Cells(1, 2) = "Avion"
Cells(1, 3) = "Train"
Cells(1, 4) = "Véhicule de location"
 
Sheets("Buffer" ).Select
Range("A1:AG65000" ).ClearContents
 
End Sub


Message édité par 86vomito33 le 12-08-2008 à 12:20:14
n°1772509
Movez LanG
....huhu....
Posté le 12-08-2008 à 14:43:35  profilanswer
 

Merci d'abord d'avoir pris le temps de répondre à mon post :D
 
Je t'avoue préalablement mon incompétence totale pour ce qui est du VBA...mais j'ai qd même été voir ton fichier joint. J'ai essayé de relire le code fourni, mais j'suis complètement à l'ouest!
 
Ceci étant, après avoir modifié quelque peu le niveau de sécurité d'excel sur les macros, j'ai enfin pu la lancer. Ca me parait bien compliqué pour ce que j'aimerais faire puisque j'y arrive avec une simple formule SI, que je rappelle d'ailleurs :
 

Code :
  1. =SI((tableau_bord!J:J=tableau_bord!$J$36);tableau_bord!C:C;"" )


 
Le problème est qu'il me rappatrie les 1073 lignes issues de mon tableau de bord, et n'affiche que les numéro d'ordre de mission pour lesquels la condition est remplie, les autres lignes restant vide.
Pour ce qui est de ma condition, je me dis que cet onglet OMP ne trouve son intérêt qu'à partir du moment où on créé en machine un OMP. Ainsi en début de chaque année, il faudra juste que j'actualise le critère de ma formule.
 
Pour le moment, elle pointe vers J36, dont le résultat est donc =31/21/2008 - 02/01/2008 = 364,45833333333600
 
 
Ce qui fait que j'obtiens un fichier sur lequel il faut appliquer un filtre 'NON VIDE' pour avoir les numéro d'OM les uns en dessous des autres....c'est là ou ça m'embête finalement.
 
J'aimerais qu'il applique ma formule et qu'il me mette les résultats les uns en dessous des autres. Serait-ce impossible aussi simplement ?
 
Sinon, je préfére masquer mes lignes au fur et à mesure, c'est un peu barbare mais c'est extrêmement simple :D
 
Qu'est-ce que t'en penses ?
 


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1772539
86vomito33
Posté le 12-08-2008 à 15:14:31  profilanswer
 

effectivement si tu y arrive juste avec une formule autant l'utiliser. par contre si tu doit rentrer a chaque fois cette formule et que quelqun d'autres est amene a l'utiliser je suis pas sur que ca le fasse.
 
lavantage du vba c'est que cest automatise. tu n'auras qu'a cliquer un bouton en fonction de ce que tu veux.
 
quen penses seniorpapou et babass ?
 
tu peux remettre le dernier fichier que tu utilise je my perds un peu avec toutes ces versions.
 
et pour ton probleme de non vide, si tu supprimes la colonne qui te genere les ddes de MAJ tu as tj le mm pb


Message édité par 86vomito33 le 12-08-2008 à 15:15:34
n°1772541
babasss
Posté le 12-08-2008 à 15:22:04  profilanswer
 

Si en formule c'est faisable, le VBA ne sert à rien (au pire, tu protèges les cellules).
Sinon +1 avec la dernière remarque de seniorpapou, je ne comprends plus rien au problème.


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1772556
Movez LanG
....huhu....
Posté le 12-08-2008 à 15:57:58  profilanswer
 

OK :)
Je vous fais une version consultable par le public.
 
Va falloir que je vous retourne l'ascenseur un jour ou l'autre ...
 
 
NB : un jour, peut-être ne viendra-t-il jamais, j'aurai un service à te demander...un service que tu ne pourras pas refuser ! à prononcer avec le timbre de voix de Marlon Brando xDD


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
n°1772640
seniorpapo​u
Posté le 12-08-2008 à 19:03:42  profilanswer
 

Bonsoir,
plusieurs solutions sans formule:
 
puisque tu as des filtres automatiques, tu appliques le filtre correspondant à 364,.....dans la colonne J et tu as immédiatement tous les OM.
 
Si tu veux absolument un autre onglet, tu fais un clône de tableau_bord et tu fais le filtre en colonne J
 
 
Si tu veux garder ta formule, tu surlignes ta colonne résultat et tu fais un tri en ordre croissant ou décroissant (je n'ai pas testé)
 
pour le choix entre VBA et formule, si on peut le faire avec formule, c'est bien, surtout quand on ne connaît pas le VBA, à condition de ne pas avoir à se "retapper" les formules à chaque fois. Je n'ai pas encore compris pourquoi il faut retapper les formules dans le cas présent. maintenant, étant donné tout ce que veut faire Movez LanG, je pense qu'il sera amené a faire du VBA.
 
 
Bonne soirée  

n°1772654
Movez LanG
....huhu....
Posté le 12-08-2008 à 19:58:43  profilanswer
 

Yep, j'en suis arrivé au même constat.
 
Mais je vais quand même revenir sur quelques petites choses avant :)
Pour l'instant, ce tableau évolue à merveille et exactement comme je l'attendais. Une chose me chagrine depuis le début, rien de dramatique, mais le temps de travail d'excel a été facilement x10 en passant de la méthode de concaténation à la méthode sommeprod...m'enfin
 
sinon, pour ce qui est des OMP, le but était d'obtenir un tableau de suivi, comme précédemment, à partir d'un fichier d'extraction, ici OMP_2008. Les informations présentes dans ce fichier ne le sont pas dans l'onglet tableau_bord. La solution du filtre ne s'applique donc pas.
 
Avec l'aspect OMP, j'ai rajouté un onglet (une extraction) que je ne touche pas mais que je fais remonter.
 
Là où je rejoins vomito, son fichier m'a bien plu finalement ;), j'rajouterai bien une macro qui modifierait les références de toutes mes formules. Avant d'attaquer le VBA, je ferais déjà bien de maîtriser l'option macro d'excel :)
Après, le petit plus serait un bout de VBA, basic, qui créerait un bouton MAJ qui lancerait la macro.  
 
Voilà comment je vois ça :) sinon je m'occupe du fichier modifié de suite
Merci à tous!


---------------
<3 lili - http://realkoala.labrute.fr Venez me défier !!
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Besoin d'aide pour un script[RESOLU] vba excel connaitre le nombre de colonnes
MAJ aide probléme mini calculatrice en " C " (debutant)Java lenteur ouverture fichier Excel
Problème Requête. Besoin d'aide.[VBA][Excel] Problème d'ecriture dans un nouveau document
Aide pour choix des attributs en vue de faciliter des requetesAide pour XML
[ VB6 ] Enregistrer Données ( combobox.txt, textbox.txt ) sous EXCELJava Excel nombre
Plus de sujets relatifs à : [Excel]Aide sur fonctions de recherche


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR