OVH Cloud OVH Cloud

Elimination de doublons très lente

6 réponses
Avatar
René Delcourt
Bonjour à tous,
Après avoir recherché à solutionner le problème dans le forum (je passe la
polémique sur une demande sur le sujet), je ne pense pas avoir trouvé quelque
chose qui me convienne.
Plusieurs utilisateurs remplissent une feuille excel de même structure
(plusieurs colonnes).
Je reçois ces feuilles et les regroupe (ajoute) dans leur ensemble dans une
seule feuille.
Cela provoque forcément des doublons.
J'ai essayé une méthode de comparaison sur des lignes triées mais elle est
extrêmement lente (sur 10000 lignes).
Quelqu'un peut me guider à rendre cette intégration plus performante.
Merci de votre aide.
--
René Delcourt

6 réponses

Avatar
SL
Bonjour

Je n'ai pas suivi les discussions précédentes
Une proposition : en supposant que tu as 5 colonnes A à E qui sont remplies
(ligne 1 en étiquette).
En colonne F : A2&B2&C2&D2&E2 en G : =equiv(F2;$F$2:$F$10000;0)=ligne()
Faire une copie, coller les valeurs de colonne F et G (ou calcul sur ordre)
puis un filtre sur FAUX

Stéphane

"René Delcourt" a écrit dans le message de news:

Bonjour à tous,
Après avoir recherché à solutionner le problème dans le forum (je passe la
polémique sur une demande sur le sujet), je ne pense pas avoir trouvé
quelque
chose qui me convienne.
Plusieurs utilisateurs remplissent une feuille excel de même structure
(plusieurs colonnes).
Je reçois ces feuilles et les regroupe (ajoute) dans leur ensemble dans
une
seule feuille.
Cela provoque forcément des doublons.
J'ai essayé une méthode de comparaison sur des lignes triées mais elle est
extrêmement lente (sur 10000 lignes).
Quelqu'un peut me guider à rendre cette intégration plus performante.
Merci de votre aide.
--
René Delcourt


Avatar
René Delcourt
Merci pour ta réponse.
C'est dans ce sens que j'ai écrit ma macro qui s'avère lente sur quelques
milliers de lignes...
--
René Delcourt



Bonjour

Je n'ai pas suivi les discussions précédentes
Une proposition : en supposant que tu as 5 colonnes A à E qui sont remplies
(ligne 1 en étiquette).
En colonne F : A2&B2&C2&D2&E2 en G : =equiv(F2;$F$2:$F$10000;0)=ligne()
Faire une copie, coller les valeurs de colonne F et G (ou calcul sur ordre)
puis un filtre sur FAUX

Stéphane

"René Delcourt" a écrit dans le message de news:

Bonjour à tous,
Après avoir recherché à solutionner le problème dans le forum (je passe la
polémique sur une demande sur le sujet), je ne pense pas avoir trouvé
quelque
chose qui me convienne.
Plusieurs utilisateurs remplissent une feuille excel de même structure
(plusieurs colonnes).
Je reçois ces feuilles et les regroupe (ajoute) dans leur ensemble dans
une
seule feuille.
Cela provoque forcément des doublons.
J'ai essayé une méthode de comparaison sur des lignes triées mais elle est
extrêmement lente (sur 10000 lignes).
Quelqu'un peut me guider à rendre cette intégration plus performante.
Merci de votre aide.
--
René Delcourt







Avatar
Philippe
Je vois 3 facteurs de lenteur :

