Générer une liste de valeurs uniques avec effectif

Bonjour à tous,

Je dispose d'un fichier répertoriant des parcelles et leurs propriétaires, où chaque ligne correspond à un couple propriétaire/parcelle sur un secteur d'environ 1 000 km².

Sachant qu'une parcelle peut avoir plusieurs propriétaires, cela représente 263 460 couples (donc lignes) pour 150 000 parcelles.

Mon but est d'obtenir une liste des numéros de parcelle et d'obtenir le nombre de propriétaires pour chacune d'entre elles, l'idéal étant d'obtenir le résultat sous forme d'une colonne "Numero_Parcelle" et une colonne "Nombre_Proprietaires" sur une autre feuille dans le même classeur.

Pour illustrer cela, je vous joins un extrait du tableau avec la colonne "Numero_Parcelle" sur 4 communes (environ 26 000 lignes, soit environ 10% du tableau de base), sachant que la colonne "Numero_Parcelle" ne se trouve pas en A dans le tableau de base.

Je suis preneur de vos propositions, que ce soit en macro ou en VBA.

En vous remerciant d'avance de vos réponses.

Bien cordialement,

Bonjour,

On ne voit que la colonne A, dans ton Fichier. Ou j'ai mal vu ?

Bonjour,

C'est bien ça, je n'allais pas mettre le reste du tableau sachant que ce sont des données sensibles (parcelles et propriétaires) et qu'elles ne servent pas a obtenir le résultat désiré.

Bonjour,

Avec macro (mais tu peux faire l'opération de façon entièrement manuelle) :

Sub DénombrePropr_Parcelle()
    Dim n&, i&
    Application.ScreenUpdating = False
    [A1:A60000].AdvancedFilter xlFilterCopy, , [F1], True
    n = Range("F60000").End(xlUp).Row
    'For i = 2 To n
        'Cells(i, 7).Value = Application.CountIf(Range("A2:A60000"), Cells(i, 6))
    'Next i
    Range("G2").Formula = "=COUNTIF(A2:A60000,F2)"
    Range("G2").AutoFill Range("G2:G" & n)
    Application.ScreenUpdating = True
End Sub

Filtrage avancé de ta liste de parcelle pour en produire en F une liste sans doublons.

Utilisation de NB.SI pour dénombrer...

2 versions : -celle active actuellement dans la macro : on introduit formule en G (semble un peu plus rapide que l'autre).

-on n'introduit pas la formule mais on affecte directement le résultat (pour faire basculer la macro vers cette méthode, enlever les apostrophes devant les 3 lignes de la boucle For i....Next i, et en mettre devant les 2 lignes qui suivent commençant par Range("G2"))

Sois patient, cela met un certain temps.

Pour tester, cliquer sur bouton.

Cordialement.

tu fais un TCD, c'est fait pour ça.

tu auras la liste des parcelles, avec chacune la liste des proprio et leur nombre.

edit : Bonjour Ferrand

Bonjour à tous,

La macro proposée par MFerrand fonctionne parfaitement.

J'ai donc copié la colonne "Numero_Parcelle" de mon tableau de base dans son intégralité et l'ai collée en colonne A dans le fichier macro proposé par MFerrand en conservant bien le contenu "Numero_Parcelle" en A1.

J'ai ensuite cliqué sur le bouton "Nb propriétaires/parcelle" et laissé tourner l'ordinateur pendant une petite heure avant d'obtenir le résultat, que j'ai copié ensuite en valeurs dans un tableur classique.

Merci beaucoup. Problème résolu !

Ah oui j'oubliais !

Pour obtenir liste de valeurs uniques en F dans le fichier macro de MFerrand, je suis passé par la génération d'un tableau croisé dynamique (TCD) à partir de mon tableau de base dans une autre feuille.

J'ai ensuite copié cette liste en colonne F du fichier macro en conservant en F1 le contenu "Numero_Parcelle".

Encore merci à tous et à bientôt !

Rechercher des sujets similaires à "generer liste valeurs uniques effectif"