Compter les mots et que les mots dans Excel

Bonjour à tous,

J’ai besoin, dans le cadre de mon métier, de compter des mots.

J’ai voulu utilisé la solution de Word mais le comptage n’est pas du tout adapté. Dans Word, les chiffres sont comptés comme mots ; les symboles également voir même la ponction, si elle est précédée et suivie d’un espace.

En fait, je ne dois compter que les « vrais mots ».

Etant plutôt pas mauvais sur Excel, j’ai construit une formule qui répond quasiment à tous mes besoins :

Je remplace les 36 caractères suivants par un espace (sauf le « - » pour que les noms composés comme tire-bouchon soient compter pour un mot).

, ? ; . : / ! § & ' ( - _ @ ) = 1 2 3 4 5 6 7 8 9 0 € $ £ % + * « » > <

Les formules qui fonctionnent sont copier en fin de message.

Ces formules fonctionnent mais sont lourdes et les plages ne sont pas dynamiques.

J’ai pensé à la fonction DECALER, pour celle concernant la plage mais ça ne marche pas trop bien.

J’ai aussi pensé à nommer ma formule mais, dans ce cas, il faut toujours rester dans le même fichier, voir le même onglet.

Je cherche donc une solution pour les transformer en VBA, afin de créer 2 macros.

Et c’est là où ça coince. Car, si je maîtrise un peu Excel, je n’y connais rien en VBA.

Je suis donc à la recherche d’aide ; si le sujet intéresse quelqu’un, je suis preneur de tout conseil.

Un grand merci à tous

Pour une CELLULE :

=NBCAR(SUPPRESPACE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;",";" ");"?";" ");";";" ");".";" ");":";" ");"/";" ");"!";" ");"§";" ");"&";" ");"'";" ");"(";" ");"-";"");"_";" ");"@";" ");")";" ");"=";" ");"1";" ");"2";" ");"3";" ");"4";" ");"5";" ");"6";" ");"7";" ");"8";" ");"9";" ");"0";" ");"€";" ");"$";" ");"£";" ");"%";" ");"+";" ");"*";" ");"«";" ");"»";" ");">";" ");"<";" ")))-NBCAR(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;",";" ");"?";" ");";";" ");".";" ");":";" ");"/";" ");"!";" ");"§";" ");"&";" ");"'";" ");"(";" ");"-";"");"_";" ");"@";" ");")";" ");"=";" ");"1";" ");"2";" ");"3";" ");"4";" ");"5";" ");"6";" ");"7";" ");"8";" ");"9";" ");"0";" ");"€";" ");"$";" ");"£";" ");"%";" ");"+";" ");"*";" ");"«";" ");"»";" ");">";" ");"<";" ");" ";""))+1

Pour une PLAGE DE CELLULE (fonction matricielle) :

{=SOMME(SI(NBCAR(SUPPRESPACE(A1:D10))=0;0;SI(NBCAR(SUPPRESPACE(A1:D10))=1;0;NBCAR(SUPPRESPACE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1:D10;",";" ");"?";" ");";";" ");".";" ");":";" ");"/";" ");"!";" ");"§";" ");"&";" ");"'";" ");"(";" ");"-";"");"_";" ");"@";" ");")";" ");"=";" ");"1";" ");"2";" ");"3";" ");"4";" ");"5";" ");"6";" ");"7";" ");"8";" ");"9";" ");"0";" ");"€";" ");"$";" ");"£";" ");"%";" ");"+";" ");"*";" ");"«";" ");"»";" ");">";" ");"<";" ")))-NBCAR(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1:D10;",";" ");"?";" ");";";" ");".";" ");":";" ");"/";" ");"!";" ");"§";" ");"&";" ");"'";" ");"(";" ");"-";"");"_";" ");"@";" ");")";" ");"=";" ");"1";" ");"2";" ");"3";" ");"4";" ");"5";" ");"6";" ");"7";" ");"8";" ");"9";" ");"0";" ");"€";" ");"$";" ");"£";" ");"%";" ");"+";" ");"*";" ");"«";" ");"»";" ");">";" ");"<";" ");" ";""))+1)))}

Bonjour @ tous,

un fichier exemple vaut mieux qu'un long discours.

@ + +

Bonjour R@chid,

Tu as bien raison.

Dans le fichier joint, les formules sont dans les cellules A12 (comptage sur 1 cellule) et A14 (comptage sur une plage de cellules.

Bon après midi

Re,

un code VBA, une macro, ou une fonction personnalisée seront plus adaptés à ton cas.

mais par formule je ne trouve pas qu'elle va être une formule simple et légère.

je passe le relais à une âme charitable qui sait faire du VBA vu que c'est pas ma spécialité.

@ + +

Trouver sur internet : http://merrien-analytics.com/blog/compter-nombre-mots-excel/

Je pense qu'il suffit de rajouter dans le code les différentes exceptions que tu veux et cela devrais être vite régler

Le VBA n’étant pas non plus mon point fort, je laisse la main a qui le veux ^^

Bonjour,

Proposition de fonction personnalisée.

eric

Geniel Eriic, ça fonctionne du feu de dieu.

Comment je fais pour l'étendre à tous mes fichiers?

Merci en bonne soirée

Salut Eriiic,

Tout fonctionne parfaitement bien sur tous les fichiers. Un grand merci à toi.

Si le fichier avec la fonction est ouvert, la fonction est disponible pour tous les classeurs.

Si tu veux quelle soit chargée automatiquement avec excel il faut l'enregistrer en xla ou xlam (si c'est un besoin ponctuel ce n'est pas le mieux). Voir ici : http://www.mdf-xlpages.com/modules/publisher/item.php?itemid=5

Dans insérer fonction elle sera dans les fonctions personnalisées.

Si c'est un classeur destiné à être distribué il faut la copier dans un module standard du classeur. Alt+F11 pour voir le code dans le module1. Et même pour toi, c'est sans doute plus simple de la mettre dans tous les classeurs l'utilisant. Sauvegarder en .xlsm

eric

Merci Éric

Je l'ai étendue à tous les fichiers et ça marche nickel

Bonne soirée

Obelix77 = zeduky ?

non

Faire du cross-posting n'est pas forcément bien vu. Tu fais bosser pour rien alors que d'autres auraient bien aimé bénéficier du temps qu'on t'a consacré.

Attend 24-48h sans réponse avant de poster sur un autre forum stp, c'est un coup à être grillé partout.

eric

Rechercher des sujets similaires à "compter mots que"