1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| 'Recherche et remplacement d'une liste de mots
'===============================
'
Function NetText(stTemp As String) As String
'===========================================
'Fonction de nettoyage
'Supprime les deux caract�res de fin de cellule
'
'NetText = Left(stTemp, Len(stTemp) - 2) 'Left(cha�ne,nb_caract�res � gauche)
'stTemp : variable de cha�ne de caract�re ?
'Len donne le nombre de caract�res d'une cha�ne (=nbcar() sur Excel)
NetText = Left(stTemp, Len(stTemp))'Remplace la ligne pr�c�dente, car pas besoin de supprimer les deux caract�res de fin de cellule
End Function
'Nous l'utiliserons dans la proc�dure suivante pour obtenir les mots recherch�s et les mots de remplacement.
'
Sub RemplacerListeDeMots()
'==================
'Cette macro a pour r�le de remplacer les mots d'un document par
'une liste de mots se trouvant dans une table � deux colonnes
'___________________________________________________
'
'D�claration des variables correspondant aux fichiers
'----------------------------------------------------
'Le document oDocSource contient la liste des mots � chercher
'et le document oDocCible les mots � remplacer
Dim oDocSource As Document, oDocCible As Document
'
'D�claration des variables Table
Dim oTbl As Table 'D�finition de tableau
Dim oRow As Row 'D�finition de ligne
'
'Une bo�te de dialogue pour choisir les documents
Dim oDlg As FileDialog
'
'
'Dans un premier temps, nous allons ouvrir les deux documents, le premier contenant la liste des mots � rechercher
'(tableau � deux colonnes) et le second �tant celui dans lequel nous souhaitons faire les remplacements.
'
'Pour ouvrir les documents, au lieu de les mettre en "dur" dans le code, nous allons utiliser un objet "FileDialog".
'Cet objet permet de s�lectionner un r�pertoire ou un fichier. Dans notre exemple, nous allons l'utiliser pour les fichiers.
'Ce choix s'obtient par l'argument pass� lors de l'affectation.
'
Set oDlg = Application.FileDialog(msoFileDialogFilePicker)
'
'
'Ouverture du premier document
'-----------------------------
'Ouverture de la bo�te de dialogue
'Pour afficher cette bo�te de dialogue, nous allons utiliser sa m�thode ".Show".
'Comme il s'agit d'un �change avec l'utilisateur, nous avons la possibilit� de choisir un titre pour la bo�te de dialogue
'et nous n'avons besoin que d'un seul fichier.
With oDlg
.AllowMultiSelect = False
.Title = "Document contenant le tableau des mots avec exposant"
.Show 'Affichage de la bo�te de dialogue. On demande � l'utilisateur
' qu'il d�signe le fichier avec le tableau
End With
'Cet objet va renvoyer le nom du fichier choisi par l'utilisateur.
'Comme il n'y a qu'un seul fichier, nous r�cup�rons le premier �l�ment.
'
'La propri�t� SelectedItems contient :
Set oDocSource = Documents.Open(oDlg.SelectedItems(1)) 'Il n'est pas n�cessaire
' de passer par une variable, nous pouvons directement utiliser
' le r�sultat de oDlg.SelectedItems(1)en argument.
'
'Il faut r�p�ter l'op�ration une seconde fois pour le document cible
'On affiche � nouveau la bo�te de dialogue pour que l'utilisateur donne
'le nom du fichier cible
With oDlg
.AllowMultiSelect = False
.Title = "Document cible avec les occurrences � remplacer"
.Show 'Affichage de la bo�te de dialogue. On demande � l'utilisateur
' qu'il d�signe le fichier cible o� seront effectu�s les remplacements
End With
'
'L'objet oDlg va renvoyer le nom du fichier choisi par l'utilisateur.
'Comme il n'y a qu'un seul fichier, nous r�cup�rons le premier �l�ment :
'Choix du fichier : oDlg.SelectedItems(1)
'
'Ouverture du second document : Document cible avec les occurrences � remplacer
Set oDocCible = Documents.Open(oDlg.SelectedItems(1))
'
'
'Cr�ation de la boucle sur les �l�ments du tableau
'Boucle sur les �l�ments du tableau qui seront utilis�s pour la recherche et le remplacement.
'On affecte le premier tableau du document source � la variable tableau pour ensuite faire une boucle sur les lignes du tableau.
'Dans notre cas, c'est assez simple, la premi�re colonne contient le mot � rechercher et la seconde, le mot de remplacement.
'
'Affectation de la table
Set oTbl = oDocSource.Tables(1) 'On affecte le tableau du document source � la
'variable oTbl pour ensuite faire une boucle sur les
'lignes du tableau
'Boucle sur les cellules de la table
For Each oRow In oTbl.Rows 'Pour chaque ligne des lignes du tableau...
oDocCible.Select 'S�lection du document cible
Selection.HomeKey unit:=wdStory 'La recherche d�marre au d�but du document
'Dans cette boucle, nous utilisons directement le r�sultat dans notre fonction de recherche et remplacement.
With Selection.Find
' .ClearFormatting 'Ne pas tenir compte des formats dans le remplacement
' Ligne neutralis�e afin de ne pas agir sur le format exposant lors du remplacement
.Forward = True
.Text = NetText(oRow.Cells(1).Range.Text) 'Utilisation de la fonction de nettoyage
.Replacement.Text = NetText(oRow.Cells(2).Range.Text) 'Utilisation de la fonction de nettoyage
' .Replacement.ClearFormatting 'Remise � z�ro des param�tres de format de la fen�tre rechercher remplacer
' Ligne neutralis�e afin de ne pas agir sur le format exposant lors du remplacement
.Execute Replace:=wdReplaceAll 'Ex�cution de remplacer tout
End With
'
Next oRow 'La boucle continue le traitement sur la ligne suivante
'Lib�ration des objets
Set oDlg = Nothing
Set oTbl = Nothing
oDocSource.Close savechanges:=wdDoNotSaveChanges 'Fermeture du fichier du tableau sans enregistrer
Set oDocSource = Nothing
End Sub |
Partager