VBAExcel Regrouper certains enr et pas d'autr

Résolu/Fermé
Ménilmuche Messages postés 18 Date d'inscription mardi 15 janvier 2008 Statut Membre Dernière intervention 4 février 2013 - Modifié par Ménilmuche le 12/06/2012 à 15:38
 Menilmuche - 13 juin 2012 à 10:29
Bonjour à tous !

Voici mon souci :
J'ai une base de données de clients de 30 000 enregistrements. Un fichier classique avec nom, adresse, code postal, ville, pays.
Je dois regrouper ceux qui sont à une même adresse, même ville, même code postal, quel qu'en soit le nombre, pour n'en faire qu'un seul enregistrement avec comme libellé du nom : Centre culturel.
Par contre les clients qui sont seuls à une adresse doivent rester tels quels.

Je n'ai pas réussi via l'extraction sans doublon du filtre élaboré. Si quelqu'un pouvait me donner quelques pistes pour utiliser une macro, qui m'éviterait des formules "SI" multiples, cela serait un réel soulagement !

Je travaille sur la version 2000 (si, ça existe encore !!) d'Excel.

Je n'ai pas la solution avec les tris successifs, ni avec les filtres successifs. Même si j'obtiens les enr classés par ville puis par adresse puis par nom, il faut toujours que je fasse manuellement le regroupement des clients qui sont à la même adresse postale. Sur un fichier de 30 000 enr, cela risque de me prendre vraiment beaucoup de temps.

Et si je fais une extraction sur les adresses, le résultat est faux car il existe des adresses identiques dans des villes différentes.

Données/ Sous-total ne m'est d'aucun secours étant donné que je n'ai besoin d'aucun calcul sur les nombre d'enr ou autre fonction de calcul.

Ce dont j'ai besoin, c'est que la base soit lue, qu'à chaque enr exactement semblable dans les champs pays, ville, code postal et adresse, dans le cas où il n'y a qu'un seul enr, il reste tel quel, s'il y a plusieurs enr avec des noms différents, tous ces enr soit remplacés par un seul prenant le nom de "centre culturel".
Je ne vois pas quelle fonction utiliser pour parvenir à ceci.

Voici un exemple du document de départ (Test) :
https://www.cjoint.com/?0FmnyeN9nI9

et ce que je dois obtenir après (Test_résultat) :
https://www.cjoint.com/?0FmnzEYEM8D


Merci d'avance à ceux qui me répondront.

Ménilmuche

2 réponses

bonjour
dans la mesure où les données sont triées comme dans le fichier joint, la macro suivante fonctionne:
Derlig = Range("A" & Rows.Count).End(xlUp).Row

For i = Derlig To 3 Step -1
    If Cells(i, 2) = Cells(i - 1, 2) And Cells(i, 3) = Cells(i - 1, 3) And Cells(i, 4) = Cells(i - 1, 4) Then
        Cells(i - 1, 1) = "Centre culturel"
        Rows(i).Delete
    End If
Next


bonne suite
0
Bonjour Paf !

Merci pour l'intérêt témoigné à mon problème.

La première réponse que j'ai obtenue ne résolvait pas mon souci. Avant que j'obtienne la solution de gbinforme sur le forum bureautique, je pensais m'être trompée de forum et j'ai posté ma question sur le forum programmation. Ma seconde question et la réponse de gbinforme se sont croisées.

C'est vraiment génial d'avoir aussi vite des réponses adéquates et je vous réitère ma profonde gratitude pour votre générosité. J'ai eu un tout petit souci de déclaration de variables dans votre solution, mais je m'en suis sortie rapidement.

Encore mille mercis !

Ménilmuche
0
Pourquoi ouvrir ce sujet sur le forum programmation à une heure où le souci était quasi résolu sur le forum bureautique?
http://www.commentcamarche.net/forum/affich-25360263-excel-regrouper-certains-enr-et-pas-d-autres
0
Re bonjour Paf !

Comme je l'ai signalé dans mon précédent commentaire, ma seconde question s'est croisée avec la solution que m'a donnée gbinforme.

Dès que je me suis rendue compte de mon erreur, j'ai signalé ma seconde question comme étant un doublon.

Ayant reçu un mail m'indiquant que cette seconde demande avait été supprimée, je ne pensais pas recevoir de réponse à partir du forum programmation.

Par contre, je ne sais pas comment indiquer que mon problème est résolu.

Encore merci pour votre aide si efficace !

Ménilmuche
0