VBA : Comment compter les cellules avec un texte spécifique



Vous pouvez utiliser la syntaxe de base suivante pour compter le nombre de cellules d’une plage contenant un texte spécifique à l’aide de VBA :

Sub CountCellsWithText()
    Range("D2") = WorksheetFunction.CountIf(Range("A2:A13"), "*avs*")
End Sub

Cet exemple particulier compte le nombre de cellules dans la plage A2:A13 qui contiennent « avs », puis attribue le résultat à la cellule D2 .

Remarque : Les astérisques ( * ) sont utilisés comme caractères génériques dans la fonction Countif .

Si vous souhaitez plutôt afficher le nombre de cellules dans une boîte de message, vous pouvez utiliser la syntaxe suivante :

Sub CountCellsWithText()

    Dim cellCount As Integer
    
    'Calculate number of cells that contain 'avs'
    cellCount = WorksheetFunction.CountIf(Range("A2:A13"), "*avs*")
    
    'Display the result
    MsgBox "Cells that contain avs: " & cellCount
End Sub

Les exemples suivants montrent comment utiliser chacune de ces méthodes en pratique avec l’ensemble de données suivant dans Excel qui contient des informations sur divers joueurs de basket-ball :

Exemple 1 : compter les cellules avec un texte spécifique à l’aide de VBA et afficher les résultats dans la cellule

Supposons que nous souhaitions compter le nombre de cellules contenant « avs » dans le nom de l’équipe et afficher les résultats dans une cellule spécifique.

Nous pouvons créer la macro suivante pour ce faire :

Sub CountCellsWithText()
    Range("D2") = WorksheetFunction.CountIf(Range("A2:A13"), "*avs*")
End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Notez que la cellule D2 contient la valeur 5 .

Cela nous indique qu’il y a 5 cellules dans la plage A2:A13 qui contiennent « avs » dans le nom de l’équipe.

Exemple 2 : compter les cellules avec un texte spécifique à l’aide de VBA et afficher les résultats dans la boîte de message

Supposons que nous souhaitions plutôt compter le nombre de cellules contenant « avs » et afficher les résultats dans une boîte de message.

Nous pouvons créer la macro suivante pour ce faire :

Sub CountCellsWithText()

    Dim cellCount As Integer
    
    'Calculate number of cells that contain 'avs'
    cellCount = WorksheetFunction.CountIf(Range("A2:A13"), "*avs*")
    
    'Display the result
    MsgBox "Cells that contain avs: " & cellCount
End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

La boîte de message nous indique qu’il y a 5 cellules qui contiennent « avs » dans le nom de l’équipe.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :

VBA : une formule simple pour « Si la cellule contient »
VBA : Comment compter les occurrences de caractères dans une chaîne
VBA : comment vérifier si une chaîne contient une autre chaîne

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *