Comparaison

guytares

XLDnaute Nouveau
Bonjour je cherche à comparer deux listes en A et C d'une feuille exel de 200000 lignes avec si valeur de C est dans A alors copier valeur écrite en B dans D avec mais sans application transpose qui limite le résultat à 65000. Merci d'avance
 

Pièces jointes

  • exemple.xlsx
    9 KB · Affichages: 33
  • exemple.xlsx
    9 KB · Affichages: 42
  • exemple.xlsx
    9 KB · Affichages: 42

guytares

XLDnaute Nouveau
Re : Comparaison

Bonjour laetitia90, roger 2327, pierrejean, double zero de bonnes nouvelles pour tous.
Toutes les macros marchent bien.
Temp d'exécution pour 175 000 ligne , laetitia 1 : 6.2 secondes, laetitia 2 : 5.72 seconde, le top , roger 2327 : 6.59 secondes.
Laetition ton code avec nok marche très bien et Roger 2327 ton dernier code marche très bien aussi. Merci à vous tous
 

ROGER2327

XLDnaute Barbatruc
Re : Comparaison

Re...

Bonjour laetitia90, roger 2327, pierrejean, double zero de bonnes nouvelles pour tous.
Toutes les macros marchent bien.
Temp d'exécution pour 175 000 ligne , laetitia 1 : 6.2 secondes, laetitia 2 : 5.72 seconde, le top , roger 2327 : 6.59 secondes.
Laetition ton code avec nok marche très bien et Roger 2327 ton dernier code marche très bien aussi. Merci à vous tous
Parfait. Mais, tant qu'à faire un test de performance, faisons le bien.

Pour des petits échantillons de 175 000 lignes[SUP][1][/SUP] dans chacune des colonnes A et C, avec un taux moyen de recouvrement de 50% (i.e des échantillons donnant environ 50% de « nok »), j'ai obtenu les temps moyens suivant après dix essais :
lætitia90 : 6,72s
ROGER2327 : 5,05s
Nous sommes à peu près d'accord.

Mais en analysant les deux algorithmes, on s'aperçoit qu'ils sont conceptuellement radicalement différents :

À la louche, l'algo-ROGER est en o(n) tandis que l'algo-lætitia est en o(n²).

En clair, un doublement de la taille des échantillons devrait conduire au doublement du temps d'exécution de l'algo-ROGER (croissance linéaire) et au quadruplement de celui de l'algo-lætitia (croissance parabolique).

J'ai donc poursuivi avec des échantillons moyens, puis gros, et constaté que l'expérience confirme l'hypothèse :


  • vers 500 000 lignes, une minute pour l'algo-lætitia, quinze secondes pour l'algo-ROGER ;
  • autour du million de lignes, pas loin de quatre minutes pour l'algo-lætitia, environ trente secondes pour l'algo-ROGER.


Les résultats détaillés sont dans le classeur joint.

Moyennant quoi il est hasardeux de proclamer un « top » sur un essai...


Bonne journée.


[SUP][1][/SUP] Je dis petit car une feuille comptant plus d'un million de lignes, 175 000 n'en sont guère plus que le sixième.


ℝOGER2327
#7940


Mercredi 11 Gidouille 142 (Sacre de Talou VII, empereur du Ponukélé - fête Suprême Quarte)
7 Messidor An CCXXIII, 1,2460h - concombre
2015-W26-4T02:59:25Z
 

Pièces jointes

  • Concordance (test de rapidité).xlsx
    18.9 KB · Affichages: 18

guytares

XLDnaute Nouveau
Re : Comparaison

Bonjour Laetitia90, après avoir fait des essais de comparaison je me suis aperçu que ta macro différenciait les majuscules des minuscules or je voudrait qu'il les compares égaux. Ex que
H1508-IT(@)acc = h1508-it(@)acc
il sagit d'un mailing donc les différences entre majuscules et minuscules n'apparaissent pas dans outlook. Merci à vous
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Comparaison

Bonjour.


En l'absence de Laetitia90 à cette heure, je me permets de répondre.
Ajoutez la ligne
Code:
  m.CompareMode = TextCompare
