Création Macro pour Nettoyage BDD

Teteaqueue

XLDnaute Nouveau
Bonjour à toutes et à tous,

J'ai à l'heure actuelle à ma disposition plusieurs BDD Excel, de taille plus ou moins variables (parfois plus de 10K lignes), qui sont, disons le clairement, un vrai b*****.

En effet, il y a un nombre de lignes doublons assez impressionnant, que je supprime à la mano. Vu le temps que je perds, je me tourne vers vous pour un peu d'aide qui me serait vraiment utile.

Cette BDD contient les coordonnées de personnes (nom, prénom, adresse...) ayant bénéficié d'offres promo. Le fichier a été manipulé par plusieurs personnes, d'où le nombre de lignes parfois vides, parfois incomplètes que je dois supprimer. Malgré un certain nombre de tri que j'ai pu faire, il n'y a malheureusement pas de "règles" dans la saisie de données. Je n'ai donc pas la possibilité de supprimer de manière efficace les déchets.

Voici donc la macro que j'aimerais créer (mais je n'ai pas les connaissances pour) et qui m'aiderait franchement:

-Le programme "part" de la 1ère ligne et cherche dans le fichier les lignes où NOM et PRENOM et ADR1 sont identiques.
-Le programme "s'arrête" alors et cherche dans les lignes sélectionnées si le champ "MONTANT DACHAT" ou "MONTANT REMBOURSE" est rempli.
-Si c'est le cas, la ligne est conservée (et éventuellement marquée d'une couleur pour dire si c'est le prix produit, ou le code promo, ou les deux qui sont remplis).
-Si ce n'est pas le cas, la ligne est supprimée.

Et ensuite il recommence, et ainsi de suite.

Voilà ce que j'aimerais mettre en place (expliqué avec mes mots :)).

Pour toute information supplémentaire, n'hésitez pas.

Vous trouverez en pièce jointe un fichier Excel avec un extrait de la BDD.

Merci d'avance pour votre aide.
 

Pièces jointes

  • BDD Macro Tri.xls
    16 KB · Affichages: 71

JCGL

XLDnaute Barbatruc
Re : Création Macro pour Nettoyage BDD

Bonjour à tous,

Un essai avec :

Code:
Option Explicit
Sub DelLigneVide()
Dim DerLig
Dim X%

DerLig = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = 0
For X = DerLig To 1 Step -1
If IsEmpty(Range("D" & X)) And IsEmpty(Range("E" & X)) Then Rows(X).Delete
Next X
End Sub
A+ à tous
 

Pièces jointes

  • JC BDD Macro Tri.zip
    9.3 KB · Affichages: 47

EricD01

XLDnaute Junior
Re : Création Macro pour Nettoyage BDD

Salut à toi...

Si j'i bien compris ce que tu voulais il suffit de supprimer toutes les lignes ou les colonnes autres que NOM ne sont pas remplies...peu importe donc dans l'état actuel des choses que les noms existent déja ou pas en fait...

J'ai donc modifié ton fichier regarde si cela te convient et en cas de problème fais le moi savoir et je tenterais de le modifié ou quelqu'un d'autre s'en chargera içi je n'en doute pas...

dans l'attente, bye bye et à plus...
 

Pièces jointes

  • BDD Macro Tri_modifié.xls
    36.5 KB · Affichages: 71
Dernière édition:

Teteaqueue

XLDnaute Nouveau
Re : Création Macro pour Nettoyage BDD

SUPER C GENIAL CA MARCHE IMPEC TA MACRO JCGL !!!! Exactement ce que je voulais.

Et merci à toi aussi EricD01, mais il se trouve que les lignes où seul le nom est rempli ont aussi leurs champs MONTANT DACHAT et MONTANT REMBOURSE vides.

Du coup, la macro de JCGL les supprime aussi, d'une pierre deux coups !

Merci encore, ca va me permettre d'aller plus vite du coup !
 

Teteaqueue

XLDnaute Nouveau
Re : Création Macro pour Nettoyage BDD

Je me permets d'abuser encore un peu de votre gentillesse pour voir s'il serait possible d'aller un peu plus loin en créant une deuxième macro pour un deuxième travail sur la BDD.

En effet, certaines personnes ont acheté plusieurs fois, et j'aimerais rajouter les colonnes "MONTANT DACHAT 2", "MONTANT REMBOURSE 2", "MONTANT DACHAT 3", "MONTANT REMBOURSE 3". Il faut savoir que ces montants correspondent à l'achat d'un produit à chaque fois (il y a par conséquent des colonnes PRODUIT 1, PRODUIT 2 et PRODUIT 3 présentes dans ma BDD), c'est pourquoi je ne veux pas de notion de total de montants ici.

En résumé, ce que je voudrais faire:

-Le programme regarde ma ma première colonne doublons (se référer au fichier excel pour voir à quoi elle correspond).
-Si la cellule de la ligne correspondante est égalé à 1, il copie les cellules de la ligne correspondantes à PRODUIT 1, MONTANT DACHAT 1 et MONTANT REMBOURSE 1 sur la ligne d'au-dessus, dans les cellules correspondantes de PRODUIT 2, MONTANT DACHAT 2 et MONTANT REMBOURSE 2, puis supprime la ligne
-Dans le cas d'une ligne encore en dessous avec cellule de la colonne doublons égale à 1 (ce qui signifie que la personne a acheté un troisième produit), il fait la même chose mais il faut rajouter une condition afin que les valeurs précédemment copiées ne soient pas écrasées, donc rajouter une condition: si les cellules PRODUIT 2, MONTANT DACHAT 2 et MONTANT REMBOURSE 2 de la ligne au-dessus sont remplies, alors copier les nouvelles valeurs dans PRODUIT 3, MONTANT DACHAT 3 et MONTANT REMBOURSE 3

Pour éclairer mes propos qui peuvent paraître obscurs au premier abord, j'ai joint un fichier excel pour plus de détails.

Merci encore pour votre patience !
 

Pièces jointes

  • BDD Macro Tri v2.xls
    15.5 KB · Affichages: 65

Teteaqueue

XLDnaute Nouveau
Re : Création Macro pour Nettoyage BDD

J'oubliais une chose: puisque malheureuseument il y a encore quelque "vrais" doublons, à savoir deux fois la même ligne renseignée (les champs PRODUIT 1, MONTANT DACAHT 1 et MONTANT REMBOURSE 1 de la ligne n sont identiques aux champs PRODUIT 1, MONTANT DACAHT 1 et MONTANT REMBOURSE 1 de la ligne n+1, pour un même individu bien entendu), il faudrait ne pas copier cela dans les champs PRODUIT 2, MONTANT DACHAT 2 et MONTANT REMBOURSE 2.

Il faudrait donc une vérification avant de commencer le "travail" de la macro.

Cdt,
 

Discussions similaires

Statistiques des forums

Discussions
312 414
Messages
2 088 228
Membres
103 775
dernier inscrit
CriCri92