Macro - Gérer une liste avec doublons (Débutant)

Bonjour tout le monde,

Voilà je viens vers vous car j’ai un exercice à réaliser via VBA mais le problème c’est que je n’ai quasiment eu rien comme cours dessus mis à part les tutos présents sur votre site, ou en parcourant les sites internet dédiés.

J’ai cherché un peu partout mais je n’y arrive pas. Soit les codes sont trop compliqués soit ça ne correspond pas à ce que je souhaite. Bref je suis désespéré

Alors voilà mon problème :

J’ai un fichier excel (voir ci-joint) avec 2 feuilles. L’une regroupant le bilan des commandes faites par les personnes au fil des différentes semaines et l’autre feuille regroupant la liste des clients avec ceux qui arrivent en cours de route.

Ce que je dois faire c’est :

1) Faire parcourir via une macro la feuille nommée « Clients »

2) Recopier les noms des nouveaux arrivants en bas du tableau de la feuille 1 nommée « Bilan »

3) Pour ce qui est des personnes qui étaient en doublon il suffit de rajouter dans la cellule de la semaine 3 le chiffre 40 par exemple.

J’ai essayé de faire un début mais j’avais des boucles infinis et débuter sur ce type d’exercice n’est pas chose facile pour moi en tout cas ^^

Je vous remercie par avance du temps que vous souhaiterai accorder à un inconnu en détresse.

Bonne soirée ^^

Bonjour

Un essai à tester. Te convient-il ?

Bye !

23exo-test-v1.xlsm (25.14 Ko)

Comment dire c'est parfait ^^

Merci énormément gmb !!

J'ai quelques petites questions par contre.

Pour l'utilisation de dico si j'ai bien compris ça va servir en quelque sorte de stocker les valeurs lues.

J'ai n'ai pas très bien compris l'utilisation de la fonction For i = 1 To UBound(tablo1, 1) et la fonction For i = 0 To dico2.Count - 1

derln = fb.Range("A" & Rows.Count).End(xlUp)(2).Row -->D'après ce que j'ai pu comprendre c'est pour reclasser les doublons et les nouveaux noms dans le tableau du Bilan mais le (2) c'est juste le code qui est comme ça ou ça veut dire quelque chose de bien précis ?

En tout cas un grand merci à toi

dico si j'ai bien compris ça va servir en quelque sorte de stocker les valeurs lues.

Oui mais avec une particularité : si j'y stocke 2 fois la même valeur, dico n'en conserve qu'une. Cela permet d'avoir des listes sans doublon.

J'ai n'ai pas très bien compris l'utilisation de la fonction For i = 1 To UBound(tablo1, 1)

Une variable tableau (appelée ici tablo1) permet de stoker d'un coup toutes les valeurs d'un tableau défini sur une feuille Excel.

UBound (tablo,1) donne le nombre de lignes qu'il y a dans ce tableau.

Donc, en faisant une boucle de 1 à UBound(tablo,1), on peut passer toutes les valeurs de la premières colonne du tableau.

...et la fonction For i = 0 To dico2.Count - 1

Pour un dictionnaire, (ici dico2) le nombre de valeurs qu'il contient est donné par l'instruction : dico2.count.

De plus, si on a pris soin d'écrire qu'une autre variable (ici k2) a été définie par l'instruction : k2 = dico2.keys

on peut se servir d'elle pour passer toutes les données que contient dico2.

Ainsi, k2(0) donnera le premier nom de dico2, k2(1) donnera le 2° nom etc...

On pourra donc lister tous les noms du dictionnaire en faisant varier le paramètre de k2 de 0 à dico.count -1 (puisqu'on a commencé à les compter à 0 et non pas à 1).

derln = fb.Range("A" & Rows.Count).End(xlUp)(2).Row

Non, ce n'est pas pour reclasser les doublons et les nouveaux noms, c'est plus précisément pour donner à la variable derln le numéro de la dernière cellule non vide de la colonne A en partant du bas (tout en bas de la feuille) et en remontant, comme si on sélectionnait la cellule A1000000 et si on faisait alors un Ctrl + flèche vers le haut. La cellule active serait la première cellule non vide.

Et on ajoute le "(2)" justement pour avoir la cellule immédiatement au dessous.

OK ?

Bye !

Merci gmb j'ai compris maintenant ^^

Par contre j'ai eu un petit problème je n'arrive pas à l'exécuter.

Du coup pour être sur que ça fonctionne j'ai voulu entreprendre de le faire avec des tableaux dynamiques.

J'ai lu le cours et fait des exercices qui sont à disposition sur le forum mais je ne sais pas du tout comment faire pour gérer les doublons et remanier le code pour qu'il le fasse.

Je suppose que la structure doit être quasiment la même en ce qui concerne les boucles for et if étant donné que c'est pour parcourir des tableaux.

J'ai essayé d'adapté ça sur le code mais sans succès j'ai du mal à visualiser tout ce qui est taille et conditions. Je suis un peu perdu et ma tête est pire qu'une cocotte minute xD ...

Je vous remercie par avance du temps que vous souhaiterai m'accorder

Bonne soirée ^^

Es-tu bien sûr que le problème vient du dictionnaire ?

Cela vient peut-être de l'ordi... On a parfois de mauvaises surprises en y faisant tourner des macros mises au point sur PC.

Ou s'agit-il peut-être de version ancienne de Excel , en particulier antérieure à 2003 mais, il me semble qu'à cette date, le dictionnaire existait déjà...

Utiliser un dictionnaire est tellement pratique que je rechigne à monter une usine à gaz pour m'en passer.

Bye !

Lorsque que je regarde le debogage c'est bien la ligne qu'il pointe.

Après comme je ne suis pas un expert là dedans je suis un peu perdu ^^'

Merci pour ton aide gmb en tout cas

j'avais oublié de mettre mon bout de code modifié dsl mais il est tellement mauvais :/

5exo-test-v1.xlsm (17.87 Ko)
dovack a écrit :

Lorsque que je regarde le debogage c'est bien la ligne qu'il pointe.

Quelle ligne ?

Celle la : Set tablo1

Nouvelle version sans dico.

A tester.

Bye !

12exo-test-v3.xlsm (24.32 Ko)

Merci énormément je testerai ça et je pense que ça ira comme logiquement toute les références sont incluses car il n'y a pas de fonctions particulières.

Du coup :

flag c'est bien comme un compteur qui dit si c'est =0 c'est un nouveau nom et si =1 c'est un doublon ?

dovack a écrit :

flag c'est bien comme un compteur qui dit si c'est =0 c'est un nouveau nom et si =1 c'est un doublon ?

Tu as tout compris !

Bye !

Rechercher des sujets similaires à "macro gerer liste doublons debutant"