après la ligne
Code:
 Dim t(), m As New Dictionary, i As Long

Solution erronée. Voir le message #24
Au cas où vous voudriez faire la même chose avec ma procédure, remplacez les lignes
Code:
                t = e(i, 2)
                Do While t > d(j, 1) And j < l: j = j + 1: Loop
                If t = d(j, 1) Then e(i, 1) = d(j, 2): j = j + 1
par celles-ci :
VB:
                t = UCase(e(i, 2))
                Do While t > UCase(d(j, 1)) And j < l: j = j + 1: Loop
                If t = UCase(d(j, 1)) Then e(i, 1) = d(j, 2): j = j - (j < l)
(Au passage, cela corrigera une bogue en remplaçant j = j + 1 par j = j - (j < l)).

Autre solution, plus simple (...et correcte) : ajoutez
Code:
Option Compare Text
en tête du module contenant la procédure. Inconvénient : le choix de ne pas distinguer haut et bas de casse s'appliquera à toutes les procédures et fonctions. À vous de voir...​



Bonne journée.


ℝOGER2327
#7941


Mercredi 11 Gidouille 142 (Sacre de Talou VII, empereur du Ponukélé - fête Suprême Quarte)
7 Messidor An CCXXIII, 5,9036h - concombre
2015-W26-4T14:10:07Z
 
Dernière édition:

guytares

XLDnaute Nouveau
Re : Comparaison

Bonjour Roger et merci pour vos réponses, votre procédure marche sur le programme laetitia90, par contre j'ai des bugs sur votre programme, il y a des comparaisons pas bonnes avec du genre nok avec les modifs faites la dernière fois. Salutations
 

ROGER2327

XLDnaute Barbatruc
Re : Comparaison

Re...


Bonjour Roger et merci pour vos réponses, votre procédure marche sur le programme laetitia90, par contre j'ai des bugs sur votre programme, il y a des comparaisons pas bonnes avec du genre nok avec les modifs faites la dernière fois. Salutations
Je suis bien embarrassé. J'ai relu le code sans voir d'où peut provenir le problème.
J'ai donc repris votre classeur du message #10. J'ai dupliqué cinq fois la l'onglet Feuil1 et modifié les données pour mettre tantôt la colonne A, tantôt la colonne C, en majuscules.
Pour les trois premiers onglets, j'ai utilisé ma première proposition pour traiter indifféremment les données en majucules et les données en minuscules ; pour les trois derniers, j'ai utilisé ma deuxième proposition.
Résultat : pas d'apparition de « nok » indésirable.
Un truc vicieux doit m'échapper...
Pourriez-vous préciser quelles données posent problème ?​


ℝOGER2327
#7942


Jeudi 12 Gidouille 142 (Sainte Confiture, dévote et Sainte Cliche, donatrice - fête Suprême Quarte)
8 Messidor An CCXXIII, 0,4294h - échalote
2015-W26-5T01:01:50Z
 

Pièces jointes

  • Concordance-2.xlsm
    63.6 KB · Affichages: 15

guytares

XLDnaute Nouveau
Re : Comparaison

[QUOTE=ROGER2327
Bonjour, je vous ai mis le fichier concordance 3 en piece jointe avec les erreurs en jaunes pour debuggage, moi non plus je ne comprends pas ou ça foire.Salutation
 

Pièces jointes

  • Concordance-3.xlsm
    71.7 KB · Affichages: 16

ROGER2327

XLDnaute Barbatruc
Re : Comparaison

Re...


Je pense avoir trouvé : j'ai dit quelques conneries dans le message #20.
Dans tous les cas, il faut déclarer Option Compare Text avant la procédure tata.
Voyez si le classeur joint donne enfin satisfaction.


ℝOGER2327
#7944


Jeudi 12 Gidouille 142 (Sainte Confiture, dévote et Sainte Cliche, donatrice - fête Suprême Quarte)
8 Messidor An CCXXIII, 4,2903h - échalote
2015-W26-5T10:17:48Z
 

Pièces jointes

  • Concordance-4.xlsm
    59.6 KB · Affichages: 19

Discussions similaires

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert