|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 13 ![]() |
Bonjour,
Voici mon problème Je dois identifier des suites de caractères dans une cellule à partir d'une liste se trouvant dans une table pour associer dans la cellule voisine un identifiant de regroupement, donné par la table qui permettra ensuite de faire des opérations sur les lignes concernées. Je donne un exemple ce sera plus clair : exemple de table nom, --- famille abeille, --- insecte canard,--- oiseau chien,--- mammifère cochon, --- mammifère huitre, --- mollusque limacon, --- gasteropode limaçon,--- gasteropode pie, --- oiseau exemple d'occurrence rencontrée dans la colonne à traiter (colonne "source"), source, --- --- famille le canard nage, ...... les chiens aboient ...... l'huitre bavarde ...... une queue de pie ...... des essaims d'abeilles ...... escalier en limaçon ..... pattes de mouches huitre perliere danse du canard entre chien et loup 3 petits cochons bayer aux corneilles ...... Je dois retrouver dans la premiere occurence le mot "canard qui est dans la table et y associer le nom de famille "oiseau" et ainsi de suite (j'ai chque mois environ 5000 occurences à traiter et ma table sera enrichie d'un mois sur l'autre. Merci de votre aide, si possible en évitant des macro. |
|
|
00
|
|
|
#2 | |
![]() ![]() |
salut,
tu peux utiliser des fonctions Excel pour cela tres bon tutoriel complet a ce sujet http://silkyroad.developpez.com/Excel/FonctionsExcel/ avec notamment Citation:
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 13 ![]() |
... cela n'est pas aussi évident qu'il y parait !
J'ai regardé pas mal de fonctions, il faut leur donner de façon précise la chaine recherchée et non pas une table où chaque occurence serait testée. Si tu penses à une fonction précise ou une combinaisonde fonction, je suis preneur car je seche d'où mon appel P |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Inscription : juillet 2002 Messages : 108 ![]() |
Bonjour,
Je suis d'accord pour dire que ce n'est pas si simple. J'ai imaginé la solution en pièce jointe, mais avec un grand nombre de ligne et de colonne ce ne sera pas forcément efficace. Si quelqu'un a plus simple, je serais curieux de voir. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 13 ![]() |
Comme tu le pressentais les quantités à traiter sont importantes, j'ai pour chaque vacation environ 50 000 lignes (items) environ 500 noms regroupés en 25 familles...
Ta solution montre qu'il y a des pistes et que collectivement nous pouvons avancer, merci de votre aide ... P
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() ![]() Inscription : janvier 2011 Messages : 106 ![]() |
Bonsoir,
Si le sujet est toujours d'actualité ... Avec une formule matricielle, comme en pièce jointe, on peut peut-être arriver à quelque chose!? Attention au problème du temps de recalcul quand on utilise des formules matricielles sur des fichiers volumineux!! Resteront les situations où 2 noms d'animaux de familles différentes (le renard et la cigogne) seront présents dans une même cellule et ceux où des noms communs sont partiellement composés de nom d'animaux (pied-de-page <> pie) Mais bon, on ne peut pas tout gérer dans le cas présent, j'en ai peur.
__________________
. U. Milité |
|
|
10
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 13 ![]() |
Ta formule marche impeccable, le recalculest effectivement un peu long mais je n'ai pas à le faire tous les jours
Par contre n'étant pas familier des formules matricielles je n'ai pas pu sair le déroulé du calcul, si tu peux me l'expliquer pas à pas ce serait sypa ![]() petite remarque, j'ai noté que cela ne marchait que si la table commencait en ligne 1 sans ligne de titres..... Merci encore |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() ![]() Inscription : janvier 2011 Messages : 106 ![]() |
Bonsoir,
Expliquer les formules matricielles … euh je peux tenter un début, mais il vaudrait mieux trouver un bon tuto! Dans le fichier que j'ai déposé, essaye, en C2 et recopie vers le bas. Tu verras des #VALEUR! partout, sauf en ligne 7 (là où limaçon est sur la même ligne en H7 et A7). Cependant, si tu sélectionnes la formule dans la barre de formule et que tu appuyes sur la touche F9, tu vas voir apparaître une matrice dans laquelle tu trouveras un chiffre, comme ici, pour la formule en C2: Code :
={#VALEUR!;#VALEUR!;4;#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!}
Tu connais sans doute la fonction INDEX qui permet -sous une de ses formes- de renvoyer, au départ d'un tableau le contenu d'une cellule à l'intersection d'une ligne et d'une colonne. L'idée, ici, serait donc de chercher, dans la plage I1:I10 l'élément dont la ligne serait donnée en argument. En colonne D, cette fois, teste la fonction suivante: Code :
=SI(ESTNUM(CHERCHE($H$1:$H$10;$A2));LIGNE($H$1:$H$10);1) MAX permet d'extraire le chiffre le plus grand (3, ici). Le résultat (très résumé) demande donc à Excel de donner, dans la plage I1:I10, ce qui est en ligne 3. Voilà ce que je peux faire de moins mauvais, comme explication
__________________
. U. Milité |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 13 ![]() |
Bonjour,
Si ton explication est très claire. J'ai la formule, ma table dans l'onglet suivant, et ça marche . Je la tire donc vers le bas sans problème jusqu'a la ligne 32736 (ayant une ligne de titres, j'ai donc la formule 32735 fois) mais ensuite impossible de la recopier plus loin mais j'ai ce mois ci 54000 lignes à traiter !Je ne sais pas si la limite est imposée par Excel dans la version que j'ai ou dûe à la capacité mémoire. Je vais être obligé de scinder mon fichier puis de consolider les résultats, à moins que tu ais une meilleure idée
|
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() ![]() Inscription : janvier 2011 Messages : 106 ![]() |
Bonjour,
Je viens de tester (toujours dans le fichier que j'avais déposé) sur un peu plus de 50000 lignes et sous XL2000 ... pas de souci: un double-clic sur la poignée de recopie a reproduit la formule sur les 50155 cellules suivantes ... J'ai souvent entendu parler de problèmes de lenteur avec les formules matricielles, mais pas d'impossibilité de recopier au-delà de x lignes!? La "table de correspondance" dans ta seconde feuille est volumineuse aussi?
__________________
. U. Milité |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 13 ![]() |
La table a 330 entrées, le fichier contient aussi 2 petites tables de 10 et 20 entrées pour d'autres formules (recherchev) ; les tables sont reunies dans un onglet.
|
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() ![]() Inscription : janvier 2011 Messages : 106 ![]() |
Bonjour,
On peut tester par macro, mais pour ne pas "travailler en aveugle", pourrais-tu déposer une version allégée de ton fichier (+/- 10 "phrases", une vingtaine d'items dans ta table, les autres tables aussi ... et les formules. Je testerai sur ma machine la limite des 32736 lignes!? et essaierai avec une macro, avant de te renvoyer le tout.
__________________
. U. Milité |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com