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 -
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
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:
- Excel-Gérer_doublons_tableau [Résolu]
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
5 réponses
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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