La fonction CountIf() VBA
Tempio
-
Tempio Messages postés 1 Statut Membre -
Tempio Messages postés 1 Statut Membre -
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 et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Fonction remplacer sur word - 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
Tempio
Messages postés
1
Statut
Membre
Merci à toi ccm81, je vais voir si c'est possible d'adapter ce script au mien. A+