Compter le nombre d'occurance avec variable

Bonjour à vous.

Voilà je suis bien embeter parcequ'on m'as demandé de trier un fichier pour diminuer sa taille il faut que j'enleve les doublons. Le problème est que ce fichier contiens actuellement + 12 000 entrées et qu'elle en comporteras le double d'ici la fin de l'année.

Enfin la partie dynamique n'est pas reelement le problème mais je cherche un algorythme me permetant de compter les doublons le plus efficacement possible, car pour l'instant j'ai essayer ceci

Je compare la 1ere valeur avec le fichier destination

si elle est déja j'incrémente un compteur dans la table.

sinon je copie la valeur.

alors l'avantage de cette algorythme c'est la première valeur est entré directement puisque dans la feuille de destination il n'y a pas de valeur la deuxième n'as qu'une comparaison la troisième que 2 etc ...

le problème c'est que la 12 000ème valeur à aproximativement 9000 comparaison à effectué. D'aprés mes cours de maths ca nous donne par un rapide calcul environ :

50 000 000 de test ... mon pauvre ordinateur ne suit pas ...

Une solution ? Je suis sur qu'il y a une fonction excel qui me donnerais ca en un rien de temps mais je ne connais pas bien toutes les fonctions.

Merci d'avance

si tu faire d abord un tri sur tes données

tu auras beaucoup moins de test a faire car les doublons seront a la suite.

Bonsoir

Une macro de suppression des doublons sur la colonne choisie

https://www.excel-pratique.com/~files/doc/Doublons_Avec_Macro_vba.xls

Cordialement

Amadéus : Merci mais je préfère ne pas me plonger dans un code qui ne m'appartiens pas.

suistrop : Oui, aprés reflexion ca m'as paru évident, Merci

J'ai trouvé comment demandé à Excel de trier mais j'ai un problème

plop = "A" & compte
plop2 = "A1"
Sheets("source reception").Range(plop2, plop).Select
Selected.Item.SetSortOrder

ne fonctionne pas :'(

Bonjour

Pourquoi ? Si un Code est sur un Forum, c'est pour qu'il serve d'exemple et soit utilisé par d'autres. L'important est de ne pas enlever le nom de l'auteur du Code puisqu'il l'a mis comme une signature.

Tiens un autre Code en XL4 qui m'appartient et que je donne volontiers. Il fait exactement la même chose que le précédent et est écrit en français. De plus, tu trouveras dans le fichier diverses astuces par formules sur les doublons

https://www.excel-pratique.com/~files/doc/sts8RDoublons.zip

Cordialement

Merci Amadeus.

Malheureusement je ne peut pas voir ton code, l'administrateur reseaux à bloqué les téléchargements afin d'éviter tout virus, peut tu mettre le code dans un post s'il te plait ?

Sinon, je n'ai besoin que de la commande de trie, car la supression des doublons se fait selon 2 critères. Il faut que la colone "N° de prestation" soit identique mais aussi la colone "type d'intervention".

Merci

Sky

Bonsoir

Je suis perplexe:

1) Tu ne veux pas d'un Code VBA sous prètexte qu'il est de quelqu'un d'autre.

2) Ton administrateur ne veut pas de macro XL4 pour se préserver des Virus.

