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)))}