Calculer une fréquence d'apparition Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
O
Obeida
Membre habitué
Membre habitué
Messages : 109
Appréciations reçues : 2
Inscrit le : 2 novembre 2017
Version d'Excel : 2013 FR

Message par Obeida » 15 mai 2018, 10:29

Bonjour,

Je souhaite calculer puis renvoyer la fréquence d'apparition d'un nom d'une colonne vers une autre feuille.

J'ai dans ma feuille 1 une liste de code et de nom.

Dans ma feuille 2, cette même liste de nom avec une autre colonne, celle du nombre de code correspondant à un nom de la feuille 1.

Ci joint mon fichier avec des exemples. je l'ai fait manuellement car il n'y a pas beaucoup de cellules, mais j'aurais aimé savoir si il y avait une manipultion Excel pour une plus grande plage de données (comme pour le nom CHAT et CHIEN).

Merci d'avance ::~
Test.xlsx
(11.98 Kio) Téléchargé 26 fois
Avatar du membre
DjiDji59430
Membre impliqué
Membre impliqué
Messages : 1'871
Appréciations reçues : 50
Inscrit le : 18 avril 2015
Version d'Excel : 2016 FR

Message par DjiDji59430 » 15 mai 2018, 11:13

Bonjour,

Un essai :
Test_oa.xlsx
(19.17 Kio) Téléchargé 54 fois
Cdlmnt
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'253
Appréciations reçues : 107
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 15 mai 2018, 11:24

Bonjour Obeida, DjiDji,

Une proposition par macro :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim TV As Variant 'd;eclare la variable TV (Tableau des Valeurs)
Dim X As Long 'déclare la variable X (incrément)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
Set PL = OD.Range("A1").CurrentRegion 'définit la plage PL
PL.Offset(1, 0).ClearContents 'efface les anciennes valeurs de la palge PL
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For X = 2 To UBound(TV, 1) 'boucle sur toutes les valeurs en colonne 2 (=> colonne B) du tableu des valeurs (en commençant à la deuxième ligne)
    D(TV(X, 2)) = D(TV(X, 2)) + 1 'alimente le dictionnaire
Next X 'prochaine valeur de la boucle
OD.Range("A2").Resize(D.Count, 1) = Application.Transpose(D.keys) 'renvoie dans A2 les clés du dictionnaire D (nom)
OD.Range("B2").Resize(D.Count, 1) = Application.Transpose(D.items) 'renvoie dans B2 les Items du dictionnaire D (nombre)
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
O
Obeida
Membre habitué
Membre habitué
Messages : 109
Appréciations reçues : 2
Inscrit le : 2 novembre 2017
Version d'Excel : 2013 FR

Message par Obeida » 16 mai 2018, 09:51

Bonjour ThauThème & DjiDji et merci pour votre aide :).
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message