Contacts

Utilisation de caractères génériques

Word dispose d'un outil de recherche très puissant que vous pouvez utiliser pour trouver des informations sur presque tous les types de conditions. Il existe des caractères génériques spéciaux qui vous permettent de rechercher des informations en fonction d'un modèle ou d'une séquence de caractères spécifique.

Les recherches de caractères génériques sont effectuées dans une boîte de dialogue Trouve et remplacer (Trouver et remplacer). Nous vous présenterons les règles de base d'utilisation de cet outil afin que vous appreniez à trouver dans Documents Microsoft Word est à peu près tout ce que vous voulez.

Ouvrez le fichier Word et appuyez sur le raccourci clavier Ctrl + H pour ouvrir une boîte de dialogue Trouver et remplacer(Trouver et remplacer). Cliquer sur Suite(Plus) pour développer la boîte de dialogue et accéder à des options supplémentaires.

Noter: Si au lieu du bouton Suite(Plus) Vous voyez un bouton Moins(Moins), vous n'avez pas besoin d'appuyer sur quoi que ce soit. La boîte de dialogue est déjà agrandie.

Cochez la case à côté de l'option Utiliser des caractères génériques(Caractères génériques). Notez que sous la boîte Trouver quoi(Trouver) l'inscription correspondante est apparue.

Noter: Lorsque le paramètre Utiliser des caractères génériques(Wildcards) est activé, Word recherche uniquement une correspondance exacte avec le texte spécifié. Options Cas de correspondance(sensible à la casse) et Trouver des mots entiers uniquement(mot entier uniquement) sont grisés pour montrer qu'ils sont automatiquement activés et ne peuvent pas être désactivés lorsque l'option est sélectionnée Utiliser des caractères génériques(Caractères génériques).

