A voir également:
- Excel 2003 - Exercice complexe
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
13 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
24 mai 2009 à 14:06
24 mai 2009 à 14:06
Bonjour,
Tu as bien expliqué mais ce n'est pas très visuel...
Tu devrais déposer un classeur exemple sur cijoint.fr (en reprenant les explications : dans telle cellule je veux la valeur de telle feuille telle colonne avec tel mot clé dans telle colonne...) et coller ici le lien fourni
eric
Tu as bien expliqué mais ce n'est pas très visuel...
Tu devrais déposer un classeur exemple sur cijoint.fr (en reprenant les explications : dans telle cellule je veux la valeur de telle feuille telle colonne avec tel mot clé dans telle colonne...) et coller ici le lien fourni
eric
Bonjour eriiic,
Je ne suis pas chez moi et je n’ai pas l’exercice complet. Cependant, je l’ai "recréé" plus simplement.
http://www.cijoint.fr/cjlink.php?file=cj200905/cij109tGY8.xls
http://www.cijoint.fr/cjlink.php?file=cj200905/cijreCRLky.xls
http://www.cijoint.fr/cjlink.php?file=cj200905/cijahdEfxT.xls
Maintenant ce sera valable uniquement si c'est possible de réaliser l'opération suivante sur plusieurs feuilles d'un coup (j’ai dû le faire feuille par feuille, donc ce n’est peut-être pas la solution la plus adéquate): Délimité > Cocher Espace > Suivant > Terminer pour avoir une partie d'une information dans plusieurs colonne d'une ligne
Autrement en partant du classeur 1 - Avant transformation, il y a peut-être une solution plus simple.
Je vous remercie pour vos conseils.
PS: j’espère que mes classeurs seront clairs…
Je ne suis pas chez moi et je n’ai pas l’exercice complet. Cependant, je l’ai "recréé" plus simplement.
http://www.cijoint.fr/cjlink.php?file=cj200905/cij109tGY8.xls
http://www.cijoint.fr/cjlink.php?file=cj200905/cijreCRLky.xls
http://www.cijoint.fr/cjlink.php?file=cj200905/cijahdEfxT.xls
Maintenant ce sera valable uniquement si c'est possible de réaliser l'opération suivante sur plusieurs feuilles d'un coup (j’ai dû le faire feuille par feuille, donc ce n’est peut-être pas la solution la plus adéquate): Délimité > Cocher Espace > Suivant > Terminer pour avoir une partie d'une information dans plusieurs colonne d'une ligne
Autrement en partant du classeur 1 - Avant transformation, il y a peut-être une solution plus simple.
Je vous remercie pour vos conseils.
PS: j’espère que mes classeurs seront clairs…
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
24 mai 2009 à 18:18
24 mai 2009 à 18:18
Re,
Tu n'es pas obligé de redistribuer tes données dans différentes colonnes.
Pour retrouver le n° de ligne où se trouve client ou commandes tu vas utiliser equiv() (regarde l'aide excel)
ex :
=EQUIV("*commandes*";'[Classeur1.xls]01'!$A:$A;FAUX) te retourne bien 7.
mais comme le nom de la feuille est variable on va utiliser indirect().
Il faut refabriquer la référence '[Classeur1.xls]01'!$A:$A en une chaine de caractère, et utiliser B2 où se trouve le nom de la feuille
=> INDIRECT("'[Classeur1.xls]" & B2 & "'!$A:$A")
et la formule finale :
=EQUIV("*commandes*";INDIRECT("'[Classeur1.xls]" & B2& "'!$A:$A");FAUX)
Dans l'exemple j'ai également utiliser une cellule pour le nom du classeur Classeur1.xls dans la recherche de la ligne du n° client.
Pour récuperer les valeur il faut utiliser les fonction de traitement de chaine de caractère (stxt() gauche() droite()...) et remplacer la référence par indirect(sa_chaine_fabriquée)
ex pour le n° de client :
=CNUM(STXT(INDIRECT("'["&A2&"]" & B2& "'!$A$1");20;50))
Je te laisse terminer sur le même principe
Classeur2.xls
Pour rechercher le total en euros ça sera un peu plus compliqué. Utilise cherche(), tu auras besoins de la position de euros dans la chaine pour extraire le bon nombre de caractères de ta somme.
eric
Tu n'es pas obligé de redistribuer tes données dans différentes colonnes.
Pour retrouver le n° de ligne où se trouve client ou commandes tu vas utiliser equiv() (regarde l'aide excel)
ex :
=EQUIV("*commandes*";'[Classeur1.xls]01'!$A:$A;FAUX) te retourne bien 7.
mais comme le nom de la feuille est variable on va utiliser indirect().
Il faut refabriquer la référence '[Classeur1.xls]01'!$A:$A en une chaine de caractère, et utiliser B2 où se trouve le nom de la feuille
=> INDIRECT("'[Classeur1.xls]" & B2 & "'!$A:$A")
et la formule finale :
=EQUIV("*commandes*";INDIRECT("'[Classeur1.xls]" & B2& "'!$A:$A");FAUX)
Dans l'exemple j'ai également utiliser une cellule pour le nom du classeur Classeur1.xls dans la recherche de la ligne du n° client.
Pour récuperer les valeur il faut utiliser les fonction de traitement de chaine de caractère (stxt() gauche() droite()...) et remplacer la référence par indirect(sa_chaine_fabriquée)
ex pour le n° de client :
=CNUM(STXT(INDIRECT("'["&A2&"]" & B2& "'!$A$1");20;50))
Je te laisse terminer sur le même principe
Classeur2.xls
Pour rechercher le total en euros ça sera un peu plus compliqué. Utilise cherche(), tu auras besoins de la position de euros dans la chaine pour extraire le bon nombre de caractères de ta somme.
eric
Bonsoir eriiic,
Merci pour tout, j'essayerai prochainement, car mardi j'ai un examen et il faut bien étudier lol. De plus, l'exercice réel contient beaucoup plus d'informations à extraire, il me faudra du temps pour trouver comment prendre toutes ces informations.
Par contre je ne sais pas si je dois mettre résolu ou pas donc je vais laisser comme cela en attendant.
Bonne soirée
PS: merci l’explication sur certaines fonctions que je ne connaissais pas.
Merci pour tout, j'essayerai prochainement, car mardi j'ai un examen et il faut bien étudier lol. De plus, l'exercice réel contient beaucoup plus d'informations à extraire, il me faudra du temps pour trouver comment prendre toutes ces informations.
Par contre je ne sais pas si je dois mettre résolu ou pas donc je vais laisser comme cela en attendant.
Bonne soirée
PS: merci l’explication sur certaines fonctions que je ne connaissais pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
24 mai 2009 à 19:22
24 mai 2009 à 19:22
Pas de soucis...
Par contre j'avais oublié un truc dans la recherche du n° client, c'est d'utiliser le n° de ligne récupéré avant (ben oui, il faut bien qu'il serve).
Donc la formule en H2 est :
=CNUM(STXT(INDIRECT("'[" & A2 & "]" & B2 & "'!$A$" & G2);20;50))
à recopier vers le bas.
On a une indirection sur le nom du classeur, sur le nom de la feuille, et sur le n° de ligne
eric
Par contre j'avais oublié un truc dans la recherche du n° client, c'est d'utiliser le n° de ligne récupéré avant (ben oui, il faut bien qu'il serve).
Donc la formule en H2 est :
=CNUM(STXT(INDIRECT("'[" & A2 & "]" & B2 & "'!$A$" & G2);20;50))
à recopier vers le bas.
On a une indirection sur le nom du classeur, sur le nom de la feuille, et sur le n° de ligne
eric
Bonjour eriiic,
Désolé pour le retard, mais j'ai eu des soucis avec ma connexion Internet. J'ai essayé de comprendre tes explications, mais n'étant pas sûr d'avoir compris exactement où je devais utiliser les deux formules (dans quelle cellule), je préfère demander.
Je pense que qu'en B2 j'aurai la formule =CNUM(STXT(INDIRECT("'[" & A2 & "]" & B2 & "'!$A$" & G2);20;50)) mais où dois-je placé la formule =EQUIV("*commandes*";INDIRECT("'[Classeur1.xls]" & B2& "'!$A:$A");FAUX)?
Par contre pour le montant en euros, le nombre de caractères avant le montant est toujours le même "le client a commandé pour " soit 26 caractères espaces compris.
Au fait, le Classeur2 que tu as joins est vide, est-ce normal?
J'ai une autre question (tant que j'y suis), j'ai remarqué que dans certaines feuilles (voir feuille 4 dans le classeur d'exemple), il y avait:
2008
10 commandes passées chez nous
2007
15 commandes passées chez nous
Il y a bien sûr des informations entre celles-ci, mais ma question est: y a-t-il moyen de lui dire dans telle cellule tu prends l'information 2008 (13) et dans telle autre cellule tu prends l'information 2007 (15)?
Je sais que je dois être emmerdant car cet exercice ne doit pas être simple, mais j'aimerais arriver à le résoudre si c'est possible.
Je joins les deux classeurs d'exemples que j'ai un peu modifié.
https://www.cjoint.com/?fFj0SNjc0F
https://www.cjoint.com/?fFko3dZP5Y
Je te remercie pour tous tes conseils et te souhaite une bonne journée.
Désolé pour le retard, mais j'ai eu des soucis avec ma connexion Internet. J'ai essayé de comprendre tes explications, mais n'étant pas sûr d'avoir compris exactement où je devais utiliser les deux formules (dans quelle cellule), je préfère demander.
Je pense que qu'en B2 j'aurai la formule =CNUM(STXT(INDIRECT("'[" & A2 & "]" & B2 & "'!$A$" & G2);20;50)) mais où dois-je placé la formule =EQUIV("*commandes*";INDIRECT("'[Classeur1.xls]" & B2& "'!$A:$A");FAUX)?
Par contre pour le montant en euros, le nombre de caractères avant le montant est toujours le même "le client a commandé pour " soit 26 caractères espaces compris.
Au fait, le Classeur2 que tu as joins est vide, est-ce normal?
J'ai une autre question (tant que j'y suis), j'ai remarqué que dans certaines feuilles (voir feuille 4 dans le classeur d'exemple), il y avait:
2008
10 commandes passées chez nous
2007
15 commandes passées chez nous
Il y a bien sûr des informations entre celles-ci, mais ma question est: y a-t-il moyen de lui dire dans telle cellule tu prends l'information 2008 (13) et dans telle autre cellule tu prends l'information 2007 (15)?
Je sais que je dois être emmerdant car cet exercice ne doit pas être simple, mais j'aimerais arriver à le résoudre si c'est possible.
Je joins les deux classeurs d'exemples que j'ai un peu modifié.
https://www.cjoint.com/?fFj0SNjc0F
https://www.cjoint.com/?fFko3dZP5Y
Je te remercie pour tous tes conseils et te souhaite une bonne journée.
Bonjour eriiic,
Il y a une petite erreur de frappe: "10 commandes passées chez nous" devient "13 commandes passées chez nous".
MERCI
Il y a une petite erreur de frappe: "10 commandes passées chez nous" devient "13 commandes passées chez nous".
MERCI
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
31 mai 2009 à 16:24
31 mai 2009 à 16:24
Bonjour,
ton classeur_2 avec l'exemple pour retrouver le n° de client. J'ai décomposé la formule sur les colonnes suivantes.
2008
10 commandes passées chez nous
2007
15 commandes passées chez nous
Ca complexifie beaucoup et ça va faire des formules imbuvables. Fais toi déjà la main sur des fichiers simples.
Il faut que tu obtiennes des extractions plus 'propres'. Sans même cette histoire d'année c'est bien se compliquer la vie de récupérer les infos sur ton fichier alors que si l'extraction était correcte une formule toute simple suffirait.
eric
ton classeur_2 avec l'exemple pour retrouver le n° de client. J'ai décomposé la formule sur les colonnes suivantes.
2008
10 commandes passées chez nous
2007
15 commandes passées chez nous
Ca complexifie beaucoup et ça va faire des formules imbuvables. Fais toi déjà la main sur des fichiers simples.
Il faut que tu obtiennes des extractions plus 'propres'. Sans même cette histoire d'année c'est bien se compliquer la vie de récupérer les infos sur ton fichier alors que si l'extraction était correcte une formule toute simple suffirait.
eric
Bonjour eriiic,
Je te remercie énormément pour tes conseils.
Je crois avoir compris toute la formule (ou presque) dont j'avais besoin (B2+F2). Cependant, je te remercie pour les autres formules, elles me seront sûrement utile dans d'autres cas.
Ce qui fait un formule totale par exemple pour B2 =CNUM(GAUCHE(INDIRECT("'[Classeur_1.xls]"& A2&"'!$A$"&EQUIV("*commandes*";INDIRECT("'[Classeur_1.xls]"&A2&"'!$A:$A");FAUX));CHERCHE(" ";INDIRECT("'[Classeur_1.xls]"&A2&"'!$A$"&EQUIV("*commandes*";INDIRECT("'[Classeur_1.xls]"&A2&"'!$A:$A");FAUX)))-1))
Par contre pourquoi faut-il des ' dans la fonction INDIRECT exemple: …'[Classeur_1.xls]…?
Dommage qu'il faille que l'autre classeur (base de données) soit ouvert avec la fonction INDIRECT
Je suppose que le -1, est utilisé pour supprimer l'espace que le système prend dans la recherche pour la fonction GAUCHE (d'ailleurs, je n'ai pas très compris comment le système détermine le nombre de caractères à prendre, mais je n'ai pas encore tout analysé à fond).
Par contre pour les cas "euros" et "quand il y a plusieurs années", je ne pense pas trouver une solution "raisonnable".
Malheureusement, il n'y a pas moyen d'avoir des extractions plus propres, car elles dépendent d'un système que je ne peux changer.
J'avoue que je n'aurai pas su trouver cette longue formule moi-même, car je ne connaissais pas les fonctions utilisées. De plus, les imbriquées l'une dans l'autre est ardu.
Je vais essayer maintenant d'appliquer la formule à l'exercice réel, je te tiendrai au courant…
PS1: je pensais avoir un bon niveau en bureautique, mais quand je vois les BIG BOSS ici, je me rends compte que mon niveau est "faible".
PS2: encore un grand merci et bon appétit si tu passes à table…
Je te remercie énormément pour tes conseils.
Je crois avoir compris toute la formule (ou presque) dont j'avais besoin (B2+F2). Cependant, je te remercie pour les autres formules, elles me seront sûrement utile dans d'autres cas.
Ce qui fait un formule totale par exemple pour B2 =CNUM(GAUCHE(INDIRECT("'[Classeur_1.xls]"& A2&"'!$A$"&EQUIV("*commandes*";INDIRECT("'[Classeur_1.xls]"&A2&"'!$A:$A");FAUX));CHERCHE(" ";INDIRECT("'[Classeur_1.xls]"&A2&"'!$A$"&EQUIV("*commandes*";INDIRECT("'[Classeur_1.xls]"&A2&"'!$A:$A");FAUX)))-1))
Par contre pourquoi faut-il des ' dans la fonction INDIRECT exemple: …'[Classeur_1.xls]…?
Dommage qu'il faille que l'autre classeur (base de données) soit ouvert avec la fonction INDIRECT
Je suppose que le -1, est utilisé pour supprimer l'espace que le système prend dans la recherche pour la fonction GAUCHE (d'ailleurs, je n'ai pas très compris comment le système détermine le nombre de caractères à prendre, mais je n'ai pas encore tout analysé à fond).
Par contre pour les cas "euros" et "quand il y a plusieurs années", je ne pense pas trouver une solution "raisonnable".
Malheureusement, il n'y a pas moyen d'avoir des extractions plus propres, car elles dépendent d'un système que je ne peux changer.
J'avoue que je n'aurai pas su trouver cette longue formule moi-même, car je ne connaissais pas les fonctions utilisées. De plus, les imbriquées l'une dans l'autre est ardu.
Je vais essayer maintenant d'appliquer la formule à l'exercice réel, je te tiendrai au courant…
PS1: je pensais avoir un bon niveau en bureautique, mais quand je vois les BIG BOSS ici, je me rends compte que mon niveau est "faible".
PS2: encore un grand merci et bon appétit si tu passes à table…
Bonjour eriiic,
J'ai pu utiliser la formule pour mon exercice sauf pour les "euros" et "quand il y a plusieurs années" où il faudra que je trouve une solution…
J'ai voulu aussi expérimenter cette formule sur un jeu auquel je joue (gestions de ressources…) où il y a des rapports de combat assez complexe sur lesquels, j'aimerais faire des statistiques. Cependant, j'aurai besoin des formules "euros" et "quand il y a plusieurs années" pour arriver à un résultat optimal mais bon, on verra plus tard.
En attendant, je ne vais pas détailler tout un rapport de combat, car ils sont parfois immenses, mais, j'ai un petit souci qui pourrait être peut-être résolu facilement. En effet, Excel ne reconnaît pas la casse (majuscules ou minuscules pour Excel, c'est pareil).
Y a-t-il un moyen de lui faire tenir compte de cette casse? Pour qu'il considère "Cables" et "cables" différemment (je râle car pour "métal" et "Metal", là, il fait la différence). Pour mieux comprendre, voici une partie du rapport de combat:
Débris de métal récupérés : 2250.
Débris de cables récupérés : 1500 .
Débris de piles récupérés : 1000 .
Vos Gains :
321701 Metal
7693 Cables
5453 Piles
0 Microns
4241 Platine
0 Energie
Pour les débris, je devrai aussi utiliser une autre formule sûrement beaucoup plus compliquée, on verra plus tard. Cependant, j'ai réussi avec: "Débris de cables 1500" et la formule: =CNUM(DROITE(INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A$"&EQUIV("*cables*";INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A:$A");FAUX));CHERCHE(" ";INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A$"&EQUIV("*cables*";INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A:$A");FAUX)))-2)).
Au fait, si je laisse -1 "#VALEUR!", si je mets -2 "1500", si je mets -3 "1500", si je mets -4 "500", si je mets -5 "0", je n'ai pas très bien compris là, mais bon.
Désolé d'abuser de ton temps, mais j'aime bien évoluer dans l'utilisation d'Excel, il me semble que cela me sera bénéfique pour un emploi plus tard.
Je te remercie encore pour tous tes conseils qui m'ont permis déjà d'évoluer et de réaliser une partie de l'exercice pour le cours.
PS: certaines fautes d'orthographe (cables à la place de câbles sont intentionnelles car le rapport de combat est comme cela).
J'ai pu utiliser la formule pour mon exercice sauf pour les "euros" et "quand il y a plusieurs années" où il faudra que je trouve une solution…
J'ai voulu aussi expérimenter cette formule sur un jeu auquel je joue (gestions de ressources…) où il y a des rapports de combat assez complexe sur lesquels, j'aimerais faire des statistiques. Cependant, j'aurai besoin des formules "euros" et "quand il y a plusieurs années" pour arriver à un résultat optimal mais bon, on verra plus tard.
En attendant, je ne vais pas détailler tout un rapport de combat, car ils sont parfois immenses, mais, j'ai un petit souci qui pourrait être peut-être résolu facilement. En effet, Excel ne reconnaît pas la casse (majuscules ou minuscules pour Excel, c'est pareil).
Y a-t-il un moyen de lui faire tenir compte de cette casse? Pour qu'il considère "Cables" et "cables" différemment (je râle car pour "métal" et "Metal", là, il fait la différence). Pour mieux comprendre, voici une partie du rapport de combat:
Débris de métal récupérés : 2250.
Débris de cables récupérés : 1500 .
Débris de piles récupérés : 1000 .
Vos Gains :
321701 Metal
7693 Cables
5453 Piles
0 Microns
4241 Platine
0 Energie
Pour les débris, je devrai aussi utiliser une autre formule sûrement beaucoup plus compliquée, on verra plus tard. Cependant, j'ai réussi avec: "Débris de cables 1500" et la formule: =CNUM(DROITE(INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A$"&EQUIV("*cables*";INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A:$A");FAUX));CHERCHE(" ";INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A$"&EQUIV("*cables*";INDIRECT("'[Essais 3 - Classeur 1 - BDD.xls]"&A2&"'!$A:$A");FAUX)))-2)).
Au fait, si je laisse -1 "#VALEUR!", si je mets -2 "1500", si je mets -3 "1500", si je mets -4 "500", si je mets -5 "0", je n'ai pas très bien compris là, mais bon.
Désolé d'abuser de ton temps, mais j'aime bien évoluer dans l'utilisation d'Excel, il me semble que cela me sera bénéfique pour un emploi plus tard.
Je te remercie encore pour tous tes conseils qui m'ont permis déjà d'évoluer et de réaliser une partie de l'exercice pour le cours.
PS: certaines fautes d'orthographe (cables à la place de câbles sont intentionnelles car le rapport de combat est comme cela).
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
1 juin 2009 à 16:40
1 juin 2009 à 16:40
Bonjour,
Beaucoup trop de demandes (sans et avec jeu de mot sur ton pseudo).... ;-)
Je répond au plus simples que tu avances un peu.
Par contre pourquoi faut-il des ' parce que c'est la syntaxe, et ne demande pas pourquoi le classeur est entre [ ].
Le plus simple pour avoir la bonne syntaxe : tu te mets dans une cellule, tu tapes = et tu vas activer le classeur qui t'interesse, puis l'onglet, pour cliquer sur la cellule que tu veux, et entrée.
Par contre pour les cas "euros" et "quand il y a plusieurs années", je ne pense pas trouver une solution "raisonnable".
Oui, on atteint la limite du raisonnable pour les formules, trop compliquées si elles se mettent à plus marcher il est souvent plus simple de la reconstruire que d'essayer de l'adapter.
Je te conseille quand tu seras pret de te pencher sur vba qui simplifie ces problèmes.
Un exemple vite fait mais pas le temps de mettre trop d'explications : faire une fonction personnalisée.
=SommeTotale('[Classeur_1.xls]01'!$A$5:$A$18;2008)
(je n'ai pas mis d'indirection pour ne pas embrouiller)
[ http://www.cijoint.fr/cjlink.php?file=cj200906/cijWqOd2lI.xls Exemple] pour te mettre l'eau à la bouche si tu ne sais pas ajouter du vba.
Y a-t-il un moyen de lui faire tenir compte de cette casse? Pour qu'il considère "Cables" et "cables" différemment
Pour equiv() non.
Pour cherche() tu as trouve() qui tient compte de la casse.
Accessoirement tu peux savoir s'il un mot commence par une majuscule avec =CODE(A4)<97.
Si VRAI: majuscule, si FAUX: minuscule.
"métal" et "Metal" : fonction personnalisée
Pour mieux comprendre, voici une partie du rapport de combat:
J'ai l'impression que la structure est toujours la même, en attendant mieux tu peux tenter ça :
Coller en colonne A, menu 'données / convertir...' délimité avec espace et :
Les données qui t'interessent devraient toujours être dans la même cellule et tu te fais une synthèse avec des formules bcp plus simples dans une autre feuille.
eric.
Beaucoup trop de demandes (sans et avec jeu de mot sur ton pseudo).... ;-)
Je répond au plus simples que tu avances un peu.
Par contre pourquoi faut-il des ' parce que c'est la syntaxe, et ne demande pas pourquoi le classeur est entre [ ].
Le plus simple pour avoir la bonne syntaxe : tu te mets dans une cellule, tu tapes = et tu vas activer le classeur qui t'interesse, puis l'onglet, pour cliquer sur la cellule que tu veux, et entrée.
Par contre pour les cas "euros" et "quand il y a plusieurs années", je ne pense pas trouver une solution "raisonnable".
Oui, on atteint la limite du raisonnable pour les formules, trop compliquées si elles se mettent à plus marcher il est souvent plus simple de la reconstruire que d'essayer de l'adapter.
Je te conseille quand tu seras pret de te pencher sur vba qui simplifie ces problèmes.
Un exemple vite fait mais pas le temps de mettre trop d'explications : faire une fonction personnalisée.
Function SommeTotale(source As Range, année As Long) As Double Dim c As Range, s As String, r As Double ' si année présente For Each c In source If c.Value = "année " & année Then s = c.Offset(4, 0).Value Exit For End If Next c ' année non trouvée If s = "" Then For Each c In source If Left(c.Value, 26) = "le client a commandé pour " Then s = c.Value Exit For End If Next c End If r = Mid(s, 27, InStr(s, " euros") - 27) SommeTotale = r End Functionet la syntaxe devient :
=SommeTotale('[Classeur_1.xls]01'!$A$5:$A$18;2008)
(je n'ai pas mis d'indirection pour ne pas embrouiller)
[ http://www.cijoint.fr/cjlink.php?file=cj200906/cijWqOd2lI.xls Exemple] pour te mettre l'eau à la bouche si tu ne sais pas ajouter du vba.
Y a-t-il un moyen de lui faire tenir compte de cette casse? Pour qu'il considère "Cables" et "cables" différemment
Pour equiv() non.
Pour cherche() tu as trouve() qui tient compte de la casse.
Accessoirement tu peux savoir s'il un mot commence par une majuscule avec =CODE(A4)<97.
Si VRAI: majuscule, si FAUX: minuscule.
"métal" et "Metal" : fonction personnalisée
Pour mieux comprendre, voici une partie du rapport de combat:
J'ai l'impression que la structure est toujours la même, en attendant mieux tu peux tenter ça :
Coller en colonne A, menu 'données / convertir...' délimité avec espace et :
Les données qui t'interessent devraient toujours être dans la même cellule et tu te fais une synthèse avec des formules bcp plus simples dans une autre feuille.
eric.
Bonjour eriiic,
Je te remercie d'avoir répondu aussi rapidement, oui je sais j'en demande beaucoup... Au fait, il y a beaucoup de i dans ton prénom (rire).
Les crochets me semblaient normaux dans la syntaxe pour attirer l'attention que c'était un nom de fichier et délimiter son nom/extension. Néanmoins, j'ai fait l'essai avec le = mais il faut que les classeurs soient ouverts avant.
Pour reconstruire une formule comme tu m'as fourni, il faut vraiment bien connaître et maîtriser les fonctions et toutes leurs propriétés. Parfois, j'y arrive (longues fonctions SI imbriquées), mais là, cela me semble "ingérable", bien que je n'aie pas encore étudié la question sous tous ces aspects. De plus, les fonctions ont souvent plusieurs utilisations.
Exemple, au cours j'avais appris à utiliser la RECHERCHE VERTICALE pour une utilisation bien précise (recherche d'une donnée par rapport à un numéro client dans une base de données) et au stage, quelqu'un m'a montré une autre utilisation à laquelle je n'aurai pas pensé (comparaison de deux colonnes similaires entre deux bases de données).
J'aimerais sincèrement apprendre le VBA, car je me rends compte que dans certains cas, nous devons passer par là. D'ailleurs, j'aimerais aussi apprendre la programmation des sites Internet pour des projets futurs (création d'un site avec des leçons, des test…; par exemple, un test sur les verbes irréguliers en anglais, avec une vérification et une correction automatique…). Au fait, sais-tu si le VBA peut m'être utile pour un site Internet? Si tu connais des sites Internet intéressants sur la programmation, je suis tout ouïe.
Pour ta macro, je l'essayerai prochainement. Malheureusement, j'ai encore des examens à étudier, notamment, une partie en anglais mercredi (vocabulaire et grammaire). Pour l'exercice, j'ai encore du temps pour le terminer.
Pour la casse, j'essayerai avec les fonctions que tu m'as indiquées. Pour la structure, malheureusement, elle est toujours la même. J'avais pensé à la fonction Données/Convertir…, mais le problème est que nous ne pouvons l'utiliser sur une feuille à la fois et pas sur un groupe de feuilles (autrement j'aurai déjà résolu, une grosse partie des problèmes, sauf le fait que des mêmes informations ne soient pas toujours sur la même ligne; ce qui est résolu en partie avec ta formule sauf quand il y a plusieurs fois le même terme).
Si tu as une solution pour utiliser la fonction Données/Convertir… sur plusieurs feuilles cela m'arrangerait énormément. Je devrai néanmoins utiliser ta formule, car les mêmes informations ne seront pas toujours sur la même ligne (je sais c'est très embêtant) et puis trouver une solution pour utiliser ta formule quand il y a plusieurs termes les mêmes; à suivre donc…
Ceci dit, je pense que tu m'as déjà énormément aidé et par la même occasion, appris (tu dois être formateur comme m@rina (ce n'est pas possible autrement (rire))). Néanmoins, avec les projets que j'ai, je devrai certainement encore vous ennuyer plusieurs fois, avant d'être capable de réaliser tout ce que souhaiterait.
Je te remercie mille fois pour ton partage d'expérience et ta générosité. Au plaisir de te lire…
PS: tout d'un coup j'ai un mal de tête (rire), le temps passé sur l'ordinateur doit être une des conséquences (rire).
Je te remercie d'avoir répondu aussi rapidement, oui je sais j'en demande beaucoup... Au fait, il y a beaucoup de i dans ton prénom (rire).
Les crochets me semblaient normaux dans la syntaxe pour attirer l'attention que c'était un nom de fichier et délimiter son nom/extension. Néanmoins, j'ai fait l'essai avec le = mais il faut que les classeurs soient ouverts avant.
Pour reconstruire une formule comme tu m'as fourni, il faut vraiment bien connaître et maîtriser les fonctions et toutes leurs propriétés. Parfois, j'y arrive (longues fonctions SI imbriquées), mais là, cela me semble "ingérable", bien que je n'aie pas encore étudié la question sous tous ces aspects. De plus, les fonctions ont souvent plusieurs utilisations.
Exemple, au cours j'avais appris à utiliser la RECHERCHE VERTICALE pour une utilisation bien précise (recherche d'une donnée par rapport à un numéro client dans une base de données) et au stage, quelqu'un m'a montré une autre utilisation à laquelle je n'aurai pas pensé (comparaison de deux colonnes similaires entre deux bases de données).
J'aimerais sincèrement apprendre le VBA, car je me rends compte que dans certains cas, nous devons passer par là. D'ailleurs, j'aimerais aussi apprendre la programmation des sites Internet pour des projets futurs (création d'un site avec des leçons, des test…; par exemple, un test sur les verbes irréguliers en anglais, avec une vérification et une correction automatique…). Au fait, sais-tu si le VBA peut m'être utile pour un site Internet? Si tu connais des sites Internet intéressants sur la programmation, je suis tout ouïe.
Pour ta macro, je l'essayerai prochainement. Malheureusement, j'ai encore des examens à étudier, notamment, une partie en anglais mercredi (vocabulaire et grammaire). Pour l'exercice, j'ai encore du temps pour le terminer.
Pour la casse, j'essayerai avec les fonctions que tu m'as indiquées. Pour la structure, malheureusement, elle est toujours la même. J'avais pensé à la fonction Données/Convertir…, mais le problème est que nous ne pouvons l'utiliser sur une feuille à la fois et pas sur un groupe de feuilles (autrement j'aurai déjà résolu, une grosse partie des problèmes, sauf le fait que des mêmes informations ne soient pas toujours sur la même ligne; ce qui est résolu en partie avec ta formule sauf quand il y a plusieurs fois le même terme).
Si tu as une solution pour utiliser la fonction Données/Convertir… sur plusieurs feuilles cela m'arrangerait énormément. Je devrai néanmoins utiliser ta formule, car les mêmes informations ne seront pas toujours sur la même ligne (je sais c'est très embêtant) et puis trouver une solution pour utiliser ta formule quand il y a plusieurs termes les mêmes; à suivre donc…
Ceci dit, je pense que tu m'as déjà énormément aidé et par la même occasion, appris (tu dois être formateur comme m@rina (ce n'est pas possible autrement (rire))). Néanmoins, avec les projets que j'ai, je devrai certainement encore vous ennuyer plusieurs fois, avant d'être capable de réaliser tout ce que souhaiterait.
Je te remercie mille fois pour ton partage d'expérience et ta générosité. Au plaisir de te lire…
PS: tout d'un coup j'ai un mal de tête (rire), le temps passé sur l'ordinateur doit être une des conséquences (rire).