Résumer des données à l’aide de la fonction COUNTIF, Excel VBA

Résumer des données à l’aide de la fonction COUNTIF, Excel VBA

Voici une explication détaillée et le code VBA pour résumer des données à laide de la fonction COUNTIF dans Excel, ainsi quune explication étape par étape.
Objectif :
Le but est de résumer les données à laide de la fonction COUNTIF, qui permet de compter combien de fois une condition spécifique est remplie dans une plage de cellules.
Explication de la fonction COUNTIF :

  • COUNTIF(plage, critère) :
  • plage : La plage de cellules où vous souhaitez appliquer la condition.
  • critère : Le critère à tester, cela peut être un nombre, un texte ou une expression logique.

Par exemple, si vous voulez compter combien de fois la valeur « Pomme » apparaît dans une liste, la formule serait la suivante :
=COUNTIF(A2 :A10, « Pomme »)
Dans VBA, nous pouvons automatiser ce processus pour plusieurs critères ou plages de données.
Objectif :
Nous allons créer un code VBA qui résume un jeu de données en comptant le nombre doccurrences des différentes valeurs dans une colonne donnée, puis afficher ces comptages dans une autre colonne.
Code VBA étape par étape

Sub ResumerDonneesAvecCountIf()
    ' Déclaration des variables nécessaires
    Dim ws As Worksheet
    Dim plageDonnees As Range
    Dim plageRésumé As Range
    Dim plageCritères As Range
    Dim dernièreLigne As Long
    Dim ligneRésumé As Long
    Dim critère As String
    Dim résultatComptage As Long
    ' Définir la feuille de travail où se trouvent les données (vous pouvez changer le nom de la feuille si nécessaire)
    Set ws = ThisWorkbook.Sheets("Feuil1")
    ' Trouver la dernière ligne de la colonne des données (en supposant que les données sont dans la colonne A)
    dernièreLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    ' Définir la plage des données (de A2 à la dernière ligne de données dans la colonne A)
    Set plageDonnees = ws.Range("A2:A" & dernièreLigne)
    ' Définir la plage de résumé (là où nous afficherons les résultats, à partir de la colonne C)
    Set plageRésumé = ws.Range("C2:C" & dernièreLigne)
    ' Effacer les anciens résultats de résumé dans la plage de résumé (colonne C)
    plageRésumé.ClearContents
    ' Définir la ligne de résumé initiale
    ligneRésumé = 2
    ' Parcourir chaque valeur unique dans la plage des données
    Dim cellule As Range
    Dim valeursUniq As Collection
    Set valeursUniq = New Collection
    On Error Resume Next ' Cela permet d'ignorer les erreurs lorsqu'on ajoute des valeurs dupliquées
    ' Ajouter les valeurs uniques de la plage des données à la collection
    For Each cellule In plageDonnees
        valeursUniq.Add cellule.Value, CStr(cellule.Value) ' Utilisation de CStr pour garantir l'unicité comme clé
    Next cellule
    On Error GoTo 0 ' Désactiver l'ignorance des erreurs
    ' Parcourir les valeurs uniques et calculer le comptage pour chacune
    For Each critère In valeursUniq
        ' Compter les occurrences de la valeur unique dans la plage des données
        résultatComptage = Application.WorksheetFunction.CountIf(plageDonnees, critère)
        ' Afficher les résultats dans la plage de résumé (colonne C pour les valeurs, colonne D pour les comptages)
        ws.Cells(ligneRésumé, 3).Value = critère ' Afficher la valeur unique dans la colonne C
        ws.Cells(ligneRésumé, 4).Value = résultatComptage ' Afficher le résultat du comptage dans la colonne D
        ' Passer à la ligne suivante dans le résumé
        ligneRésumé = ligneRésumé + 1
    Next critère
End Sub

Explication détaillée :
1. Déclaration des variables :

  • ws : Représente la feuille de travail où se trouvent les données (ici, « Feuil1 »).
  • plageDonnees : La plage de cellules contenant les données à résumer (ici, la colonne A, de A2 à la dernière ligne).
  • plageRésumé : La plage où nous afficherons les résultats du résumé. Les résultats seront affichés à partir de la colonne C.
  • plageCritères : Nous n’avons pas besoin d’une plage de critères séparée ici, car nous travaillons directement avec les valeurs uniques dans plageDonnees.
  • dernièreLigne : Cette variable permet de déterminer dynamiquement la dernière ligne de données dans la colonne A, afin que le script fonctionne pour des jeux de données de tailles variables.
  • ligneRésumé : Cela permet de suivre sur quelle ligne nous devons afficher les résultats dans la section de résumé.

2. Identifier la dernière ligne :

  • La ligne dernièreLigne = ws.Cells(ws.Rows.Count, « A »).End(xlUp).Row identifie la dernière ligne de données dans la colonne A, ce qui garantit que la plage des données est bien capturée.

3. Définir la plage des données :

  • Nous définissons la plageDonnees de A2 à la dernière ligne de données dans la colonne A. C’est là que se trouvent les données originales à résumer.

4. Préparer la plage de résumé :

  • Nous spécifions la plage où le résumé sera affiché (à partir de la colonne C).

5. Effacer les anciennes données de résumé :

  • Avant de remplir les nouveaux résultats, nous effaçons tout contenu précédent dans la plage de résumé avec plageRésumé.ClearContents.

6. Capturer les valeurs uniques :

  • Nous utilisons un objet Collection pour capturer les valeurs uniques de la plage des données. Les collections ignorent automatiquement les doublons, ce qui nous évite de vérifier manuellement l’unicité.

7. Compter les occurrences :

  • Pour chaque valeur unique, nous utilisons la fonction COUNTIF dans VBA (Application.WorksheetFunction.CountIf) pour compter combien de fois cette valeur apparaît dans plageDonnees.

8. Afficher les résultats :

  • Pour chaque valeur unique, nous affichons la valeur dans la colonne C et le résultat du comptage dans la colonne D. La variable ligneRésumé garde la trace de la ligne actuelle pour l’affichage.

9. Répéter pour toutes les valeurs uniques :

  • Ce processus est répété pour toutes les valeurs uniques dans la plage des données, et le résumé est affiché dans les colonnes C et D.

Comment exécuter le code :
1. Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA dans Excel.
2. Allez dans Insertion > Module pour créer un nouveau module.
3. Copiez le code dans le module.
4. Appuyez sur F5 ou allez dans Exécuter > Exécuter Sub/UserForm pour exécuter le code.
Exemple :
Supposons que vous ayez les données suivantes dans la colonne A :

A
Pomme
Banane
Pomme
Orange
Banane
Pomme
Pomme

Après avoir exécuté la macro, le résumé sera affiché comme suit :

C D
Pomme 4
Banane 2
Orange 1

La macro a compté combien de fois chaque élément apparaît dans la colonne A et a affiché le résultat dans les colonnes C et D.
Conclusion :
Ce code VBA permet de résumer efficacement les données en comptant le nombre d’occurrences de chaque valeur unique dans une plage, en utilisant la fonction COUNTIF. Il fonctionne de manière dynamique, s’adaptant à la taille du jeu de données, et affiche le résumé dans une nouvelle section de la feuille de calcul.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x