quelle méthode de recherche mots 0.1 seconde sur une feuille de 1 million de lignes

topolino

XLDnaute Nouveau
Objet : recherche de mots dans un dico (feuille de 1 millions voire plus de lignes) et affichage des traductions

Bonjour à tous,

Je vais commencer par une question simple :
- 6,7,8 colonnes (mot/phrase, genre, catégorie gram., registre/domaine, syn., traduction, etc.)

- 1 million voire plus de lignes.

J'aimerais vous demander quelques conseils pour la réalisation d'un dico bilingue avec traduction "semi-automatique" (LE BUT de ce programme est la rapidité de recherche et ensuite l'affichage des données trouvées, le tout en quelques secondes).
Que doit faire le programme : rechercher toutes les occurrences pour chaque mot d'un texte et afficher chaque occurrence (un mot peut avoir 50 occurrences, 50 fois une ligne entière avec toutes les colonnes), et ce, en 10 secondes pour 100 à 1000 mots, si possible...

Je sais que c'est possible puisque le Robert et collins élecronique (probabelment en langage java, c++ ou autre) , par exemple, le fait instantanément : affiche toutes les occurrences (100 à 1000 mots) mais faut encore recherche et en plus, il ne le fait que pour un mot à la fois.MOn but est d'automatiser le tout (un texte entier) et peaufiner jusqu'à l'affichage de seulement les phrases avec le mot recherché.
y a-t-il une méthode/technique capable de le faire en Excell en quelques secondes (rechercher 100 mots sur 1 millions de lignes voire plus ? =recherche ou scripting.dictionary ou array , ...

Merci d'avance pour votre aide,

topolino
 

JBARBE

XLDnaute Barbatruc
Je sais que c'est possible puisque le Robert et collins élecronique (probabelment en langage java, c++ ou autre) , par exemple, le fait instantanément : affiche toutes les occurrences (100 à 1000 mots) mais faut encore recherche et en plus, il ne le fait que pour un mot à la fois
topolino
Bonjour à tous,
Je ne suis pas un expert en VBA mais doute qu'Excel fasse mieux que le Robert et collins élecronique !
En tout cas, je n'ai jamais vu qu'Excel fasse mieux qu'un programme spécifiquement conçu pour telle utilisation !
Sinon, le VBA serait supérieur à tout autre langage de programmation et ainsi largement utilisé!
https://fr.wikipedia.org/wiki/Visual_Basic_for_Applications
Bonne journée !
 

JBARBE

XLDnaute Barbatruc
Re,
Il s’agit bien de plus 1 millions de lignes ( vous vous rendez compte + de 1000000 lignes)!
Alors excite excel 2003 et antérieur et seulement 1048.576 lignes pour excel 2007 et plus !
Vous voyez la française des jeux avec le loto et le PMU avec ces courses de chevaux utiliser Excel et son VBA pour afficher un résultat rapidement !
Certes dans ce forum il y a des spécialistes du VBA !
Mais, cessons de rêver et utilisons ce VBA sans vouloir rivaliser avec tout autre langage informatique pour satisfaire des demandes de ce genre !
Bonne soirée
 

topolino

XLDnaute Nouveau
Bonjour à tous,

Peut-être un début de réponse en cliquant ci-dessous
http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm

à+
Philippe

salut Philippe,

Merci pour le lien mais je l'avais déjà fait.
En fait ma question s'adressait à un expert avec une réponse d'expert. La réponse que j'attends est du type,c'est juste un exemple : la seule façon en Excell est (imaginons) array ou l'objet scripting.dictionary, même rapidité.ET question rapidité, je viens de créer une feuille avec 1 million lignes (vite fait avec for/next) et excel à recherché 100 mots et affiché les occurrences en 5 secondes (c'est pas mal). C'est juste un exemple. VOilà ! avec cette info, je sais si je dois me lancer dans la programmation Excell avec l'objet dictionary ou bien laisser tomber.

Merci bcp,
Bon week end,
 

topolino

XLDnaute Nouveau
Re,
Il s’agit bien de plus 1 millions de lignes ( vous vous rendez compte + de 1000000 lignes)!
Alors excite excel 2003 et antérieur et seulement 1048.576 lignes pour excel 2007 et plus !
Vous voyez la française des jeux avec le loto et le PMU avec ces courses de chevaux utiliser Excel et son VBA pour afficher un résultat rapidement !
Certes dans ce forum il y a des spécialistes du VBA !
Mais, cessons de rêver et utilisons ce VBA sans vouloir rivaliser avec tout autre langage informatique pour satisfaire des demandes de ce genre !
Bonne soirée


Salut JBARBE,


IL est certain qu'il y a des langages de programmation plus performants prévus à cet effet.

Vu que je connais un peu VBA (et d'autres langages en amateur) autant l'utiliser si possible, d'où ma question. Si ce n'est pas possible, tant pis.

Ma question s'adressait à un expert avec une réponse d'expert claire et simple : non, ce n'est pas possible il faut utiliser tel ou tel langage ou oui, c'est possible avec la fonction ? ou l'objet ?


Pour information Jbarbe, je ne connais pas tes compétences en programmation (quel que soit le langage) : il est parfaitement possible (ON NE FAIT QUE CA !) de programmer en plusieurs langages à la fois : le sites web en html font appel à des feuilles CSS, du php (bases de données de millions de lignes DE PRODUITS ) et surtout du javascript pour les effets graphiques, le traitement de données (aussi) ou tri, etc.


En effet, 1.048.576 lignes=plus d'un million (c'est déjà bon), il suffit de faire plusieurs colonnes (plus de 16000 colonnes disponibles sur Excell 2016).


Je le fait déjà de parcourir plus de 5 millions de lignes (JE PASSE ET REPASSE DES MILLIERS DE FOIS) en analysant les résultats du loto, euromillions. En fait, je laisse tourner l'ordi toute la nuit, et ce, sur plusieurs jours.

En Wordpress, beaucoup de sites sont en wordpress=site préprogrammé, tu peux modifier l'HTML, les CSS, javascript, PHP, ajouter des objets (=un formulaire, un DICTIONNAIRE) : AVEC EXCELL, TU PEUX AJOUTER DES OBJETS AUSSI , DERRIERE CET OBJET IL Y A UNE PREPROGRAMMATION=CET OBJET EST REALISE DANS UN AUTRE LANGAGE ! POURQUOI ? PARCE QUE EXCELL N'EST PAS CAPABLE DE LE FAIRE... SACHANT CELA ! D'OU MA QUESTION !

Par exemple, un objet dictionnaire réalisé en Java ou c++= exactement le même que le dico Robert et Collins électronique pourrait être disponible en Excell, on pourrait l'appeler par une fonction spéciale qui intègrerait le langage java ou c++ dans Excell pour que ce dernier puisse l'exécuter, problème résolu !

Excell a bcp évolué en quelques années, avec les tableaux croisés et surtout plein de nouveaux objets dans la fenêtre développeur (menus déroulants, formulaire, popup, bouton d'options, etc.)

SI quelqu'un a déjà utilisé array ou l'objet scripting.dictionary et peux me dire, après un test sur un million de lignes ou 500.000 lignes , le temps d'éxécution pour afficher 10 mots, cela me serait bien utile.

Bon weekend Jbarbe,

A+
 
Dernière édition:

JBARBE

XLDnaute Barbatruc
Salut JBARBE,
En effet, 1.048.576 lignes=plus d'un million (c'est déjà bon), il suffit de faire plusieurs colonnes (plus de 16000 colonnes disponibles sur Excell 2016).
Je le fait déjà de parcourir plus de 5 millions de lignes (JE PASSE ET REPASSE DES MILLIERS DE FOIS) en analysant les résultats du loto, euromillions. En fait, je laisse tourner l'ordi toute la nuit, et ce, sur plusieurs jours.
A+
Bonsoir à tous,
Je vois que tu es tout neuf sur ce forum et n'a donc pas de compétence à apprécier la compétence des bénévoles ( de moi que tu site) et de l'utilisation d'excel ! Désolé !
De plus, tu nous parle de faire tourner ton ordi jour et nuit sur plusieurs jours pour les résultats du loto !
Est-ce bien raisonnable quand on fait une demande de rapidité d’exécution d'Excel !
Et puis ta démonstration de programmation d'un site internet je la connais mais cela n'a donc rien à voir avec ton nombre de lignes ! ( il y a même des programmes qui se chargent de ce travail tu vois )
Il y a quelque chose d'incohérent dans tout cela !
Mais bon, comme tu n'as pas apprécié mon commentaire, je te signal que j'ai été le seul avec phlaurent et Staple à te répondre !
Pourtant je les connais les bénévoles très compétents qui auraient pu te répondre !
Bref, je regrette d'avoir engagé cette conversation sachant ou cela m'a mené !
Bonne soirée !
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Bonjour à tous

Dans ton cas, il y a une méthode avec les filtres avancés qui pourraient aussi être utilisés, mais pas sûr que ce soit très rapide surtout sur un nombre très élevé de lignes.

A tester, à défaut d'un fichier qui n'a pas été fourni. :(
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous,
J'ai téléchargé le fichier de tatiak pour l'exemple !
Il se compose de 333516 lignes !
En mettant dans la recherche " RUE DE MAUPASSANT", la macro copie dans la "feuil2" le résultat souhaité en 11 secondes après recherche dans la colonne G !
C'est très bien et même mieux que le temps d'ouverture ou de fermeture du fichier (47,3 Mo)!
Mon ordi pas tout neuf : Asus X52S
Bravo pour cette macro qui semble être une des plus aboutie sans remettre en cause les autres démonstrations!
Mais qu'en sera t'il avec plus de 1000000 de lignes et sur plusieurs colonnes comme le souhaite topolino !
Le fichier :
http://www.k-upload.fr/afficher-fichier-2017-12-03-143149240tatiak1.zip.html


Bonne journée et merci pour ces démonstrations ça peu servir !
tatiak.jpg
 

MJ13

XLDnaute Barbatruc
Bonjour à tous

La méthode de Nicole me paraît très rapide (j'ai pas pu tester les autres :().

Sinon, voici ce que j'ai pu faire avec les filtres avancés, mais cela sera sûrement plus long, mais je n'ai pas à lancer la liste au début. Ensuite on doit pouvoir le mettre en action avec un Userform. :)
 

Pièces jointes

  • BDDRechercheRapideFiltreAvancée.xlsm
    28.5 KB · Affichages: 32

MJ13

XLDnaute Barbatruc
Bonjour à tous

Merci Nicole, pour cette dernière version qui fait la par belle au tableau. ;)

Mais quand tu n'y connais pas grand chose en tableau, car c'est un peu technique, les filtres avancés peuvent être mise en œuvre un peu plus facilement pour mon niveau.

Voici la version 2 en attendant la version 3 pour Noël. :) J'ai mis 100 000 suites de 10 caractères aléatoires. Taper azerty lors de la première recherche puis des suites de lettres de 2 à 10 caractères.
 

Pièces jointes

  • BDDRechercheRapideFiltreAvancéeV2.xlsm
    2.2 MB · Affichages: 42

MJ13

XLDnaute Barbatruc
Re

Merci Nicole pour ces précisions, en effet, comme ton fichier le démontre plus il y a de données à récupérer, plus le temps est long avec le filtre avancé.

C'est pour cela que dans mon fichier V2, je mets au moins 2 caractères, sachant qu'avec 1 caractère avec plus de 10 000 valeurs trouvées sur 100 000, on arrive à 1 dizaine de secondes.

Mais, je vois dans l'utilisation de ce genre de fichier pour trouver quelques mots ou phrases plutôt que trop d'occurrences qui serait peu utile en général. :)
 

Discussions similaires

Statistiques des forums

Discussions
312 230
Messages
2 086 427
Membres
103 206
dernier inscrit
diambote