Boucle avec do until

Bonjour,

j'ai récupéré des données que j'ai triées par ordre croissant en A et en B, mais j'ai des doublons et je souhaitais créer une macro examinant les lignes 1 et 2 pour vérifier qu'il n'y ai pas de doublon. Dans le cas où il y aurait un doublon, je souhaite éliminer la ligne, sinon, je passe à l'examen des lignes suivantes.

Comment puis-je créer cette boucle, jusqu'à la dernière ligne de données...??

Merci de votre aide

Bonjour,

un fichier peut-être ?

@ bientôt

LouReeD

Bonjour,

Oui, désolé de n'y avoir pas pensé !!

Merci de ton intérêt

84doublons.xlsx (8.09 Ko)

Une solution simple pour faire une macro c'est d'enregistrer ce que l'on veut faire.

Après au niveau du script créé il faut "bidouiller" un peu pour arriver à faire ce que l'on veut, comme on veut, et de préférence avec des variables afin de s'adapter à toutes les situations... Non ?

Voici ci dessous une modification de ce que sort l'enregistreur de macro, adapté à votre feuille et modifié pour être autonome, si je puis dire :

derligne = Range("A65536").End(xlUp).Offset(0, 0).Row
ActiveSheet.Range("$A$1:$B" & derligne).RemoveDuplicates Columns:=Array(1, 2) _
        , Header:=xlYes

derligne = on cherche à connaître la dernière ligne utilisée sur votre tableau, le teste se fait sur la colonne A.

ActiveSheet.Range("$A$1:$B" & derligne = on sélectionne alors la zone qui va de A1 (première cellule en haut à gauche) à Bderligne (dernière cellule en bas à droite)

RemoveDuplicates = on retire les doublons

Columns:=Array(1, 2) = sur les colonnes 1 et 2 = même valeur en colonne 1 ET même valeur en colonne 2

Header:=xlYes = oui la liste du tableau comporte une entête

Vous allez me dire : Oui mais le A et le B sont en dur ainsi que le 1 et le 2....

soit vous avez raison, mais il y a la possibilité de les mettre en variable avec une sélection par région... mais ce soir j'y suis pas et les données dans la macros ne sont pas difficiles à modifier...

Le fichier joint comporte cette macro avec un bouton pour la lancer

@ bientôt

LouReeD

Ouah !!

C'est encore mieux que ce que j'avais tenté (if cell2=cell1... then... et tout ce qui s'en suit !!!)

Merci.

enregistreur de macro ! pour les "autodidactes" que nous sommes ça aide, ça ne fait pas tout mais ça aide énormément

@ bientôt

LouReeD

Oui, j'utilise beaucoup l'enregistreur de macro, mais quelques fois ça "coince"...

Malheureusement, je ne dispose que de excel 2003 au boulot et là... Ca ne fonctionne pas. Il ne connait pas "RemoveDuplicates". J'ai donc du revenir au "Do Until... avec un tri préalable et un copier/coller qui prend beaucoup de temps à ma macro.

Néanmoins, je te remercie. En cas de modernisation de notre outil de travail, j'aurai une solution plus efficace et rapide pour éliminer d'éventuels doublons de mes extractions.

Bonjour,

ci-joint un fichier qui n'utilise pas un do loop until, mais un objet dictionary qui ne supporte pas les doublons.

En somme c'est un tableau à une colonne avec comme données un index "position de la valeur dans le tableau" et un item valeur de la valeur.

Le principe de la boucle est de créer un tableau réponse qui comporte lui deux dimensions (valeur première colonne et valeur deuxième colonne) en testant la redondance grâce au dictionnaire....

ligne 2, colonne A : 153945

ligne 2, colonne B : 1

ajout d'un séparateur afin de différencier les deux valeurs pour ne pas confondre :

153945 et 1 avec 15394 et 51

mise en mémoire de la paire de valeur ci dessus dans le dico si la valeur n'existe déjà pas : mondico(1)=153945|1

s'il y a eu rajout, ce n'est pas un doublon donc dans le tableau réponse on ajoute les valeurs des deux cellules : c(ligne, k) = a(i, k)

ceci grâce à une boucle de deux car deux colonnes...

puis on teste la ligne suivante

Une fois toutes les lignes testées, il suffit de copier le tableau réponse où l'on veut.

Le fichier joint comporte 20737 lignes et le résultat est quasi instantané...

@ bientôt

LouReeD

Bonjour,

J'ai testé sur mon Excel perso (2010) et c'est bluffant !!!

J'essayerai au boulot (2003)... Si ça marche, cela fera gagner un temps précieux sur chacune des requêtes qui demande ce genre de tri !!

Merci de nouveau du temps que tu as pris à regarder mon problème...

Mais de rien

cela me fait progresser également !!!!

@ bientôt

LouReeD

Rechercher des sujets similaires à "boucle until"