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
P
Pablito
Membre habitué
Membre habitué
Messages : 120
Appréciations reçues : 2
Inscrit le : 2 novembre 2017
Version d'Excel : 2013 FR

Message par Pablito » 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é 28 fois
Avatar du membre
DjiDji59430
Membre impliqué
Membre impliqué
Messages : 1'949
Appréciations reçues : 57
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é 60 fois
Cdlmnt
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'374
Appréciations reçues : 118
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...
P
Pablito
Membre habitué
Membre habitué
Messages : 120
Appréciations reçues : 2
Inscrit le : 2 novembre 2017
Version d'Excel : 2013 FR

Message par Pablito » 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