Bonjour,
J'ai une colonne de plusieurs centaines de lignes contenant une phrase chacune.
Je voudrais que s'inscrive sur une colonne à droite dans chaque cellule correspondant à une phrase le nombre de mots contenus dans cette phrase.
-----
Bonjour,
J'ai une colonne de plusieurs centaines de lignes contenant une phrase chacune.
Je voudrais que s'inscrive sur une colonne à droite dans chaque cellule correspondant à une phrase le nombre de mots contenus dans cette phrase.
Salut,
Il "suffit" de faire une boucle (for par exmple) qui, sur chacune des lignes de ta colonne compte le nombre d'espace entre les mots. Le nombre de mots est alors égal au nombre d'espace+1 et il suffit de l'ecrire dans la deuxième colonne. Pour ce qui est de l'algo je te le laisse créer, il n'y a pas ,je pense, de difficultés.
Cordialement
Merci pour la réponse.
Mais je suis débutant-débutant.
Je ne sais pas écrire une macro.
D'habitude, je me sers de la souris et du clavier (sous word), mais cette fois-ci, je n'y arrive pas.
J'ai eu la solution d'un ami qui m'a répondu entre temps.
A coller dans une cellule :
=NBCAR(A1)-NBCAR(SUBSTITUE(A1;" ";""))+1
Puis faire glisser la poignée "copié".
Merci.
Bonjour,
Je ne m'avance pas trop, mais je crois que les macros, c'est réservé à Excel uniquement...
Pour votre affaire effectivement, il faut jouer avec des boucles (par exemple les boucles for)...imbriquées l'une dans l'autre ce qui n'est pas facile à dompter au début.
Une macro dans Excel (je parle juste pour ce que je connais) est en fait seulement une procédure Visual Basic (VBA), langage de programmation annexé à Excel pour permettre d'étendre considérablement ses fonctionnalités.
Pour faire une macro, il y a deux méthodes, soit on passe directement par l'interface Excel (menu outils>Macro>Nouvelle Macro, on nomme la macro par le premier nom venu), mais cette méthode permet seulement d'enregistrer ce que vous faîtes sur l'interface. En réalité, lorsque on suit l'interface Excel, le logiciel édite lui-même la programmation qui est visible en ouvrant l'éditeur VBA (menu outils>Macro>Visual Basic Editor). En effet, Excel vous a créé une procédure nouvelle dans le module associé au projet (généralement aussi ajouté dans la foulée). A voir.
Pour votre affaire, il est plus rapide d'aller directement à l'éditeur de programmation VBA(menu>outils>Macro>Visual Basic editor). Ajouter un module à votre projet contenant par défaut des feuilles "sheet" (modules des feuillets). (dans l'éditeur : menu insertion>Module). Dans le nouveau module qui s'ouvre vierge, on va ajouter la procédure et les lignes de codes qu'elle doit contenir pour réaliser ce que vous souhaitez avec vos colonnes. il faut connaître le langage, mais VBA est très intuitif!
Soit deux colonnes A et B. Dans A on a 100 lignes dont on veut pour chacune d'entres elles, calculer le nombre de mot, c'est-à-dire en fait calculer le nombre d'espace déterminant un mot. il n'y a plus qu'a faire une copie du texte suivant, le coller dans le module, et exécuter la dite procédure (dans l'éditeur: menu exécution>exécuter). C'est servi sur un plateau!
Sub MaMacro()
Dim i As Long, j As Long, NombreLigne As Long, ContenuCellule As String, LongueurContenuCellule As Long, NombreMot As Long
NombreLigne = 100
For i = 1 To NombreLigne
ContenuCellule = Trim(ActiveSheet.Range("A" & i)) 'Ce que contient le cellule en cours d'étude
LongueurContenuCellule = Len(ContenuCellule) 'Nombre total de caractère
NombreMot = 0 'Réinitialisation du compteur de mot
If LongueurContenuCellule <> 0 Then
'on calcule les mots de la cellule en cours
For j = 1 To LongueurContenuCellule - 1
If InStr(j, ContenuCellule, Chr(32)) <> 0 Then
NombreMot = NombreMot + 1
j = InStr(j, ContenuCellule, Chr(32))
End If
Next j
NombreMot = NombreMot + 1 'correctif
End If
'On sort le résultat
ActiveSheet.Range("B" & i) = NombreMot
Next i
End Sub
J'ai en plus testé la chose, il ne doit pas avoir d'erreur inattendues...
Bon j'arrive trop tard... Mais mon message reste instrutif (j'ai plus que cela je crois...). Il reste cependant que vous n'aviez pas précisé que les mots sont séparés non pas par des espaces (chr(32)) mais par un point virgule (";") semble-t-il!
Bonjour,
Je t'ai fait ce petit truc (je n'ai jamais fait de VBA Word alors ça reste simple!).
Tu peux allonger le tableau selon le mode habituel. Dans ce document, ne crée pas d'autre tableau avant les autres sinon la macro ne fonctionnera plus.
Il suffit ensuite de copier tes phrases dans la première colonne puis de cliquer sur le bouton.
Cordialement
Désolé, il semble que les macros se soient désactivées dans ce document. Je vais chercher car je ne me rappelle plus comment on les réactive.
Cordialement
Pour réactiver, il suffit de cliquer "activer les macros dans la boîte de dialogue qui s'ouvre à l'ouverture du document.
Mais, de toutes façons cela traite des "phrases" donc avec des mots séparés par des espaces donc ce n'est pas ton cas.
J'ai modifié le fichier Word précédent. Celui-ci doit faire ce que tu cherches.
Cordialement
Bonjour,
Pourtant, je viens de réessayer en ouvrant le document que je t'ai envoyé et cela fonctionne.
Tu as bien cliqué "Activer les macros" dans la boîte de dialogue qui doit s'ouvrir avant l'ouverture du document?
Cordialement
EDIT Evidemment, cela ne fonctionne qu'une fois puisqu'après il n'y a plus les points-virgules pour séparer les mots mais des espaces.
Ouf !
J'a trouvé mais ce fut long.
Je n'avais pas de boîte de dialogue à l'ouverture.
Il fallait baisser le niveau de sécurité de word (trouver dans google).
Je garde ta macro. Elle est très bien.
Comment l'enregistrer et même comment l'associer à la touche "CTRL-1" par exemple ?
Merci d'avance.
A ce soir.
Je dois sortir.
Bonjour,
J'ai eu quelques soucis pour lancer la macro par ctrl+1 (dans cet exemple, c'est le 1 normal, pas celui du clavier numérique). Il a fallu modifier un peu. La macro s'appelle "Comptage"
Si tu veux appliquer cette macro à un autre document il faut aller dans ce document et faire :
- outil / macro / macros / organiser
A gauche, tu dois voir le nom de ton document
A droite il doit y avoir Normal.doc
- tu cliques sur Fermer le fichier, puis sur ouvrir le fichier
- tu vas chercher mon document, là où tu l'as enregistré
- tu fais Ouvrir. Dans la fenêtre tu dois avoir "New macros"
- Tu cliques sur le bouton << Copier. New macros doit s'inscrire dans la fenêtre de gauche
- tu cliques Fermer
Ensuite, il faut affecter des touches de raccourci à la macro en faisant :
- outils / personnaliser et tu cliques sur le bouton Clavier, en bas
- dans Catégories, tu choisis Macros
- dans Enregistrer dans, tu sélectionnes le nom de ton document
- dans Macro, tu sélectionnes Comptage
- dans Nouvelles touches tu appuies sur tes touches (ctrl+1 par ex.)
- tu cliques Attribuer. Les touches choisies s'affichent à gauche dans Touches actuelles
- tu cliques Fermer puis à nouveau Fermer
C'est tout
Cordialement
C'est une bonne solution, et élégante.
Petite remarque toutefois : si des mots sont séparés par deux (ou davantage) espaces, il faut d'abord transiter par une cellule de travail (ou compliquer un peu ta formule) contenant la fonction SUPPRESPACE qui supprime tous les espaces, laissant toutefois un espace simple entre les mots.
Dans B1 : =SUPPRESPACE(A1)
Dans C1 : = NBCAR(B1)-NBCAR(SUBSTITUE(B1;" ";""))+1
On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !
En regardant à nouveau les posts suite à celui de Danyvio, je pense que j'ai mal interprété quelque chose.
En regardant de plus près la méthode sous EXCEL, je vois que les mots de tes phrases sont bien séparés par des espaces (comme je l'avais d'ailleurs compris au début) et non par des points-virgules (comme je l'avais interprété suite au post # d'Esprit Tordu - j'avais modifié en conséquence). J'ai donc revu ma copie dans la version 4 !
Désolé pour ce contretemps!
Cordialement
EDIT Cela démarre toujours par ctrl+1
Merci à tous.
Je verrai cela demain car le soir, il ne faut pas trop exciter mes neurones déjà ensommeillées.
Je vous tiens au courant.
J'ai essayé.
Marche pas.
Il y a une erreur (débogage).
Une question : faut-il appliquer cette procédure à chaque nouveau document ?
Tu as ouvert mon dernier document?
Il s'est ouvert sans problème?
Lorsque tu fais Ctrl+1, il te met une erreur?
Qu'est-ce qui est écrit?
Quand tu cliques sur débogage, il dit quoi?
Je viens de le réouvrir depuis le forum et je n'ai pas d'anomalie.
Pour ta question, on doit pouvoir mettre la macro dans le modèle normal.dot elle devient alors accessible à tous les documents
Pour ton document, aucun problème ça marche.
Mais pour un nouveau document, ça ne marche pas.
J'ai essayé de suivre à la lettre plusieurs fois tes instructions.
Je ne vois pas où j'ai pu commettre une erreur.
Je vais revérifier le processus. Je regarderai en même temps comment mettre la macro dans le normal.doc.
Merci.
Explique bien pas à pas dans le détail car pour moi, c'est totalement du chinois. Il suffit que je manque un pas et ça rate. Rien ne m'est évident dans cette programmation.
Attention : il m'arrive de travailler sur des milliers de phrases à la fois et parfois sur plusieurs colonnes et souvent sur des caractères spéciaux (Je suis linguiste).
Bonne semaine.
C'est normal.doc ou normal.dot ?
Bonjour,
Ton message vient de m'arriver. J'étais en train de rédiger ce qui suit. J'espère que ce sera assez clair.
(Pour le dysfonctionnement dans le cas précédent, peut-être n'avais-tu pas mis le premier tableau (1 ligne de titres) avant le tableau de comptage, mais séparé, d'où l'erreur)
Je pense que le plus pratique pour toi est de créer un modèle puis :
- soit de créer un nouveau document basé sur le modèle
- soit d'attacher le modèle à un document existant.
Cela permet également de transmettre facilement le modèle à quelqu'un. C'est plus facile que de transférer une macro.
Je ne sais pas si tu as déjà fait ces opérations alors, j'explique (j'ai préféré te le faire faire plutôt que t'envoyer un modèle tout fait, cela peut te servir une autre fois) :
1 - Création du modèle
- tu ouvres mon document EssaiVBAword4.doc
- tu supprimes le deuxième tableau (tu laisses quelques sauts de paragraphe dessous)
- tu fais Fichier/Enregistrer sous
- dans "Nom de fichier" tu nommes ton modèle ex.: ComptageDeMots
- dans "Type de fichier", tu sélectionnes "Modèles de documents (.dot)"
- tu fais enregistrer
Si un jour tu as besoin de copier ce modèle, il doit être (sous XP) normalement enregistré en : C:\Documents and settings\ici le nom d'utilisateur\Application data\Microsoft\Modèles (s'il n'est pas là il faut faire une recherche)
2 - Utilisation du modèle par création d'un nouveau document
- tu fais Fichier/Nouveau
- tu choisis "Créer à partir d'un modèle"
- tu cliques sur le nom du modèle ex. : ComptageDeMots
(s'il n'y est pas cliques sur Modèles généraux)
- le nouveau document s'ouvre
- dans ce document, tu crées ou tu copies ton tableau de deux colonnes avec, à gauche, les phrases (mots séparés par un espace)
- tu enregistres en fichier .doc
- la macro se lance par Ctrl+1
3 - Utilisation du modèle avec un document existant
Contraintes :
- le document doit comporter 1 tableau (pas plus) avant le tableau de comptage (comme dans le modèle). On pourrait éventuellement supprimer cette contrainte en modifiant la macro. Je t'expliquerai si nécessaire. S'il y a d'autres tableaux après le tableau de comptage, ce n'est pas gênant.
- le tableau de comptage doit comporter au moins deux colonnes, les phrases étant dans la première et le compte dans la deuxième
- tu fais Outils/Modèles et compléments
- tu cliques "Attacher"
- tu sélectionnes le nom de ton modèle ex.: ComptageDeMots.dot
- tu cliques "Ouvrir"
- tu cliques "OK"
- la macro se lance par Ctrl+1
J'espère n'avoir rien oublié. S'il y a un problème, dis-le sans attendre, en précisant ce qui se passe.
Cordialement
2 - Utilisation du modèle par création d'un nouveau document
- tu fais Fichier/Nouveau
- tu choisis "Créer à partir d'un modèle"
.........................
J'ai bien fait "Fichier/Nouveau" mais je ne trouve pas "Créer à partir d'un modèle".
Tu n'as pas une fenêtre qui s'ouvre contre le bord droit du document?
Edit : je suis en Word 2002 - SP3 sour XP
Si, mais je n'avais pas fait attention.
Je cherchais dans le menu déroulant.
Ca marche.
Merci beaucoup.
Un petit détail pas grave (Je peux bidouiller). Les points, virgules, parenthèses, etc. sont comptés comme des mots
Effectivement, je ne l'avais pas vu. Chaque signe autre qu'une lettre compte pour deux mots! C'est bizarre car c'est une fonction de Word. Je vais chercher mais je ne suis pas optimiste. Est ce que le texte peut-être modifié ou doit-on le garder tel-quel?
Ne t'inquiète pas.
Je peux modifier le texte comme je veux en supprimant tous ces caractères autres qu'une lettre puis les rétablir après comptage.
Tu as déjà fait beaucoup. C'est 99 % de mon travail résolu car c'est une vraie galère quand il faut compter et recompter au risque de faire des erreurs. Et ça prend un temps fou que je pourrais employer à quelque chose de plus utile.
Encore mille mercis.
Je mets ta macro soigneusement au chaud.
Bonne après-midi.