La fonction CountIf() VBA
Tempio
-
Utilisateur anonyme -
Utilisateur anonyme -
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.
A voir également:
- La fonction CountIf() VBA
- Fonction si ou - Guide
- Fonction remplacer sur word - Guide
- Fonction miroir - Guide
- Excel compter cellule couleur sans vba - Guide
- Fonction moyenne excel - Guide
1 réponse
bonjour
en supposant que le caractere qui suit la cle (DG) n'est pas une lettre majuscule quelque chose comme ça
bonne suite
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
Utilisateur anonyme
Merci à toi ccm81, je vais voir si c'est possible d'adapter ce script au mien. A+