Analayse de données dans un tableau excel

  • Initiateur de la discussion Initiateur de la discussion Mara_des_bois
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Mara_des_bois

Guest
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
 
Re : Analayse de données dans un tableau excel

Merci Dranreb pour votre réponse car c'est bien ce que je souhaite faire, mais je n'ai posté qu'un extrait de mon tableau sur le forum.

Serait-il alors possible d'avoir quelques explications (niveau débutant) pour que je puisse refaire votre démarche avec plus de données.

Merci d'avance 😀
 
Re : Analayse de données dans un tableau excel

Oui, Pour la mise en oeuvre c'est très simple:
Il suffit que la plage comportant les noms d'animaux s'appelle "TabAnim" et que la première ligne de la plage devant recevoir la Récap s'appelle "Récap"
Le traitement est effectué par ceci écrit dans le module VBA associé à la feuille:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TVal As Variant, TIdx() As Long, LMax As Long, L As Long, CMax As Long, C As Long, ArgB As String
Dim TRés() As Variant, Ls As Long, N As Long, Le As Long, Nbr As Long, Fini As Boolean
If Intersect(Me.[TabAnim], Target) Is Nothing Then Exit Sub
TVal = Me.[TabAnim].Value: LMax = UBound(TVal, 1): CMax = UBound(TVal, 2)
With New Indexeur
   .Init TIdx, 0, LMax * CMax - 1
   While .Actif
      If .BChange Then ArgB = TVal(.B \ CMax + 1, .B Mod CMax + 1)
      .ASupB = TVal(.A \ CMax + 1, .A Mod CMax + 1) > ArgB: Wend: End With
ReDim TRés(1 To LMax * CMax, 1 To 2) As Variant
Ls = 1: N = 1: Le = TIdx(1)
Do: TRés(Ls, 1) = TVal(Le \ CMax + 1, Le Mod CMax + 1): Nbr = 1
   Do: N = N + 1: Fini = N > UBound(TIdx): If Fini Then Exit Do
      Le = TIdx(N): If TVal(Le \ CMax + 1, Le Mod CMax + 1) <> TRés(Ls, 1) Then Exit Do
      Nbr = Nbr + 1: Loop
   TRés(Ls, 2) = Nbr: If Fini Then Exit Do
   If TRés(Ls, 1) <> "" Then Ls = Ls + 1
   Loop
Me.[Récap].Resize(LMax * CMax).ClearContents
Me.[Récap].Resize(Ls).Value = TRés
End Sub
Il conviendrait de supprimer "Me." devant les 2 dernières instructions si la récap devait être produite sur une autre feuille, mieux, de le remplacer par le nom VBA de cette feuille.
Le système emploie de plus un module de classe nommé "Indexeur"
Il n'y aurait guère d'adaptation à faire pour d'autres usages, si ce n'est de bien mêtre en bonne place ces codes exécutables.
À+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

J
  • Question Question
Réponses
2
Affichages
612
E
Réponses
23
Affichages
2 K
EveDesLys
E
S
Réponses
0
Affichages
973
shelbie
S
C
Réponses
4
Affichages
2 K
clem!
C
A
Réponses
33
Affichages
4 K
Aurel60540
A
Retour