La fonction CountIf() VBA
Tempio
-
Tempio -
Tempio -
Bonjour,
J'ai un problème pour utiliser la fonction CountIf(). En fait j'aimerais pouvoir compter le nombre de personnes appartenant à une entité (service) : par exemple "DG / CA /MED". Comme vous voyez ma chaine de caractère contient des espaces. Mais lorsque j'utilise la fonction CountIf() ca se passe bien jusqu'ici :
For Each z1 In zone1
Application.CountIf(z1.Offset(0, 23), "*DG" & "*") then x1 = x1 + 1
Next z1
Mais mon problème est que j'ai aussi des entités comme : "DGA / DT / TP" par exemple et donc ma fonction me compte également ces personnes alors que "DG" est différent de "DGA". S'il vous plait, comment puis je faire la différence entre les deux ? Merci d'avance.
J'ai un problème pour utiliser la fonction CountIf(). En fait j'aimerais pouvoir compter le nombre de personnes appartenant à une entité (service) : par exemple "DG / CA /MED". Comme vous voyez ma chaine de caractère contient des espaces. Mais lorsque j'utilise la fonction CountIf() ca se passe bien jusqu'ici :
For Each z1 In zone1
Application.CountIf(z1.Offset(0, 23), "*DG" & "*") then x1 = x1 + 1
Next z1
Mais mon problème est que j'ai aussi des entités comme : "DGA / DT / TP" par exemple et donc ma fonction me compte également ces personnes alors que "DG" est différent de "DGA". S'il vous plait, comment puis je faire la différence entre les deux ? Merci d'avance.
1 réponse
-
bonjour
en supposant que le caractere qui suit la cle (DG) n'est pas une lettre majuscule quelque chose comme ça
x1 = 0 lcle = Len(cle) For Each z1 In zone1 rangdep = InStr(1, z1.Value, cle) If rangdep > 0 Then If Mid(z1.Value, rangdep, lcle) = cle And (Asc(Mid(z1.Value, rangdep + lcle, 1)) < 65 Or Asc(Mid(z1.Value, rangdep + lcle, 1)) > 92) Then x1 = x1 + 1 End If End If Next z1
bonne suite