Par exemple, recherchons toutes les répétitions de texte commençant par « t » et se terminant par « e » avec un nombre quelconque de caractères entre ces lettres. Pour cela, saisissez « t » dans le champ Trouver quoi(Rechercher) et cliquez Spécial(Spécial) en bas de la boîte de dialogue. Dans le menu qui apparaît, sélectionnez 0 ou plusieurs caractères(N'importe quel nombre de caractères) ou un astérisque (*).

Noter: Si vous savez quel caractère spécial utiliser, vous pouvez le saisir directement dans le champ Trouver quoi(Trouve). Bouton Spécial(Spécial) vous donne un indice au cas où vous ne vous souvenez pas des caractères spéciaux disponibles et de leur utilité.

La demande de recherche sera traitée. Lorsque la première correspondance est trouvée, appuyez sur le bouton Rechercher suivant(Rechercher suivant) pour trouver les prochains morceaux de texte qui correspondent à votre requête.

Pour rechercher du texte contenant un caractère, utilisez le point d'interrogation (?). Par exemple, si vous saisissez la requête « d?G » dans le champ Trouver quoi(Rechercher), tous les mots composés de trois lettres commençant par « d » et se terminant par « g », par exemple « creuser », « creuser », « chien ».

Vous pouvez également définir des lettres spécifiques à rechercher en les spécifiant entre crochets « ». Par exemple, si vous saisissez la requête « bt » dans le champ Trouver quoi(Rechercher), les mots « bat », « pari », « bit », « bot » et « mais » seront trouvés.

Si le paramètre Utiliser des caractères génériques(Wildcards) est activé et vous devez trouver l'un des caractères utilisés comme joker, mettre une barre oblique (/) devant ce caractère et lancer la recherche. Par exemple, pour trouver un point d'interrogation lorsque l'option est activée Utiliser des caractères génériques(Wildcards) vous devez entrer la requête "/?" dans le champ Trouver quoi(Trouve).

De plus, des caractères génériques peuvent être utilisés pour remplacer du texte. Par exemple, le caractère générique « / n » (où n est le numéro du mot à remplacer) peut être utilisé pour rechercher une expression puis la remplacer par une autre expression. Par exemple, nous avons saisi « (Kaufman) (Lori) » dans le champ Trouver quoi(Rechercher), et sur le terrain Remplacer par(Remplacer par) - "/2/1" (n'oubliez pas de mettre un espace entre le chiffre 2 et le deuxième caractère "/"). En conséquence, Word trouve « Kaufman Lori » et le remplace par « Lori Kaufman ».

Microsoft Word fournit un outil de recherche et de remplacement incroyablement puissant. La possibilité de l'utiliser correctement simplifie grandement l'édition et l'édition de documents. Cette section détaille l'utilisation de caractères spéciaux dans les opérations de recherche et de remplacement ; un certain nombre d'exemples sont donnés.

Considérez une simple recherche et remplacez le cas. Il est nécessaire de remplacer le nom de famille d'Ivanov par Petrov dans tout le document. Cela se fait facilement à l'aide d'une procédure standard de recherche et de remplacement. Cependant, étant donné que le nom d'Ivanov dans le document peut être dans différents cas et nombres, vous devrez alors effectuer de nombreuses substitutions successives.

Usage caractères spéciaux vous permet de terminer la tâche à la fois en une seule étape.

Un autre exemple. Il y a beaucoup de fractions décimales dans le document. Certaines des fractions sont tapées par un point, d'autres par une virgule. Il est nécessaire de procéder à un tel remplacement afin d'uniformiser l'orthographe de toutes les fractions.

Il s'avère que cela ne nécessite qu'une seule opération de recherche et de remplacement en utilisant caractères spéciaux.

Un exemple plus complexe de modification de texte. Un grand document est donné contenant le texte d'un dictionnaire de termes informatiques de la forme suivante :

Document sans titre

Il n'y a pas de surlignage dans le texte. Le nombre total d'entrées - par exemple, environ 30 000.

Obligatoire:

    1. Trouvez tous les termes anglais traduisibles et mettez-les en gras. Dans ce cas, laissez tous les autres mots anglais intacts.

    2. Le trait d'union entre le terme anglais et sa traduction doit être remplacé par un tiret. Dans ce cas, laissez tous les autres traits d'union intacts.

    3. paragraphes de termes anglais s'éloigner du précédent de 2 points et assurer la saillie de ces paragraphes de 0,25 cm.

Pour terminer la tâche, vous devez trouver les 30 000 fragments de texte qui remplissent les conditions ci-dessus, effectuer 30 000 sélections en gras et 30 000 remplacements de tirets vers tirets, et décaler les paragraphes.

Cela peut-il se faire en moins d'1 minute ?

Oui, vous pouvez. Pour ce faire, vous devez effectuer une opération de recherche et de remplacement à l'aide de caractères spéciaux.

La solution à ces problèmes est donnée à la fin de la section.

Il existe deux types de caractères spéciaux dans Microsoft Word - Symboles spéciaux et caractères génériques... Les deux sont pratiques pour entrer dans les chaînes de recherche et de remplacement à l'aide du bouton "Spécial" dans la boîte de dialogue de recherche et de remplacement.

Caractères spéciaux fait référence aux caractères qui ne sont pas sur le clavier et/ou qui ne peuvent pas être directement saisis dans la chaîne de recherche ou de remplacement. Par exemple, saut de ligne forcé, saut de ligne progressif, espace insécable, etc.

Caractères génériques sont utilisées pour former des conditions de recherche et de remplacement complexes selon certaines règles. Ils peuvent être utilisés pour spécifier des plages de caractères et d'expressions qui remplissent un certain nombre de conditions. Pour pouvoir utiliser des caractères génériques, vous devez activer l'option Caractères génériques dans la boîte de dialogue Rechercher et remplacer.

Voici une liste complète des symboles et des signes et des exemples de leur utilisation.

Document sans titre

Document sans titre

Spécialiste.symboles

Que signifient-ils

Caractère de tabulation (→)

Un commentaire


Si l'option Utiliser des caractères génériques est activée, un saut de page forcé et un saut de section seront trouvés.

Espace incassable (°)

Tiret insécable (-)

Portage souple (¬)

Document sans titre

Spécialiste. panneaux

Que signifient-ils

Exemple de chaîne de recherche

Que trouvera

N'importe quel personnage

Char, côté, hêtre, b5k, b¶k etc.

N'importe quel nombre de n'importe quel caractère

taureau, désordre, Blanche.¶
Colonel
etc.

L'un des caractères spécifiés

Char, côté, hêtre

Un caractère d'une plage.
La plage doit être spécifiée dans l'ordre croissant des codes de caractères.

Toute lettre russe minuscule

Toute lettre russe majuscule

N'importe quel chiffre

Tout caractère unique non spécifié après le point d'exclamation

Char, côté etc., mais pas taureau

Tout caractère unique en dehors de la plage spécifiée après le point d'exclamation

Côté, Quai etc., mais pas côté, doc

Tout caractère autre que des nombres

Strictement n morceaux du caractère ou de l'expression précédente. Une expression est tout ce qui est entre parenthèses. L'expression peut être composée à la fois de caractères spécifiques et de caractères spéciaux. panneaux.

1000 , mais non 100 , 10000

102020 , mais non 1020 , 10202020

n ou plus du caractère ou de l'expression précédente

1000 , 10000 , 100000 etc., mais pas 100

De n à m morceaux du caractère ou de l'expression précédente

1000 , 10000 , mais non 100 , 100000

un ou plusieurs des caractères ou expressions précédents

10 , 100 , 1000 , 10000 etc.

Le début d'un mot

côté gris, mais pas colo côté

Fin du mot

couleur côté, mais non côté gris

Document sans titre

Spécialiste. symboles

Que signifient-ils

Caractère de fin de paragraphe (¶)

Caractère de tabulation (→)

Tout caractère ANSI ou ASCII nnn

Contenu du presse-papiers

Contenu de la chaîne de recherche (ou tout ce qui est trouvé)

Saut de colonne

Forcer le saut de ligne ()

Saut de page forcé (--Saut de page--)

Tiret Em (-). Symbole avec code 0151.

tiret fin (-). Symbole avec code 0150.

Espace incassable (°)

Tiret insécable (-)

Portage souple (¬)

Document sans titre

Panneaux

Que signifient-ils

Numéro d'expression m de la barre de recherche

Le point-virgule dans les opérateurs (n;) et (n; m) n'est pas seulement un point-virgule, mais ce qu'on appelle le séparateur de liste. Aux USA c'est une virgule, en Russie c'est un point-virgule. Pour savoir exactement quel caractère est le séparateur de liste dans votre configuration, consultez Panneau de configuration \ Langue et normes \ Nombres \ Séparateur de liste.

Pour rechercher des caractères dans le document qui sont utilisés comme caractères spéciaux dans la chaîne de recherche, vous devez taper une barre oblique inverse (\) avant eux. Par exemple, si l'option Caractères génériques est activée, alors pour rechercher un point d'exclamation, tapez une barre oblique inverse suivie d'un point d'exclamation (\!) Dans la chaîne de recherche.

Option de caractère générique devrait être activé dans la boîte de dialogue Rechercher et remplacer. Cette condition doit être remplie pour tous les exemples ci-dessous.

Document sans titre

Ligne de recherche

Que trouvera

[!^0013]^0013[!^0013]

Une seule fin de paragraphe entourée de deux autres caractères. ( Analyse détaillée voir ci-dessous).

Deux ou plusieurs fins de paragraphes

Deux caractères espace ou plus

Tout signe de ponctuation (.,:;!?)

Deux chiffres séparés par un espace

^0032

Chiffre et lettre (anglais ou russe) séparés par un espace. (Pour une analyse détaillée, voir ci-dessous).

Tiret et numéro

<@[email protégé]>

Deux entiers séparés par un tiret

Nombre entre parenthèses

Un entier (plus précisément, une séquence continue de nombres)

<@,@>

Fraction décimale, séparée par des virgules

mot anglais

<[А-яЁё]@>

mot russe

<[А-ЯЁ][а-яё]@>

Un mot russe en minuscule, mais avec une majuscule. (Pour une analyse détaillée, voir ci-dessous).

[!^0013]^0013[!^0013]

Document sans titre

1er caractère de la chaîne de recherche

2ème personnage

3ème personnage

Fin du paragraphe

N'importe quel caractère, mais pas la fin d'un paragraphe

Fin de paragraphe (caractère avec code 0013).

Le symbole avec le code 0013 (fin de paragraphe) est indiqué entre crochets.
Signe "!" indique que n'importe quel caractère, à l'exception de la fin d'un paragraphe, peut se trouver à cette position.

Ainsi, nous avons indiqué à la recherche que nous allons rechercher une séquence de trois caractères. Le milieu doit être la fin du paragraphe, et le premier et le troisième peuvent être tout sauf la fin du paragraphe.

^0032

Document sans titre

1er caractère de la chaîne de recherche

2ème personnage

3ème personnage

N'importe quel chiffre

Toute lettre (anglais ou russe)

La plage de caractères entre crochets va de 0 à 9, c'est-à-dire des nombres.

Espace (caractère avec code 0032).

Un caractère valide est défini par trois plages et deux caractères spécifiques.
UNE- Z- lettres majuscules anglaises;
une-z- lettres minuscules anglaises;
Et moi- lettres majuscules et minuscules russes;
Sa- majuscule et minuscule e(pour couvrir tout l'alphabet russe).

Ainsi, nous avons indiqué à la recherche que nous allons rechercher une séquence de trois caractères. Le premier peut être n'importe quel nombre, le second ne peut être qu'un espace et le troisième peut être n'importe quelle lettre anglaise ou russe.

<[А-ЯЁ][а-яё]@>

Document sans titre

1ère position de la chaîne de recherche

2ème place

N'importe quelle lettre majuscule russe

Toutes les lettres minuscules russes

La plage de caractères de A à Z et E (c'est-à-dire toute lettre majuscule russe) est indiquée entre crochets.
Signe "<» указывает на то, что прописная буква должна быть в начале слова.

La plage entre crochets définit toutes les lettres minuscules russes.
Le signe "@" indique que le nombre de lettres minuscules russes peut être égal ou supérieur à zéro.
Le signe ">" indique la fin d'un mot.

Ainsi, nous avons indiqué à la recherche que nous allons rechercher une séquence de deux caractères. Le premier peut être n'importe quelle lettre russe majuscule, et le second peut être n'importe quelle lettre russe minuscule.

Pour travailler avec des expressions, activez l'option Caractères génériques.

Dans la chaîne de recherche, une expression est tout ce qui est entre parenthèses, qui dans ce cas agissent comme des caractères spéciaux. Une expression peut être composée de caractères spécifiques ou contenir des caractères génériques ou spéciaux. L'ordre des expressions détermine leur numérotation.

Dans la chaîne de remplacement, les expressions sont représentées par : \ n, où n est le numéro de l'expression dans la chaîne de recherche.

Nous allons modifier la phrase : Nastya mange des pommes.

Document sans titre

Document sans titre

Ligne de recherche

Corde de remplacement

Rechercher et remplacer le résultat

([!^0013]^0013)([!^0013])

Insère une ligne vide entre les paragraphes qui ne la contiennent pas.

Supprimer les lignes vides

Remplacer deux ou plusieurs espaces par des tabulations

^0032([.,:;\!\?])

Supprimez l'espace avant le signe de ponctuation (.,:;!?)

()^0032()

Remplacer un espace entre les nombres par un espace insécable

()^0032()

Remplacer l'espace entre un chiffre et une lettre (anglais ou russe) par un espace insécable

Remplacer un trait d'union devant un chiffre par un moins

Remplacer les parenthèses autour d'un nombre par des crochets

1. Remplacer le nom de famille Ivanov dans le document par le nom de famille Petrov à la fois dans tous les cas:

Document sans titre

Bien entendu, un tel remplacement n'est possible qu'avec des noms de famille dans lesquels les mêmes fins de cas.

2. Il est nécessaire d'effectuer un tel remplacement afin d'uniformiser l'orthographe de toutes les fractions, lorsqu'une partie des fractions est saisie par un point, une partie - par une virgule.

Voici deux options pour ce remplacement :

Document sans titre

3. Traitement du texte du dictionnaire de termes informatiques.

Voici comment il est résolu en une minute :

Tout d'abord, tout le texte est formaté comme suit : Format-> Paragraphe-> Retrait à gauche 0,25 cm. Pour la ligne de remplacement à l'aide du bouton « Format », vous devez d'abord définir : Espace « Paragraphe » avant le 2 ven.

Ensuite, l'installation est effectuée dans les chaînes de recherche et de remplacement :

Document sans titre

Ligne de recherche

Corde de remplacement

(^[email protégé])^0032-

Après cela, vous devez cliquer sur le bouton "Remplacer tout". Par conséquent:

    Tous les termes anglais traduits sont surlignés en gras. Cependant, tous les autres mots anglais restent intacts.

    Le trait d'union entre le terme anglais et sa traduction est remplacé par un tiret. Cependant, tous les autres traits d'union restent intacts.

    Les paragraphes contenant des termes anglais descendent des paragraphes précédents avec une explication du terme et se déplacent vers la gauche.

Soit, en tout, par exemple, 30 000 fragments de texte qui remplissent les conditions ci-dessus, 30 000 modifications requises sont apportées et ce qui suit est obtenu :

Document sans titre

Alpha(nu) mericaffichage - affichage alphanumérique (caractère).
Affichage conçu pour fonctionner avec les caractères alphabétiques, numériques et apparentés
informations symboliques.
Alpha(nu) mericclavier - clavier alphanumérique.
Clavier pour saisir des représentations de code de chiffres et de lettres, qui est marqué
jeu de caractères.
Alternerclé - clé alternative.
Une clé de recherche de base de données qui n'est pas spécifiée comme clé primaire.
Inversion de marque alternative(SUIS-JE) - inversion alternée des unités .; http://members.xoom.com/sergeymh

6. Voronin A. Mise en page simple dans Word. Microsoft Word 2002 XP. - M. : " ÉTINCELLE ", 2003. - 352 p.

7. Technologie de production d'impression. Partie 1. Processus d'édition et de composition. Travaux de laboratoire pour la spécialité 051900 "Graphisme". M. : MGUP, 2002.-- 60 p.

Recherche de documentsMot effectuée par la fonction "Rechercher". Voir l'article "Rechercher dans un document Word". Mais vous pouvez rechercher dans Word non seulement par mots, mais également en respectant la casse, par police, style, en utilisant des caractères génériques, etc.
S'il y a beaucoup de mots similaires dans le texte, vous devrez alors rechercher parmi eux dans les résultats de la recherche. Pour trouver un mot spécifique, il y a dans la recherche avancée Word... Dans celui-ci, vous pouvez trouver des données sur des données plus précises et détaillées - sensibles à la casse (lettres minuscules ou majuscules), un mot par pure coïncidence, trouver un mot non seulement par le texte, mais aussi par la conception de ce mot, par d'autres conditions.
Ainsi, dans l'onglet "Accueil" de la section "Édition", appuyez sur le bouton "Rechercher". En bas de la fenêtre qui apparaît, cliquez sur le bouton "Plus >>>". Une fenêtre de recherche avancée apparaîtra. Considérons-le.
"Direction" est une recherche par Document Word, le sens de la recherche dans le document. Par exemple, si nous choisissons le sens "Avancer", alors la recherche ira du curseur uniquement vers le bas du document. Si nous choisissons "Back" - le document. Dans ces cas, la recherche ne sera pas effectuée dans les liens et les en-têtes et pieds de page. Si nous sélectionnons la recherche "Partout", alors Word recherchera partout dans le document, incl. dans les en-têtes et pieds de page, dans les liens.
Recherche par mots dansMot.
"Sensible à la casse" - cela signifie que si nous écrivons un mot en minuscules dans la barre de recherche, Word ne recherchera que les mots écrits en minuscules. Si nous écrivons un mot avec une majuscule, il recherchera les mots écrits avec une majuscule.
"Seulement les mots entiers" - seul le mot qui a été écrit dans la barre de recherche sera recherché. Par exemple, dans la barre de recherche, nous avons écrit le mot "maman". Une simple recherche renverra des mots - maman, maman, maman, etc. Tous les mots qui contiennent le mot "maman". La recherche avancée ne renverra que le mot "maman".
Les caractères génériques sont des caractères qui indiquent certaines valeurs dans le mot. Par exemple, nous avons coché la case à côté de fonction Mots génériques, et dans la barre de recherche, ils ont écrit "C? lo". Cela signifie que vous devez trouver tous les mots avec ces lettres, mais la deuxième lettre (où il y a un point d'interrogation) peut être n'importe laquelle. La recherche a trouvé de tels mots - gros, village.
Jetons un coup d'œil à quelques caractères génériques.
Caractères génériquesMot.
? (point d'interrogation- n'importe quelle lettre.
*(Star)- plusieurs personnages. Par exemple, ils ont écrit - "L * s", trouveront - élan, saumon.
(crochets)- trouvera tous les mots avec des caractères spécifiés entre crochets. Par exemple, ils ont écrit dans la ligne de recherche "S [ae] lo", trouveront - gros, village. [-] (lettres séparées par des tirets, entre crochets)- recherchera tous les mots avec des lettres écrites dans la plage entre crochets. Par exemple, il a écrit "S [a-e] lo", trouvera - saindoux, village, etc.
[!] (point d'exclamation entre crochets)- recherchera des mots autres que des mots avec une lettre avec un point d'exclamation. Ils ont écrit dans la ligne de recherche "C [! A] lo", il trouve - un village. Et le mot "Salo" ne sera pas affiché dans les résultats de la recherche, bien qu'il y ait ce mot dans le texte, p.h. nous avons écrit une condition dans la barre de recherche afin que les mots dans lesquels la lettre "a" apparaîtra après la lettre "C" ne soient pas recherchés.
> (supérieur au signe)- c'est comme une flèche, ça montre dans quelle partie du mot chercher. Ce caractère recherchera les mots qui se terminent par les lettres spécifiées dans la recherche. Par exemple, ils l'ont écrit comme ceci, "(ist)>". Il trouvera et affichera dans les résultats de la recherche le mot - feuille, p.ch. il se termine par ist. Et le mot "source" ne s'affichera pas.
<(знак меньше) – recherchera les mots commençant par les lettres que nous spécifions dans la recherche. Par exemple, nous avons écrit «<[лис]». Найдет слово – лис, не будет искать и не покажет слово, полис.
@ ("Chien" - en russe familier)- caractères répétés. Par exemple, ils ont écrit "C @ ypyat". Trouvera le mot à verser.
{ n) (accolades numérotées)- mettez le nombre (n) entre accolades, ce qui indiquera avec combien de répétitions du caractère spécifié vous devez rechercher des mots. Par exemple, ils l'ont écrit comme ceci, "* e (2)". Ici, nous avons indiqué une telle condition de recherche - pour rechercher des mots qui ont plusieurs symboles (*), en particulier la lettre "e", qui sera répétée 2 fois dans les mots. Word a trouvé un tel mot - "plus audacieux". Et le mot "plus court" n'apparaîtra pas dans les résultats de la recherche, p.h. il contient une lettre "e".
{ n,) (accolade avec numéron et virgule) - écrire le nombre de répétitions de caractères à partir du nombre spécifié ou plus. Par exemple, ils ont écrit - "* e (2,)". La recherche a donné les mots - plus audacieux, mangeur de serpents.
Mettre crochets dans Word, vous devez basculer le clavier sur la disposition anglaise. Les crochets sont sur les boutons des lettres russes "x" et "b".
Les accolades dans Word défini comme carré, appuyez d'abord sur la touche "Shift".
Fonction de recherche "Prononcé comme" vous permet de trouver des mots qui s'écrivent différemment mais se prononcent de la même manière. Cette fonction ne fonctionne qu'avec du texte anglais.
Fonction "Toutes les formes de mots" recherche toutes les formes de mots, par exemple, les temps des verbes, etc.
Rechercher un document Word par format.
Dans la boîte de dialogue Rechercher et remplacer, cliquez sur bouton "Formater" situé en bas de la fenêtre. Choisissez celui dont vous avez besoin dans la liste qui apparaît.

Les formats peuvent être combinés. Par exemple, recherchez du texte écrit en italique gras avec des espaces insécables, etc.
Bouton spécial a également une liste de fonctions.
Rechercher et remplacer dansMot.
Dans Word, vous pouvez non seulement rechercher une recherche avancée, mais également la remplacer. Allez dans l'onglet "Remplacer" dans la boîte de dialogue "Rechercher et remplacer", et dans la ligne "Remplacer", écrivez les conditions de remplacement détaillées.
Comment supprimer dans Word un mot mal orthographié que nous avons saisi accidentellement, voir l'article "

L'autre jour, j'ai été engagé dans toutes sortes de perversions sexuelles avec les textes du prochain auteur de médecine dans MS Word. Et j'ai dû chercher et remplacer un tas d'obscénités et de charabia de toutes sortes, car les auteurs, pour la plupart, ne sont pas du tout mal formés à la langue russe (ils s'efforcent de tout écrire en anglais cyrillique, etc.) et ils ne peuvent pas formater des textes lisibles. Il y avait beaucoup de choses à remplacer et à changer, et les outils de recherche standard bien connus intégrés à l'éditeur ont commencé à manquer, il était nécessaire de recourir à son utilisation. Mais comme ? Le programme magique Word a commencé à jurer sale contre les masques que je connaissais plus tôt. Comme toujours, Google a aidé. Après avoir creusé un peu, j'ai découvert que les rédacteurs MS Office de génie à petite échelle avaient suivi leur propre chemin, qualifiant ces expressions de caractères génériques et modifiant légèrement leur syntaxe. En général, vous pouvez le comprendre.


Tout s'est avéré assez simple (j'ai Office 2007, mais je pense que ce sera vrai pour les versions précédentes, sauf qu'il y aura des différences mineures dans les noms des éléments, mais vous le comprendrez, je crois ;)) . Et il n'y avait pas besoin, en gros, de regarder n'importe où. En plus de ceux immédiatement visibles, si vous ouvrez la fenêtre "Rechercher" (Ctrl + F) ou "Rechercher et remplacer" (Ctrl + H) dans Word, placez le curseur dans le champ "Rechercher" et cliquez sur le bouton "Plus" , et après le "Spécial ", Avec des caractères spéciaux, il y a une autre option, dont un peu plus bas. Je crois;)). Et il n'y avait pas besoin, en gros, de regarder n'importe où. En plus de ceux immédiatement visibles, si vous ouvrez la fenêtre "Rechercher" (Ctrl + F) ou "Rechercher et remplacer" (Ctrl + H) dans Word, placez le curseur dans le champ "Rechercher" et cliquez sur le bouton "Plus" , et après le "Spécial ", Avec des caractères spéciaux, il y a une autre option, qui est décrite ci-dessous.
Tout d'abord, à propos des masques de recherche standard :
^? - tout signe
^ # - n'importe quel chiffre
^ $ - n'importe quelle lettre
^ p - Marque de paragraphe (¶) (si les caractères génériques sont sélectionnés, remplacez par ^ 13)
^ t - caractère de tabulation (→) (si l'option "Wildcards" est sélectionnée, remplacez par ^ 9)
^ + - tiret (-)
^ = - tiret (-)
^^ - signe de casquette (^)
^ l - saut de ligne forcé (caractère ↵ ou 0xBF), cela se produit si vous appuyez sur Shift + Enter (si l'option "Wildcards" est sélectionnée, remplacez par ^ 11)
^ n - saut de colonne (si l'option "Wildcards" est sélectionnée, remplacez par ^ 14)
^ 12 - Section ou saut de page (ajoute un saut de page lors du remplacement)
^ m - Forcer le saut de page (également utilisé pour rechercher et remplacer les sauts de section si les caractères génériques sont sélectionnés)
^ s - espace insécable (º) (Ctrl + Maj + Espace)
^ ~ - trait d'union insécable (≈)
^ - - portage souple (¬)
Passons maintenant au champ "Remplacer par", ici deux options spécifiques apparaissent :
^ & - texte de recherche
^ c - contenu du presse-papiers
Comment cela peut-il être utilisé ? Par exemple, disons que vous devez trouver le texte "Achtung !" et "Achtung."? peignez-le en vert et remplacez-le par « Achtung, minen ! "(Exactement rouge). De plus, dans le texte, vous n'avez également que le mot "achtung" avec une petite lettre, qui n'a pas besoin d'être modifiée. Solution:
Écrivez en rouge « minen ! "Et coupé dans le presse-papiers
Rechercher (en cochant la case "Match case") : Achtung
Remplacer par (déplacez le curseur sur ce champ et appuyez sur le bouton "Format", puis sélectionnez "Police" et là il est vert):
Trouvez maintenant : Achtung ^?
Remplacer par : Achtung, ^ c

Avec cela, tout est vraiment simple et clair. Et si vous avez besoin d'une énorme liste de références de la forme
Reynolds J.V., Murchan P., Leonard N. et al. L'interlenkin-2 à haute dose favorise la translocation bactérienne de l'intestin // Brit. J. Cancer.-1995. -Vol. 72, n° 3. - P. 634-636.
ramener tout à la normale
Reynolds J.V., Murchano P., Leonardo N. et al. L'interlenkin-2 à haute dose favorise la translocation bactérienne de l'intestin // Brit. J. Cancer 1995. V.72 (3) P. 634-636.
Comment être? Ce sera très long et fastidieux à éditer avec des stylos dans chaque ligne. Mais cela peut aussi être fait par recherche et remplacement.
Si vous cochez la case « Wildcards » dans la fenêtre de recherche et de remplacement, le contenu du bouton « Spécial » pour le champ « Rechercher » prendra une forme légèrement différente :
? - tout signe
[-] - s'inscrire dans la gamme
< — в начале слова
> - à la fin d'un mot
() - gamme
[!] - ne pas
(;) - nombre d'occurrences
@ - précédent 1 ou plus
* - un nombre quelconque de caractères
Et pour le champ "Remplacer par" un élément supplémentaire apparaîtra
\ n - expression de recherche
Comment l'utiliser? Seulement. Je vais commencer presque dans l'ordre.
? et * sont essentiellement la même chose, mais l'expression ?? sa car la recherche signifiera "[espace] guêpe", "faux", "renard" et un tas d'autres choses contenant deux caractères devant "sa". Et l'expression * sa mettra en évidence tout le texte pour vous depuis la position du curseur dans le texte jusqu'au premier "sa" rencontré, y compris "[cursor] Un animal portant le numéro 25 courait à travers le champ, c'était un renard."
Le symbole @ a une signification similaire aux précédents. Ici je n'ai pas eu assez d'imagination pour un exemple, j'emprunte à des petits mous : [email protégé] aide à trouver "lot" ou "butin", [email protégé] vous aide à trouver "full" ou "full", etc. :)
Presque des mêmes symboles d'opéra< и > : <ок vous aidera à trouver tout "sur", et d'accord>- toutes sortes de "chocs".
L'expression vous aidera à trouver n'importe quelle lettre majuscule de l'alphabet anglais et n'importe quelle lettre du russe et de l'anglais. L'expression (;) est également utilisée de manière inséparable avec celle-ci. Cela ressemble à ceci : disons que vous voulez trouver tous les mots qui commencent par une majuscule et sont longs de 4 à 5 lettres et se terminent par un point d'interrogation. La solution sera de les rechercher à l'aide du masque suivant :
{1;1}{3;4} \?
c'est-à-dire, trouvez une lettre majuscule suivie de 3 ou 4 lettres minuscules plus un point d'interrogation. Il y a une petite subtilité ici - puisque le "?" est utilisé comme caractère générique, afin que la recherche l'interprète comme un point d'interrogation, et non comme un caractère devant celui-ci, vous devez mettre "\". Si vous avez besoin de trouver le caractère "\" lui-même dans le texte, il ressemblera à \\ , bien, etc.
A l'aide de [!] Vous pouvez trouver, par exemple, tout sauf les majuscules : [! A-Z].
Maintenant à propos de l'opérateur de recherche le plus intéressant - (). Avec son aide, vous pouvez trouver plusieurs expressions différentes et les regrouper à l'aide de l'opérateur \ n. Un exemple simple : supposons que vous deviez remplacer « Nom ET O » par « Nom et nom » dans tout le texte. Solution:
Trouve: ({1;1}{2;11} ) ({1;1} ) ({1;1} )
Remplacer par : \ 2. \ 3. ^ s \ 1
C'est-à-dire que chaque expression entre parenthèses dans le champ "Rechercher" correspond dans l'ordre à l'opérateur \ n dans le champ "Remplacer par".
Maintenant, je pense que vous pouvez gérer vous-même la tâche ci-dessus ;)

OPTIMISATION DES CODES

  • Utilisez la propriété StoryLength ou la fonction Len () pour déterminer le nombre de caractères dans une partie d'un document, mais pas la commande Characters.Count, qui prend beaucoup de temps s'il y a beaucoup de caractères.
  • Dans les contrôles (If, Select, etc.) comparez avec la valeur vérifiée - avec ce qui devrait être.
    • Exemple. Lors de la vérification de True, il est correct d'écrire :
      Si N<>Vrai alors
      Il est souvent écrit à tort :
      Si N = Faux Alors
      Si N est de type autre que booléen, le code peut ne pas fonctionner.
  • Optimisation de l'itération sur un tableau (Array) :
    • Vite:
      Pour i = LBound (Array) à UBound (Array)
      Ensuite je
    • Lentement:
      Pour chaque V dans le tableau
      V suivant
  • Optimisation de l'itération de la collection :
    • Vite:
      Pour chaque V dans Col
      V suivant
    • Lentement:
      Pour i = 1 à Col.Count
      V = Col (i)
      Ensuite je
  • Lors de la validation de la chaîne en bloc, Len (S) = 0 est plus lent que S = "".
  • Performances de saut conditionnel :
    • L'opérateur On ... GoSub ... est un ordre de grandeur plus rapide que l'opérateur Select Case.
    • Select Case est généralement une vérification lente, If est plus rapide.
  • Optimisation de l'itération des caractères (Caractère), etc. :
    • Voie lente :
      Dim r comme plage
      Pour chaque R dans ActiveDocument.Characters
      R suivant
    • Voie du milieu:
      Définir R = ActiveDocument.Characters.First
      Faire
      Définir R = R.Suivant
      Boucle tant que non (R n'est rien)
    • manière rapide:
      Définir R = ActiveDocument.Range (0, 0)
      Faire
      Boucle pendant que R. Move = 1
  • Optimisation de l'itération de paragraphe (Paragraphe), etc.:
    • Voie lente :
      Dim P comme paragraphe
      Pour chaque P dans ActiveDocument.Paragraphs
      P suivant
    • Voie du milieu:
      Définir P = ActiveDocument.Paragraphs.First
      Faire
      Définir P = P.Suivant
      Boucle tant que non (P n'est rien)
    • manière rapide:
      Dim r comme plage
      Définir R = ActiveDocument.Range (0, 0)
      Do While R.Move (Unité : = wdParagraph) = 1
      Définir P = R.Paragraphs.First
      Boucle
  • Utiliser une boucle For Each en toute sécurité
    • Si, pendant le traitement d'un groupe d'éléments de document, la collection elle-même change (des éléments sont supprimés ou ajoutés), alors la boucle For Each peut ignorer certains éléments (par rapport à ceux qui existaient au démarrage de la boucle).
    • Un exemple où un écart peut se produire, et tous les dessins ne seront pas supprimés :
      Dim SH comme forme

      SH.Supprimer
      Prochain
    • Pour que l'exemple fonctionne sans échec, vous devez créer une collection temporaire et mémoriser tous les éléments qu'elle contient :
      Dim COL comme nouvelle collection, SH comme forme
      Pour chaque SH dans Selection.Range.ShapeRange
      COL.Ajouter un article : = SH
      Prochain
      Pour chaque SH en COL
      SH.Supprimer
      Prochain
  • Lorsqu'on fait référence à un objet, il est souhaitable et utile d'indiquer son parent devant son nom. Un seul suffit - Parent.Object, mais toute la chaîne est également possible - Parent1.Parent2.Parent3.Objet.
    • Exemple. Dans le document sous l'éditeur VBA, nous avons créé un formulaire (UserForm) nommé "MyForm", puis, pour le lancer, nous avons inséré un bouton (champ CommandButton) dans le texte du document, qui s'appelait également "MyForm", ce qui est naturel et pratique. Maintenant, si vous insérez le code MyForm.Show dans la macro en appuyant sur le bouton, il n'y aura aucune erreur lors de la compilation, mais nous recevrons une erreur au démarrage. Il était correct d'écrire Project.MyForm.Show, et nous nous sommes donc tournés non pas vers le formulaire, mais vers le bouton. Si nous voulons faire référence au bouton, nous devons écrire ThisDocument.MyForm.
  • Pour affecter des types, il est pratique d'utiliser des caractères spéciaux : String - $, Integer -%, Long - &, Single -!
    • Exemple: Dim String $, Integer%, Long &, Real !
  • Pour améliorer la compatibilité, il est préférable de remplacer les noms des constantes Word par leurs valeurs. Cela s'applique aux langues, listes, champs, etc. C'est-à-dire que nous écrivons 1049 dans le code, pas wdRussian.
  • V formules mathématiques que nous écrivons dans le code, nous devons utiliser des parenthèses pour qu'en premier lieu les opérations qui réduisent le résultat intermédiaire soient effectuées. C'est-à-dire d'abord - division et soustraction, puis - multiplication et addition. Sinon, si à un certain stade du calcul, le nombre s'avère trop grand, nous obtenons l'erreur n ° 6 "Débordement" - débordement. Aussi, directement dans la formule, vous pouvez amener le type de nombres à Long, par exemple, car par défaut nous avons Integer.
    • Exemple. C'est l'erreur :
      Dim V comme variante
      V = 999 * 999/999
      V = (999 * 999) / 999
    • Sinon, non, bien que mathématiquement le résultat soit le même :
      V = 999 * (999/999)
      V = 999 & * 999/999
      V = CLng (999) * 999/999
  • Évitez les modifications inutiles du document. Il n'est pas nécessaire d'attribuer le mot gras s'il est déjà en gras. Vérifiez la nécessité de modifications. Word réagit à toute opération avec le document, ce qui affecte les performances. À un grand nombre modifications redondantes, la différence de temps est énorme si vous ajoutez une simple vérification.
  • Considérez les options de plus en plus nombreuses de correction automatique de Word d'une version à l'autre.
    • Premièrement, chaque fois que vous modifiez un document, y compris une macro, Word effectue ses propres opérations automatiques. Plus il y a de changements et plus la correction est automatique, plus la macro fonctionne lentement.
    • Deuxièmement, il peut arriver que la macro corrige du texte et que Word le corrige immédiatement à sa manière, en fonction des paramètres de correction automatique. Cela peut être utile lors du remplacement de guillemets, par exemple, mais pas toujours.
  • Lors du traitement d'un document avec une macro pendant une longue période, désactivez l'automatique Fonctions de mots... Sinon, le traitement ralentira et Word pourrait se bloquer.
    • Exemple. Vous prenez un document volumineux, le traitez avec une macro, mais Word se bloque. Même sans comprendre les macros, vous pouvez essayer ce qui suit :
      • Ouvrez le document en cours de traitement.
      • Allez dans les options de Word où désactiver :
        • Enregistrer> Enregistrer automatiquement le document (obligatoire).
        • Orthographe> Vérifier automatiquement l'orthographe et la grammaire (de préférence).
        • Modifier> Tenir compte des espaces (préféré).
        • Options de correction automatique (facultatif, il y en a trop).
      • Exécutez la macro. Attendez qu'il se termine.
      • Réinitialisez les options de Word à leur état d'origine.
  • L'accès à un élément de document par son index est extrêmement lent. Il s'agit de symboles, de mots, de phrases, de paragraphes, etc. Plus il y a d'éléments dans le document, plus les "freins" sont perceptibles.
    • Exemple. Au lieu de se référer directement au signe :
      Document.Caractères (N)
      mieux utiliser la recherche pour les caractères que vous voulez :
      Document.Plage.Rechercher
      en dernier recours, itérer sur les caractères en boucle :
      Pour chaque C dans le document.Caractères

CONTRLE D'ERREUR (En cas d'erreur)

  • Code apportant des modifications au document, protéger en cas d'erreur.
  • Au lieu de la commande Err.Clear, vous pouvez utiliser On Error Resume Next, qui efface également la dernière erreur. En termes de fiabilité, c'est même utile.
  • Dans la structure ci-dessous, placez la partie exécutable après Else. Car, s'il y a une erreur dans le contrôle, le bloc Then est exécuté :
    • En cas d'erreur Reprendre ensuite
      Si... Alors... Sinon...
  • Si le contrôle d'erreur est désactivé et qu'une affectation à une variable se produit, alors en cas d'erreur, la variable conservera son ancienne valeur. Par conséquent, vous devez d'abord réinitialiser la valeur de la variable.
    • Exemple d'erreur :
      N = 1
      En cas d'erreur Reprendre ensuite
      N = CLng ("") "Erreur d'exécution 13
      si N = 0 Alors Quitter Sub
    • Exemple de travail :
      En cas d'erreur Reprendre ensuite
      N = 0 : N = CLng ("")
      si N = 0 Alors Quitter Sub
    • Droit:
      En cas d'erreur Reprendre ensuite
      N = CLng ("")
      si Err.Numéro<>0 Puis Quitter Sous

MODE D'AFFICHAGE DU DOCUMENT (View.Type)

  • Dans le cas où, dans l'interface Word, un élément en dehors de la fenêtre du document actif est sélectionné, certaines propriétés et méthodes du document actif peuvent être indisponibles.
    • Exemple. Si dans Word 2003, cliquez avec le bouton droit sur un élément du panneau Plan du document, le document restera actif, mais une erreur se produira lors de l'accès au style de paragraphe :
      • MsgBox ActiveDocument.Paragraphs.First.Style.NameLocal "Erreur d'exécution 4605
    • L'une des options de traitement pourrait être le code :
      • ActiveDocument.Windows (1) .Volets (1) .Activer
  • La sélection se comporte différemment dans différentes vues de document.
  • Lors du traitement des macros, essayez d'utiliser la vue "Normal" (wdNormalView). Cela améliore les performances. Surtout lorsque vous travaillez avec des tables.
  • Lors du changement de mode d'affichage, Selection.Range peut changer, car il existe des modes dans lesquels tous les éléments du document ne sont pas affichés.
    • Exemple. Les objets ne sont pas visibles en mode Normal/Brouillon (wdNormalView). Et si, dans le mode "Mise en page" (wdPrintView), sélectionnez le texte à l'intérieur de l'étiquette, alors, lors du changement de mode en "Normal", Selection.Range se réduira.

RECHERCHER (Plage.Rechercher)

  • Caractères génériques
    • Pour le même modèle, avec des caractères génériques, les recherches en avant et en arrière peuvent produire des résultats différents. Testez vos modèles de recherche pour savoir lesquels conviennent à la recherche vers l'avant et ceux qui conviennent à la recherche vers l'arrière.
    • Recherche générique "@" et "(1;)"
      • Donne pas la même chose.
        • Exemple. Lors de la recherche vers l'avant dans le texte "111 + 222 + 333":
          • par motif " [email protégé]"un caractère" 1 "sera trouvé, et par" 1 (1;) "- une chaîne de caractères" 111 "
          • par le motif "[! 2] @ +" le texte "111+" sera trouvé, et par le motif "[! 2] (1;) +" rien ne sera trouvé
      • Pour les recherches complexes, notamment dans le sens inverse, "@" est plus approprié.
        • Exemple. Rechercher dans le texte "One Two Three" par motif "<[А-Я]{1;}[А-Яа-я]{1;}>"ne donnera pas de résultat, contrairement à"<[А-Я]@[А-Яа-я]@>".
      • L'expérience a montré que "(1;)" est plus stable.
        • Exemple. Mieux vaut utiliser "<[А-Я]{1;}>", mais non "<[А-Я]@>". Le résultat est le même, mais la première option est plus fiable.
    • Caractère générique \ n, où n = 1,2,3 ... :
      • Peut être utilisé non seulement dans le champ "Remplacer" mais aussi dans le champ "Rechercher".
        • Exemple. Si nous recherchons le motif "(ma) \ 1", alors nous trouverons le texte "maman".
        • Exemple. Vous pouvez rechercher des mots en double. Recherchez un mot apparaissant cinq fois dans le texte : "(<*>)*\1*\1*\1*\1".
      • Le texte remplacé, dans certains cas, hérite du format du texte précédent.
        • Exemple. Si vous recherchez "(?) X" et remplacez par "\ 1Y", alors lorsque le premier caractère du texte trouvé est en indice et que le second ne l'est pas, après le remplacement, le second devient en indice. La recherche de "X (?)" et son remplacement par "Y \ 1" n'entraîne pas d'héritage.
    • Le caractère spécial "!" lors de la recherche avec des caractères génériques :
      • A utiliser avec précaution. C'est trop global et il y a beaucoup d'exceptions, qui sont très difficiles à prévoir.
      • Seuls les caractères simples seront trouvés.
        • Exemple. La recherche du motif "[! A]" ne trouvera pas d'objets graphiques, d'hyperliens, etc.
        • Exemple. Une recherche dans un tableau en texte brut utilisant le modèle "Home [! ^ 12] (1;)" trouvera le texte du mot "Home" à la fin de la cellule (même résultat recherche en arrière en utilisant le modèle "Home *").
    • Lors de la recherche avec des caractères génériques, essayez de ne pas utiliser le caractère de fin de paragraphe "^ 13" avec des parenthèses. Un comportement irrégulier a été remarqué.
      • Exemple. Si nous essayons de remplacer deux points à la fin d'un paragraphe par un seul, c'est-à-dire recherchez "([!.].). (^ 13)" et remplacez-le par "\ 1 \ 2", puis dans le paragraphe avec la liste, nous obtenons un problème intéressant.
    • Lors de la recherche et du remplacement à l'aide de parenthèses (caractères génériques), la recherche doit être répétée deux fois lorsque la partie remplacée n'est pas à la fin du texte de recherche.
      • Exemple. Lorsque vous recherchez "(X) + (X)" et que vous le remplacez par "\ 1 = \ 2" dans le texte "X + X + X + X + X" nous obtenons "X = X + X = X + X" . Celles. la recherche doit être répétée deux fois ou, en effectuant la recherche étape par étape, ajustez la zone de recherche restante.
    • Les recherches avec caractères génériques ne fonctionnent pas avec les champs. C'est-à-dire qu'il est impossible de trouver du texte à l'intérieur du champ avec son aide.
    • Utilisez des modèles de recherche génériques longs et complexes avec prudence. Il existe de telles combinaisons "modèle de recherche + document traité par celui-ci" qui bloquent étroitement Word. C'est-à-dire que dans un document, tout fonctionne, mais dans l'autre, cela se bloque. Plus c'est simple, mieux c'est.
  • Optimiser les remplacements en vrac
    • Chemin lent, assez curieusement :
      Range.Find.Execute Remplacer : = wdReplaceAll
    • Un moyen rapide, surtout pour les gros volumes :
      Range.Find.Execute Remplacer : = wdReplaceNone
      Si Range.Find.Found Alors
      Range.Collapse wdCollapseStart
      Range.Find.Execute Remplacer : = wdReplaceAll
      Fin si
    • Auto-vidage. Certains paramètres de recherche, Word change indépendamment. Il existe des paramètres interdépendants où un paramètre est réinitialisé lorsque vous modifiez l'autre. Il existe des options que Word réinitialise lorsque vous lancez une recherche. Par conséquent, en cas de remplacements en masse, je vous conseille de prescrire tous les paramètres pour chaque remplacement.
  • Recherche, divers
    • Lors de la recherche d'un style, nous voyons un bug intéressant dans le paragraphe devant le tableau. Le paragraphe est stylisé dans un style. En regardant en arrière, tout va bien. Mais lors de la recherche vers l'avant, la recherche trouve d'abord un paragraphe sans marque de paragraphe, et lorsque vous continuez la recherche, elle trouve une marque de paragraphe. Qu'est-ce qui passe par le dialogue, qu'est-ce que la macro.
    • Lors du remplacement de texte, les signets sont supprimés ou endommagés :
      • Les signets inclus dans le texte remplacé sont supprimés.
      • Le signet, dont la zone coïncide avec le texte remplacé, est supprimé.
      • Un signet couvrant une partie du texte est coupé et poussé hors du texte.
      • Conserve un signet de point au bord du texte.
    • Continuez toujours la recherche à partir de la fin du bloc trouvé. Par exemple, à partir de la fin d'un paragraphe, pas du début du suivant. Sinon, il y a une forte probabilité de bouclage, en particulier dans les tables.
    • Recherche sans texte - format uniquement (gras, italique, etc.), commence à partir du bord de la zone sélectionnée dans le sens de la recherche. La région s'effondre dans le sens de la recherche.
    • La recherche ne fonctionnera pas si le texte que vous recherchez occupe toute la zone de recherche.
      • Exemple. Dans la zone R contenant le texte R.Text = "Ivan", la recherche de R.Find.Text = "Ivan" ne fonctionnera pas.
    • Dans le tableau, pour rechercher dans le dernier paragraphe de la cellule du tableau à l'aide de Sélection, vous devez prendre la zone de paragraphe sans le dernier caractère. La raison est clairement visible si vous exécutez le code : Cell.Plage.Caractères.Dernier.Sélectionner
    • Tenez-en compte lors de la recherche de caractères contenant plus d'un caractère. Tels que le caractère de fin de cellule de tableau (13 + 7), les hyperliens, etc.
      • Exemple. La recherche par motif "Vasya [!.]" ne trouvera pas le mot "Vasya" en dernier dans une cellule de tableau ou avant un lien hypertexte.
    • Si la zone de recherche couvre une partie du lien hypertexte, alors le lien hypertexte entier sera recherché. Il est souhaitable d'aligner la zone de recherche avec le début / la fin du caractère (Caractère). Par exemple, comme ceci :
      Range.SetRange Start : = Range.Characters.First.Start, End : = Range.Characters.Last.End
    • Lors de la recherche dans la zone sélectionnée (Sélection), veuillez noter que le tableau ne peut pas sélectionner : vidange + cellule.
      • Exemple. Le code ci-dessous sélectionnera tout du début de la ligne de cellule du tableau à la fin du document :
        Plage (position dans une cellule du tableau, position de fin de document) .Sélectionner
    • Find.Execute renvoie parfois False alors que la recherche est réussie et Find.Found = True. Celles. il est plus prudent d'écrire comme ceci :
      Plage.Rechercher.Exécuter
      Si Range.Find.Found = True Alors ...
    • En tant que macro, vous pouvez implémenter l'option de recherche "Sélectionner tout ..." pour un style, une police ou une autre mise en forme à l'aide de la commande SelectSimilarFormatting
      • Exemple. Sélectionnez toutes les occurrences du style Titre 1 :
        Selection.Find.Style = "Titre 1"
        Sélection.Rechercher.Exécuter
        Application.Exécutez "SelectSimilarFormatting"
    • Le caractère spécial ^ d (alias ^ 19 - le début du champ, il y a aussi ^ 21 - la fin du champ) vous permet de rechercher à la fois des champs et des champs d'un certain type. De plus, vous pouvez rechercher, sélectionner et traiter des champs obligatoires strictement filtrés.
      • Un exemple de traitement des champs de type AUTOTEXT :
        • Activer le mode d'affichage du code de champ (Alt + F9)
        • Ouvrez la fenêtre de recherche avancée (Ctrl + F, Ctrl + H)
        • Dans le champ "Rechercher", saisissez le texte : ^ d ^ wAUTOTEXT ^ w
        • Nous activons le drapeau "Sélectionner tous les éléments ..."
        • Cherchons. En conséquence, tous les champs de type AUTOTEXT seront mis en évidence. De plus, ce ne sont pas les fragments requis du code de champ qui sont mis en évidence, mais les champs entiers !
        • Le groupe de champs sélectionné peut être coupé, copié, supprimé, formaté, etc.
        • Vous pouvez revenir au mode d'affichage des valeurs des champs (Alt + F9). Dans ce cas, les champs resteront sélectionnés.
    • Si vous exposez Selection.Find.Wrap = wdFindContinue, puis lors de la recherche sur le bord (début / fin du document), ce paramètre se réinitialisera automatiquement et deviendra wdFindStop.

Police de caractère

  • La propriété Range.Font n'inclut pas d'informations sur les espaces ou d'autres caractères vides dans la portée Range si la zone contient des caractères visibles.
  • Modification de tout paramètre de police Range.Font, espaces et autres caractères vides qui sont les derniers de la plage, après le caractère visible, les paramètres de police ne changeront pas.

TEXTE CACHÉ (Font.Hidden)

  • Lorsque le texte masqué est visible (ShowHiddenText = True), il se comporte comme du texte normal.
  • Lorsque le texte masqué n'est pas visible (ShowHiddenText = False), alors :
    • Le texte masqué est exclu des propriétés :
      Paragraphes
      Portée.Caractères
      Plage.Texte
    • Le texte masqué reste dans les propriétés :
      Plage.Début
      Fin.Plage
      Plage.Police
      Type.Sélection
  • Lorsque vous basculez la visibilité du texte masqué (ShowHiddenText), vérifiez et ajustez la plage. Il est conseillé d'éviter une situation où le texte est masqué et le bord de la zone est à l'intérieur du texte masqué.

LES TABLES

  • La commande Sélectionner pour sélectionner des colonnes dans un tableau fonctionne différemment lorsque le tableau se trouve sur une seule page et lorsqu'il se trouve sur plusieurs pages.
  • Si la zone est réduite et se trouve au début du paragraphe immédiatement après le tableau, alors cette zone a Range.Tables.Count = 1. Par conséquent, il est préférable de vérifier la présence dans le tableau avec la fonction Plage.Informations (wdWithInTable).
  • Si la sélection est située immédiatement après la dernière cellule de la ligne du tableau, alors :
    Selection.Cells.Count = 1
    Selection.Range.Cells.Count = 0
  • Soyez prudent lorsque vous utilisez des commandes de paragraphe dans des tableaux avec des cellules fusionnées. Par exemple: Selection.Move Unité : = wdParagraph, Nombre : = 1... Le bouclage est possible lors de la recherche.
  • L'insertion d'une nouvelle colonne dans le tableau peut ne pas être possible en raison de l'erreur "Largeur maximale dépassée". Par conséquent, lors de la création d'un tableau avec une macro, il est préférable de définir les colonnes sur une largeur fixe et, après le remplissage, vous pouvez activer l'ajustement automatique, etc.

MODES

  • Il est souhaitable d'exclure les espaces des noms de style générés par l'utilisateur. Par exemple, s'il y a des espaces, la fonction Tout sélectionner du style échoue. Cela ne s'applique pas aux styles en ligne.
  • Les noms de style en ligne sont spécifiques aux paramètres régionaux et écrits dans la langue de l'interface. Par exemple, le style "Titre 1" dans Mot russe, c'est "Header 1" en anglais. Dans les macros, pour les styles en ligne, les nombres wdBuiltinStyle doivent être utilisés pour améliorer la compatibilité.
  • Travaillez soigneusement avec les styles inutilisés (Style.InUse = False). Bien que ces styles soient situés dans la collection du document (Document.Styles), ils ne se rapportent pas encore au document, il est plus correct de les considérer comme un groupe distinct. Word garde une trace de tels styles, et même une simple lecture par une macro de propriétés (pas toutes, mais par exemple Style.Description) d'un style inutilisé, provoque la connexion automatique de ce style au document et la reconfiguration en chaîne des autres styles. En conséquence, le document sera modifié (Document.Saved = False), les liens de ses styles (Propriétés BaseStyle, LinkStyle) seront reconfigurés selon un algorithme Word interne, des changements de formatage du document peuvent apparaître.
  • Le paramètre de style InUse signifie que le style est connecté au document. Cela ne signifie pas que le style est utilisé en ce moment, il suffisait d'appliquer le style plus tôt. Il peut également s'agir d'un style créé ou modifié dans ce document.
    • Exemple. Si vous appliquez le style Légende par défaut à votre document, puis supprimez tous les styles qu'il a stylisés, le paramètre InUse du style Légende reste True.
  • Attribuez le style par le nom, pas par l'objet.
    • Erreur (il échouera si le nom du style est "005", c'est-à-dire un nombre sous forme de texte) :
      Selection.Find.Style = MonStyle
    • Droit:
      Selection.Find.Style = MonStyle.NomLocal
  • Dans un style de tableau par programmation (par une macro), vous ne pouvez pas définir :
    • Alignement vertical du texte de la cellule.
    • Valeurs de champ de cellule par défaut (pour l'ensemble du tableau) (TopPadding, etc. modifie les champs de toutes les cellules de style à la fois).
    • Option "Comme dans l'ensemble du tableau" pour les champs de cellule.

FRAGMENT SÉLECTIONNÉ

  • L'objet Selection est unique, tout comme nombre de ses propriétés et méthodes. Par exemple, dans l'objet Range, la gamme d'outils pour travailler avec la zone est nettement inférieure à Selection.
  • Le plus incontestable de Selection est qu'il est possible de travailler avec plusieurs fragments sélectionnés à différents endroits du document. Contrairement à Range, où un seul fragment de document continu peut être traité.
  • Essayez d'utiliser la sélection le moins possible dans les macros, en particulier dans les macros complexes. Uniquement lorsque cela est nécessaire. La raison en est le changement de sélection, de nombreuses opérations automatiques de Word sont liées. L'utilisation de Selection, au mieux, ralentira considérablement la macro, au pire, cela entraînera une erreur, un plantage.
  • Ne confondez pas les mêmes propriétés et méthodes pour Object.Properties et Object.Range.Properties. Par exemple, les propriétés Selection et les mêmes propriétés Selection.Range peuvent différer considérablement.
  • La commande ActiveDocument.Styles.Add ne fonctionne pas pour certains Selection.Types (par exemple, le canevas est sélectionné).
  • Lorsque Selection.Range est au début d'un paragraphe, la commande Selection.Collapse wdCollapseStart déplace parfois le curseur à la fin du paragraphe précédent.
  • Les propriétés de sélection font référence à la partie active du document.
    • Exemple:
      ActiveDocument.StoryRanges (Index : = wdFootnotesStory) .Select
      Selection.Find.Execute "chercher quelque chose et trouver ...
      "jusqu'à la prochaine commande, la sélection est dans l'histoire des notes de bas de page
      " ERREUR:
      ActiveDocument.Range (Selection.Start, Selection.End) .Select
      "sélectionné inconnu dans la partie principale du document (wdMainTextStory)
      " DROIT:
      Selection.SetRange Selection.Start, Selection.End
  • Sans utiliser de tampon, la sélection peut être copiée et déplacée dans le document à l'aide des commandes CopyText et MoveText, respectivement.

OBJETS

  • Vérification de l'objet :
    • L'objet est rien = vrai si l'objet n'est pas défini.
    • IsObjectValid (Objet)<>Vrai si l'objet a été supprimé.
      • Je recommande d'utiliser cette vérification lors du traitement par lots d'objets dans une boucle For Each.
      • En plus des objets distants, ce contrôle attrape également les objets endommagés (il y en a aussi).
  • Vérification du type d'objet :
    • Si TypeOf Object est Type Then
  • Nom du type d'objet :
    • S = VBA.TypeName (Objet)
  • Écrire une propriété d'un objet par son nom :
    • CallByName Selection.Find, "Texte", vbLet, "chaise"
    • Analogue: Selection.Find.Text = "chaise"
  • Lire une propriété d'un objet par son nom :
    • S = CallByName (Selection.Find, "Text", vbGet)
    • Analogique : S = Sélection.Rechercher.Texte
  • Appeler une méthode d'un objet par son nom :
    • CallByName Selection.Find, "Execute", vbMethod, "chair", True
    • Analogue: Selection.Find.Execute "chair", True
  • En supprimant un paragraphe, vous supprimez les dessins, les zones de texte et les autres objets qui y sont attachés.
  • Lorsque vous travaillez avec des dessins (objets Shape et InLineShape), vous devez prendre la version Word au sérieux. Le résultat du travail d'un même code, dans des versions de Word peuvent différer considérablement.
  • Les objets de type Shape, ne se lient pas à un paragraphe, mais à un emplacement dans un paragraphe. ShapeRange fonctionne en conséquence.
    • Exemple. Un saut de page divise un paragraphe en deux parties (pas deux paragraphes). La première partie sera sur une page, la seconde sur une autre. Et les images peuvent être insérées à la fois sur une page et sur une autre, en référence au même paragraphe. Le signe "saut de colonne" fonctionne de la même manière.
  • Le paramètre d'ancrage est souvent ignoré lors de la création d'une forme. Couper et coller Shape aide. Dans ce cas, l'ancre correspond toujours au point d'insertion, ce qui permet à la forme d'être ancrée même à un seul caractère.
    • Un exemple d'insertion et d'ancrage d'une forme de cœur :
      Dim R comme plage, SH comme forme
      Set R = Selection.Range "emplacement d'ancrage
      R.Collapse wdCollapseStart
      Définir SH = ActiveDocument.Shapes.AddShape (msoShapeHeart, 0, 0, 100, 100, R) " buggy
      Si R.Démarrer<>SH.Anchor.Start Puis "vérifier et corriger
      SH.Anchor.Cut
      R.Coller
      Définir SH = R.ShapeRange (1)
      Fin si
  • Lors du positionnement de la forme sur la page - lors de la modification des propriétés Haut et Gauche, utilisez des variables comme Une variante. Sinon, la position de la forme peut sauter. Par exemple, lors de l'utilisation du type Single.

FORMULAIRE, PANNEAU, MENU

  • Laissez toujours le paramètre TakeFocusOnClick pour les éléments de formulaire non modaux (ShowModal = False) True. Sinon, le formulaire ne recevra pas le focus lorsqu'il est inactif ou perdra le focus lorsque l'élément de formulaire appelle une autre boîte de dialogue.
  • Lors de la création d'éléments de barre d'outils (boutons, menus, etc.), le paramètre Temporary dans la commande CommandBarControls.Add est ignoré. Temporaire est toujours False, cependant.

AUTRE

  • Lors de la vérification du code de caractère, gardez à l'esprit que la fonction AscW () peut renvoyer un nombre négatif puisque la plage Unicode est de -32768 à 65535.
    • Par exemple, vous devez vérifier que le code du caractère est compris entre 0 et 32 :
      si AscW (S)<= 32 then " ошибка!
      si AscW (S)> = 0 et AscW (S)<= 32 then " правильно
  • Complétez les commandes Copier, Couper, Coller et autres qui fonctionnent avec le presse-papiers avec la commande DoEvents. Sinon, l'erreur "il n'y a pas de données dans le tampon ou le format n'est pas correct" peut se produire. Particulièrement important lors de l'utilisation d'un tampon dans une boucle.
  • Lorsque vous ouvrez un document en mode lecture seule, des modifications peuvent toujours se produire dans le document. Dans ce cas, la propriété Document.Saved deviendra égale à False. Cela est dû aux paramètres du document et de Word. Par exemple, si l'option "mettre à jour automatiquement les liens à l'ouverture" est active.
  • La collection Application.Documents comprend également des documents masqués qui ne peuvent pas être activés (ActiveDocument).
  • Veuillez noter que Range.Start et Range.Characters.First.Start ne sont pas toujours les mêmes. Par exemple, lorsque Range.Start se trouve dans une référence croisée, un lien hypertexte, etc.
  • Même lorsque Range est réduit Range.Characters.Count = 1. Par conséquent, la longueur zéro de la région doit être vérifiée comme suit :
    Si Range.Start = Range.End Then ...
  • Ne confondez pas Len (Range.Text) avec Range.Characters.Count. Un Caractère peut contenir plusieurs caractères, ce qui signifie qu'une situation est possible lorsque : Len (Range.Text)> Range.Characters.Count
  • La fonction InRange renverra False si la région en cours de vérification est réduite et se trouve à la fin de la région parent. Mais renverra True si la zone réduite est au début. Une telle logique délicate, non écrite dans la documentation.
  • Application.Run ne renvoie pas les paramètres Variant. Définissez le type explicitement.
    • Exemple d'erreur :
      Sous AAA ()
      Dim V As Variant "devrait être écrit As Long
      Application.Run MacroName : = "BBB", VarG1 : = V
      MsgBox V
      Fin du sous-marin
      Sous BBB (ByRef V)
      V = 123
      Fin du sous-marin
  • InsertParagraphBefore / After ne fonctionne parfois pas. En le remplaçant par : InsertBefore Text : = vbCr aide.
  • La zone avec le dernier caractère du document se comporte de manière non standard, ce qui peut conduire à une boucle sans fin.
    • Exemple:
      ActiveDocument.Range.Characters.Last.Select
      Selection.Collapse Direction: = wdCollapseEnd "glitch here
  • L'instruction With ... End With revient à déclarer et à libérer une nouvelle variable. Le nom de la variable semble être vide, et pour accéder à ses propriétés il suffit d'imprimer un point.
    • Exemple d'erreur :
      Dim C As Cell, I As Long
      Avec sélection
      Pour i = 1 To Selection.Cells.Count "il y a plusieurs cellules
      .Cellules (i) .Plage.Texte = "X"
      Ensuite je
      Terminer par
    • Exemple corrigé :
      Dim C As Cell, I As Long
      Avec Selection.Cells
      Pour i = 1 à .Count
      .Item (i) .Range.Text = "X"
      Ensuite je
      Terminer par
  • Allez au début de la N-ième page du document :
    ActiveDocument.GoTo (wdGoToPage, wdGoToAbsolute, N) .Select
    ou
    Selection.GoTo (wdGoToPage, wdGoToAbsolute, N)
  • Lorsque plusieurs applications Word s'exécutent simultanément à l'aide du même complément, vous ne pouvez pas exécuter la commande Document.Save sur ce complément et d'autres applications Word le bloqueront. Autrement dit, si vous stockez des données dans le corps du complément, par exemple, dans des variables (Variables), vous ne pourrez pas les enregistrer. C'est peut-être bien, mais si vous devez enregistrer, utilisez un fichier ini, un registre, etc.


Vous avez aimé l'article ? Partagez-le