Chris souhaite compter les cellules contenant la valeur de texte A ou la valeur de texte B, n’importe où dans le texte de la cellule. Si la cellule contient à la fois A et B, elle veut la compter, mais une seule fois. Par exemple, Chris a trois cellules contenant «pépin de pomme», «pommier» et «pépin de pêche» et elle veut connaître le nombre de cellules contenant soit «pomme» ou «graine». (La bonne réponse à renvoyer est 3.)

Il y a plusieurs façons d’aborder cela. En considérant les solutions, je n’ai examiné que les solutions qui évitent les réponses intermédiaires, qui occupent des colonnes supplémentaires. La première solution consiste à utiliser la fonction COUNTIF de cette manière:

=COUNTIF(A1:A9,"apple")+COUNTIF(A1:A9,"seed")

-COUNTIF(A1:A9,"seedapple")-COUNTIF(A1:A9,"appleseed")

La formule compte toutes les cellules contenant soit « pomme », soit « graine »

puis soustrait toutes les cellules contenant «graine» suivi de «pomme»

(les deux mots sont dans la cellule) ou « pomme » suivi de « graine » (les mêmes mots dans l’ordre inverse).

Une autre solution, celle-ci un peu plus courte, repose sur les fonctions COUNTA et FIND, comme illustré ici:

=COUNTA(A1:A9)-SUMPRODUCT(--(ISERROR(FIND("apple",A1:A9)))

* --ISERROR(FIND("seed",A1:A9)))

La formule compte les cellules contenant des valeurs, puis soustrait toutes les cellules qui ne contiennent ni «pomme» ni «graine».

Vous pouvez également, si vous préférez, utiliser l’une des fonctions de base de données d’Excel.

À condition que vous ayez un en-tête de colonne pour vos phrases originales, ce n’est pas si difficile à faire et cela donne la formule la plus courte. Tout ce que vous avez à faire est de créer un tableau de critères correspondant. Par exemple, disons que vos données sont en A1: A9 et que la première cellule de la colonne contient un en-tête tel que « Mes phrases ». Dans une autre colonne, vous devez mettre le même en-tête puis, dans les deux cellules directement en dessous, placer ces deux formules:

apple seed

Les critères spécifient que vous souhaitez faire correspondre toutes les cellules contenant «pomme» ou «graine» dans la cellule. Avec cette configuration (je suppose que vous avez placé le tableau des critères dans D1: D3), vous pouvez utiliser la formule suivante:

=DCOUNTA(A1:A9,1,D1:D3)

Bien sûr, vous pouvez également utiliser une formule matricielle (entrée en appuyant sur Ctrl + Maj + Entrée) pour obtenir votre réponse. Ce qui suit est une de ces formules qui repose, encore une fois, sur les phrases vérifiées pour être en A1: A9:

=SUM(--((ISNUMBER(FIND("apple",A1:A9))+ISNUMBER(FIND("seed",A1:A9)))>0))

Si vous préférez travailler avec des macros, vous pouvez créer une fonction définie par l’utilisateur qui renvoie le décompte pour vous. Voici un exemple de celui qui fonctionnera:

Function FindTwoStrings(rng As Range, s1 As String, _   s2 As String) As Integer     Application.Volatile     If TypeName(rng) <> "Range" Then Exit Function     Dim cell As Range     For Each cell In rng.Cells         If (InStr(1, UCase(cell.Value), UCase(s1), _           vbTextCompare) > 0) Or (InStr(1, UCase(cell.Value), _           UCase(s2), vbTextCompare) > 0) Then _           FindTwoStrings = FindTwoStrings + 1     Next cell End Function

Pour utiliser la fonction, vous pouvez utiliser cette formule dans une cellule:

=FindTwoStrings(A1:A9,"apple","seed")

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (9326) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Checking_for_Either_of_Two_Text_Values ​​[Vérification de l’une des deux valeurs de texte].