(Note qu'il n'est pas de notre intention, ni de nos habitudes d'écrire des macros avec des virus..)

Je ne vois pas comment nous allons pouvoir t'aider.

Cela dit, voilà le Code de la Macro XL4 que je t'ai envoyé, après celle en VBA.

MacroBiduleDoublons
=ECRAN(FAUX)
=SEL.CLASSEUR("Cpter_Eliminer_MacroXL4")
=ENTRER("Entrez la Plage correspondant à votre Tableau sous la Forme indiquée";0;"Tableau à Tester";"=$A$1:$C$100";;;)
=SELECTIONNER(DEREF($A$4))
=POSER.NOM("Départ";CELLULE.ACTIVE())
=POSER.NOM("Table";SELECTION())
=SELECTIONNER(Départ)
=LIGNE(CELLULE.ACTIVE())
=TRIER(1;Table;1;;)
=SELECTIONNER(DEREF($A$4))
=MODIFIER.SELECTION(4)
=LIGNE(CELLULE.ACTIVE())
=POSER.NOM("Fin";CELLULE.ACTIVE())
=ENTRER("Entrez la Colonne,ou l'une des Colonnes servant de référence pour rechercher les doublons, sous la forme indiquée.";1;"Colonne à Tester";2;;;)
=SELECTIONNER(Départ)
=SELECTIONNER(DECALER(CELLULE.ACTIVE();0;DEREF($A$15)-1))
=POSER.NOM("Départ";CELLULE.ACTIVE())
=SELECTIONNER(Fin)
=SELECTIONNER(DECALER(CELLULE.ACTIVE();0;DEREF($A$15)-1))
=POSER.NOM("Fin";CELLULE.ACTIVE())
=SEL.CLASSEUR("Cpter_Eliminer_MacroXL4")
=SELECTIONNER(Départ:Fin)
=POSER.NOM("Test";CELLULE.ACTIVE())
=SELECTIONNER(CELLULE.ACTIVE())
=TRIER(1;Test;1;;)
=SELECTIONNER(DECALER(SELECTION();0;1))
=INSERER(4)
=SELECTIONNER(Départ:Fin)
=SELECTIONNER(DECALER(SELECTION();0;1))
=COMPLETER.SELECTION("=SI(L(1)C(-1)="""";0;SI(L(1)C(-1)=LC(-1);1;0))")
=SOMME(SELECTION())
=ALERTE("La Macro a détecté "&DEREF($A$32)&" Doublons. Voulez-vous les supprimer ?";1)
=SI(DEREF($A$33)=VRAI;;ATTEINDRE($A$50))
=COPIER()
=COLLAGE.SPECIAL(3;1;FAUX;FAUX)
=POSER.NOM("Liste";SELECTION())
=POSER.NOM("Test2";CELLULE.ACTIVE())
=SELECTIONNER(CELLULE.ACTIVE())
=TRIER(1;Test2;2;;)
=SELECTIONNER(Liste)
=SELECTIONNER(CELLULE.ACTIVE())
=POUR("Compteur";1;DEREF($A$13)-DEREF($A$9);1)
=SI(CELLULE.ACTIVE()=1;EDITION.SUPPRIMER(3);SORTIR.BOUCLE())
=SUIVANT()
=SELECTIONNER("C:C")
=EDITION.SUPPRIMER(4)
=SELECTIONNER("L1C1")
=RETOUR()
=SELECTIONNER("C:C")
=EDITION.SUPPRIMER(4)
=SELECTIONNER("L1C1")
=ALERTE("L'ordre de votre Fichier a été modifié. Pour retrouver le fichier d'origine, fermez sans sauvegarder et reouvrez votre Fichier!!, ici, il suffit de trier croissant sur la colonne C";2)
=RETOUR()

Cordialement

Je suppose que pour faire ta comparaison tu utilises une boucle For ... next

Une façon d'accélérer une boucle est de sortir de la boucle avec l'instruction "Exit For"

en cas où un doublon est trouvé.

Mais si le nombre de doublons est limité, le gain sera minime.

Cordialement

Salut le forum

skyarnangel a écrit :

Amadéus : Merci mais je préfère ne pas me plonger dans un code qui ne m'appartiens pas.

Alors pourquoi tu viens sur un forum SkyarnAngel ?

C'est bien pour avoir un bout de code ... Non ! (Qui ne sera pas de toi ! )

Mytå

C'est bien pour avoir un bout de code ... Non ! (Qui ne sera pas de toi ! )

Oui en effet, mais c'est que j'en suis au début, j'ai encore du mal à me plonger dans un code entièrement.

Demeb Merci, c'est vrai que les doublons seront limité dans mon fichier, mais ca me serviras plus tard

Amadeus Merci, mais j'avoue que je suis perdu avec XL4. Je n'est jamais utiliser ce langage. Peut être une précision sur l'endroit de l'insertion pour le tester ?

Merci à vous pour votre aide.

J'ai pu ouvrir le premier code sans activé les macro et entré dedans, je vais pouvoir l'analysé.

Edit :

je viens de regarder de plus prêt le gros de mon problème venais de la non activation de la feuille avant la selection, ce qui m'as toujours embrouillé dans le code. Merci à tous.

Rechercher des sujets similaires à "compter nombre occurance variable"