Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/10/2011, 16h55   #1
Invité de passage
 
Homme Jonathan
Inscription : octobre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Jonathan
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 21
Points : 4
Points : 4
Par défaut Occurence texte dans plage

Bonjour à tout le monde,

Je dois créer une fonction afin de calculer le nombre de fois où un texte est présent dans une plage de cellules.

J'ai codé ça:
Code :
1
2
3
Function Comptetxt(Liste As Range, Nom As String) As Integer
    Comptetxt = Application.CountIf(Liste, "=" & Nom)
End Function
, mais cette fonction me donne le nombre de cellules où le texte se reproduit exactement or je cherche le texte à l'intérieur des plages.
Je m'explique, si je recherche le prénom "Pierre", j'aimerai que la cellule "Jean Pierre" soit comptabilisée.

Est-ce que quelqu'un a une idée ?
Merci d'avance.
JonathanF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 17h28   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
Function Comptetxt(Liste As Range, Nom As String) As Integer
Comptetxt = Application.CountIf(Liste, "*" & Nom & "*")
End Function
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 17h38   #3
Invité de passage
 
Homme Jonathan
Inscription : octobre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Jonathan
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 21
Points : 4
Points : 4
Bonjour Mercatog,
Merci pour ta réponse mais par compte maintenant la macro me comptabilise aussi la série de caractères à l'intérieur d'un mot.
Exemple toujours avec "Pierre": on me comptabilise "Pierrette" ce que je ne veux pas.

Quel est le but des "*" ?
Merci d'avance.
JonathanF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 17h44   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
* est un caractère générique qui remplace toute chaine
Sinon, on compte le mot pile poile, le mot avec espace après et mot avec espace avant
Code :
1
2
3
Function Comptetxt(Liste As Range, Nom As String) As Integer
Comptetxt = Application.CountIf(Liste, Nom) + Application.CountIf(Liste, "* " & Nom) + Application.CountIf(Liste, Nom & " *")
End Function
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 18h13   #5
Invité de passage
 
Homme Jonathan
Inscription : octobre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme Jonathan
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 21
Points : 4
Points : 4
Mercatog,

Merci pour ton aide ça fonctionne !
JonathanF est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h57.


 
 
 
 
Partenaires

Hébergement Web