L'affichage : commencer le code par application.screenupdatingúlse
Le calcul : (si c'est une source servant de calcul)
=>application.calculate=xlmanual
(ne pas oublier de revenir en xlAutomatic, contrairement à l'ffichage, ca ne
se réinitialise pas en fin de code)
Excel : si c'est vraiment bloquant, passer sur Access puis assistant de
requete permettant de trouver des doublons. Mais bon, la manipulation est
quand meme longue, donc ne le faire que si tu n'y arrives pas autrement.

En esperant t'aider.

Philippe.






Merci pour ta réponse.
C'est dans ce sens que j'ai écrit ma macro qui s'avère lente sur quelques
milliers de lignes...
--
René Delcourt



Bonjour

Je n'ai pas suivi les discussions précédentes
Une proposition : en supposant que tu as 5 colonnes A à E qui sont remplies
(ligne 1 en étiquette).
En colonne F : A2&B2&C2&D2&E2 en G : =equiv(F2;$F$2:$F$10000;0)=ligne()
Faire une copie, coller les valeurs de colonne F et G (ou calcul sur ordre)
puis un filtre sur FAUX

Stéphane

"René Delcourt" a écrit dans le message de news:

Bonjour à tous,
Après avoir recherché à solutionner le problème dans le forum (je passe la
polémique sur une demande sur le sujet), je ne pense pas avoir trouvé
quelque
chose qui me convienne.
Plusieurs utilisateurs remplissent une feuille excel de même structure
(plusieurs colonnes).
Je reçois ces feuilles et les regroupe (ajoute) dans leur ensemble dans
une
seule feuille.
Cela provoque forcément des doublons.
J'ai essayé une méthode de comparaison sur des lignes triées mais elle est
extrêmement lente (sur 10000 lignes).
Quelqu'un peut me guider à rendre cette intégration plus performante.
Merci de votre aide.
--
René Delcourt









Avatar
SL
Une proposition sans filtre (c'est peût-être ça qui ralenti la macro ?)

Sur la colonne qui contient les VRAI/FAUX, sélectionner un VRAI, Atteindre
(F5), Cellule, Différence par colonne, supprimer ligne entière.

Stéphane

"René Delcourt" a écrit dans le message de news:

Merci pour ta réponse.
C'est dans ce sens que j'ai écrit ma macro qui s'avère lente sur quelques
milliers de lignes...
--
René Delcourt



Bonjour

Je n'ai pas suivi les discussions précédentes
Une proposition : en supposant que tu as 5 colonnes A à E qui sont
remplies
(ligne 1 en étiquette).
En colonne F : A2&B2&C2&D2&E2 en G : =equiv(F2;$F$2:$F$10000;0)=ligne()
Faire une copie, coller les valeurs de colonne F et G (ou calcul sur
ordre)
puis un filtre sur FAUX

Stéphane

"René Delcourt" a écrit dans le message de news:

Bonjour à tous,
Après avoir recherché à solutionner le problème dans le forum (je passe
la
polémique sur une demande sur le sujet), je ne pense pas avoir trouvé
quelque
chose qui me convienne.
Plusieurs utilisateurs remplissent une feuille excel de même structure
(plusieurs colonnes).
Je reçois ces feuilles et les regroupe (ajoute) dans leur ensemble dans
une
seule feuille.
Cela provoque forcément des doublons.
J'ai essayé une méthode de comparaison sur des lignes triées mais elle
est
extrêmement lente (sur 10000 lignes).
Quelqu'un peut me guider à rendre cette intégration plus performante.
Merci de votre aide.
--
René Delcourt









Avatar
ClémentMarcotte
Bonjour,

Après avoir recherché à solutionner le problème dans le forum (je passe la
polémique sur une demande sur le sujet), je ne pense pas avoir trouvé
quelque

chose qui me convienne.


Faudrait peut-être une référence à la question d'origine, personne ici n'est
devin.

Cela provoque forcément des doublons.
J'ai essayé une méthode de comparaison sur des lignes triées mais elle est
extrêmement lente (sur 10000 lignes).
Quelqu'un peut me guider à rendre cette intégration plus performante.



1 ) Tu te fais un filtre élaboré avec Extraction sans doublon.

2 ) Tu passes par ADO, en t'assurant que les conflits de mise à jour sont
gérés au moment de la mise à jour. (CF "Programming ADO") de David Sceppa
chez Microsoft Press.)

Avatar
Daniel.M
Bonjour René,

' Stratégie générale
'1. Rajouter une colonne avec la formule donnant le numéro de ligne ' =LIGNE()
'2. Fixer ce numéro en 'dur' (copier/collage spéciale par valeur)
'3. Trier sur toutes les colonnes qui identifie un doublon
' si plus de 3 colonnes à trier, faire plusieurs tris en
' commençant avec les colonnes les moins importantes pour
' la clé de tri
'4. Rajouter une autre colonne avec la comparaison (sur les 5 colonnes)
' entre la ligne courante et précédente. La comparaison devra retourner
' un booléen qui identifie si la ligne est à détruire.
' Un exemple de formule, matricielle celle-là :
' =ET(A2:E2¡:E1)
'5. Fixer en dur les valeurs retournées par cette formule (copier/coller par
valeur)
'6. Trier selon cette nouvelle colonne
'7. Détruire d'un bloc les lignes qui auront été identifiées 'doublons' par un
VRAI en valeur booléenne.
'8. Avec les lignes restantes, trier selon la colonne du numéro de ligne
original (obtenue en étape 1)
'9. Détruire les deux colonnes qu'on a rajoutées

Avise si une des étapes te cause du soucis.
Résultat < 5 secondes chez moi.

Salutations,

Daniel M.

"René Delcourt" wrote in message
news:
Merci pour ta réponse.
C'est dans ce sens que j'ai écrit ma macro qui s'avère lente sur quelques
milliers de lignes...
--
René Delcourt



Bonjour

Je n'ai pas suivi les discussions précédentes
Une proposition : en supposant que tu as 5 colonnes A à E qui sont remplies
(ligne 1 en étiquette).
En colonne F : A2&B2&C2&D2&E2 en G : =equiv(F2;$F$2:$F$10000;0)=ligne()
Faire une copie, coller les valeurs de colonne F et G (ou calcul sur ordre)
puis un filtre sur FAUX

Stéphane

"René Delcourt" a écrit dans le message de news:

Bonjour à tous,
Après avoir recherché à solutionner le problème dans le forum (je passe la
polémique sur une demande sur le sujet), je ne pense pas avoir trouvé
quelque
chose qui me convienne.
Plusieurs utilisateurs remplissent une feuille excel de même structure
(plusieurs colonnes).
Je reçois ces feuilles et les regroupe (ajoute) dans leur ensemble dans
une
seule feuille.
Cela provoque forcément des doublons.
J'ai essayé une méthode de comparaison sur des lignes triées mais elle est
extrêmement lente (sur 10000 lignes).
Quelqu'un peut me guider à rendre cette intégration plus performante.
Merci de votre aide.
--
René Delcourt