Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion guytares
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
Re : Comparaison

Re...

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

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:
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:
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
 
Re : Comparaison

Re...


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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
262
  • Résolu(e)
Microsoft 365 transposer
Réponses
6
Affichages
245
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…