Excel-Gérer_doublons_tableau [Résolu]

Résolu/Fermé
Utilisateur anonyme - Modifié par Mara_des_bois le 29/04/2011 à 13:53
Mike-31 Messages postés 18114 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 4 décembre 2022 - 30 avril 2011 à 16:38
Bonjour à tous,

Je souhaiterais savoir comment à partir d'un tableau de données comment celui-ci :

col1 col2 col3
Tigre Lion Panda
Renard Tigre Panda
Tigre Lion Ours polaire
Écureuil Tigre Dauphin
Renard Cheval Chat


Je puisse extraire la liste des animaux apparaissant dans le tableau sans répéter ceux qui apparaissent plusieurs fois et si possible de les comptabiliser.

Exemple :
col1 col2
Tigre 4
Écureuil 1
Renard 2
Cheval 1
Lion 2
...

Merci d'avance pour votre aide.

Bonne journée
A voir également:

5 réponses

Vaucluse Messages postés 26495 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 8 avril 2022 6 285
28 avril 2011 à 15:05
Re bonjour

je me permet d'intervenir avec ce que je sais déjà de votre sujet, afin que personne ne se trompe de direction.
Il est sans doute nécessaire de passer par une macro, vu que le domaine à traiter concerne au départ 10 colonnes de 200 lignes chacune, et que ce tableau est évolutif et destiné à s'agrandir.
Pour ma part, les macros ne sont pas mon domaine, mais je pense que cette précision était utile si vous ne voulez pas retrouver les mêmes propositions non recevables.

Je ne saurais que faire le décompte de chaque référence lorsque vous en aurez établit la liste exhaustive...mais ça, ce n'est surement pas le plus difficile.

Bonne chance, vous pouvez faire confiance au spécialistes de CCM.

Crdlmnt



1
Utilisateur anonyme
28 avril 2011 à 15:11
Merci Vaucluse pour le coup de pouce car mon sujet n'est pas facile à expliquer :)
0
Merci Mike-31 pour ta solution qui sera fort utile pour d'autre utilisateur :)

De mon côté j'ai aussi trouvé une solution sans utiliser VBA mais simplement les fonctions proposées par Excel dans une feuille parallèle à mon tableau de données (monficher) :

* Pour trouver les différents caractères
=SI(ESTERREUR(EQUIV(monfichier!B3;$C$2:C2;0));monfichier!B3;"")

* Pour comptabiliser les caractères
=SI($C3<>"";NB.SI(monfichie!B:B;$C3);"")

Que j'étends sur mes différentes colonnes de "mon fichier" puis ensuite je calcule les totaux.

Je sais pas si mon explication est très claire mais si ma solution intéresse quelqu'un je peux rentrer plus dans les détails.

Bonne journée à tous
0
Mike-31 Messages postés 18114 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 4 décembre 2022 5 017
30 avril 2011 à 16:38
Re,

Si ton problème est résolu, tu voudras bien nous le confirmer que l'on mette le statut de la discussion en résolu
ou doit on te proposer d'autres codes

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18114 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 4 décembre 2022 5 017
29 avril 2011 à 13:29
Salut,

Une approche en VBA, mais je pense faire plus simple avec colonne intermédiaire

Sub test()
Dim ValeurRecherche, RangePlage
Dim MaPlage As Range
Dim i As Integer, DerniereLigne As Integer
Dim La_Valeur As String
'Application.ScreenUpdating = False
Range(Cells(2, 8), Cells(100, 9)).ClearContents
DerniereLigne = Cells(65536, 8).End(xlUp).Row
If DerniereLigne < 2 Then DerniereLigne = 2
Range(Cells(2, 8), Cells(DerniereLigne, 9)).ClearContents
Set MonDico = CreateObject("Scripting.Dictionary")
RangePlage = Range(Cells(1, 1), Cells(8, 3)).Address
Set MaPlage = Range(Cells(1, 1), Cells(8, 3))
For Each ValeurRecherche In Application.Sheets(ActiveSheet.Name).Range(RangePlage)
If Not MonDico.Exists(ValeurRecherche.Value) And ValeurRecherche.Value <> "" Then
MonDico.Add ValeurRecherche.Value, ValeurRecherche.Value
End If
Next ValeurRecherche
ActiveSheet.Cells(2, 8).Resize(MonDico.Count, 1) = Application.Transpose(MonDico.Items)
DerniereLigne = Cells(2, 8).End(xlDown).Row
Range("H2:H" & DerniereLigne).Select
With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields
.Clear
.Add Key:=Cells(2, 8), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort
.SetRange Range("H2:H" & DerniereLigne)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
For i = 2 To DerniereLigne
La_Valeur = Cells(i, 8).Value
Cells(i, 9).Value = WorksheetFunction.CountIf(MaPlage, La_Valeur)
Next i
'Application.Goto Range("A1"), True
End Sub

-1