Excel-Gérer_doublons_tableau [Résolu]

Résolu
Utilisateur anonyme -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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

5 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. Utilisateur anonyme
     
    Merci Vaucluse pour le coup de pouce car mon sujet n'est pas facile à expliquer :)
    0
  3. Utilisateur anonyme
     
    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
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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