Comparaison et mise à jours bases de données

Bonjour,

J'essaye depuis quelques jours de creer une macro en VBA, mais je n'y arrive pas.

Je vais vous décrire ce que je souhaite faire ainsi que mon avancement.

Présentation du probleme

J'ai un fichier excel, où dans la premiere feuille il y a :

  • dans la colonne A : une liste de noms
  • dans la colonne B : un "1" dans quelques cellules qui indiquent que untel a obtenu le niveau 1
  • dans la colonne C : un "1" dans quelques cellules qui indiquent que untel a obtenu le niveau 2

(J'utilise des "1" et non pas des "x" pour ensuite calculer plus facilement le nombre de personne ayant obtenu les niveaux 1 et 2)

Dans la deuxieme feuille il ya dans la colonne A une liste de noms, la plupart étant commun à celle de la premiere feuille, mais il y a quelques nouveaux et d'autres qui n'y sont plus.

Objectif de la macro

Mettre à jour la liste des noms de la feuille 1 grâce à la celle de la feuille 2, tout en gardant les infos(concernant les niveaux 1 et 2) des noms communs aux deux listes.

Mon Raisonnement

Je copie la la colonne A de la feuille 1 en colonne B de la feuille 2.

Je fait une boucle sur l'ensemble des noms colonne B feuille 2.

Ensuite je décompose le probleme en 3 cas :

1°) Les cellules Ai et Bi sont identiques -(noms a conserver)> j'efface la ligne i

2°) La cellule Bi est differente de Ai, Ai-1, Ai+1, Ai+2, Ai-2 (ancien nom à retirer)-> Rechercher le contenu de Bi dans la liste des noms de la feuille 1 -> supprimerla ligne correspondante. Et je supprime la case Bi de la feuille 2, et je remonte toute la colonne B d'une case.

3°)La cellule Bi est différente de Ai (nouveaux nom à ajouter)-> Je copie le nom en Ai au bas de la premiere feuille colonne A, j'éfface le contenu en Ai et je remonte la colonne A d'une cellule

Mon avancement

1°) traité mais je rencontre un pb de boucle infini

2°) Je rencontre des probleme de syntaxe + la macro bloque sur la deuxieme boucle

3°) non traité, mais assez similaire à 2°)

Si vous pouvez me dire ce que vous en pensez et m'aider sa serait super sympa de votre part, je crois que je suis arrivé au bout de mes compétences...

Merci

27classeur1.xlsm (19.31 Ko)

Bonjour

Si j'ai compris

Dans feuil1

  • On enlève les noms qui ne sont absents dans Feuil2
  • On rajoute les noms qui sont nouveaux dans Feuil2

A tester

Ca marche, c'est parfait.

Ton raisonnement est plus simple que le mien et donc plus efficace.

Merci beaucoup

Par contre, si la nouvelle liste est plus courte que l'ancienne, la macro n'efface pas tout les noms à supprimer.

Tu vois ce que je veux dire?

Bonjour

Oui bien vu

remplaces les lignes correspondante par celles-ci

    ' On supprime les infos des noms disparus de la Feuil2
    .Range("A2:A" & NbLg).SpecialCells(xlCellTypeBlanks).Resize(, 4).Delete shift:=xlShiftUp
Rechercher des sujets similaires à "comparaison mise jours bases donnees"