La fonction CountIf() VBA

Fermé
Tempio - 21 avril 2011 à 12:25
Tempio Messages postés 1 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 21 avril 2011 - 21 avril 2011 à 17:13
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.

1 réponse

ccm81 Messages postés 10902 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 18 novembre 2024 2 425
Modifié par ccm81 le 21/04/2011 à 16:58
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
0
Tempio Messages postés 1 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 21 avril 2011
21 avril 2011 à 17:13
Merci à toi ccm81, je vais voir si c'est possible d'adapter ce script au mien. A+
0