Processus dans Microsoft 365 pour configurer des applications Office, entrer des clés de produit et activer des licences.
Bonjour, et merci pour ces informations
Bernard
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Bonjour
J'ai un texte qui contient des paragraphes dont certains contiennent des lignes de la forma:
11. Prénom1 Prenom2 particule1 NOM1 particule2 NOM2
comme
11. Pierre Jacques de FRANCE de la TOUR
Les prénoms et noms sont dotés d'un style HOMME ou FEMME selon leur sexe.
Je cherche à mettre au point une procédure pour détecter ces patronymes, les reformater pour obtenir
FRANCE (de) LA TOUR (de) Pierre Jacques
en vue d'en créer un index
Voici le début de cette procédure:
Sub ReformaterPatronymes()
Dim para As Paragraph
Dim rng As Range
Dim word As Range
Dim prenoms As String, noms As String, particules As String
Dim newPatronyme As String
Dim currentStyle As String
Dim isNom As Boolean
Dim wordArray() As String
Dim i As Integer
' Liste des particules reconnues
Dim particulesList As Object
Set particulesList = CreateObject("Scripting.Dictionary")
particulesList.Add "de", True
particulesList.Add "du", True
particulesList.Add "des", True
particulesList.Add "la", True
particulesList.Add "le", True
particulesList.Add "les", True
' Parcourir tous les paragraphes du document actif
For Each para In ActiveDocument.Paragraphs
Set rng = para.Range
rng.Start = para.Range.Start
rng.End = para.Range.Start
' Rechercher une ligne commençant par un nombre suivi d'un point et d'un espace
Debug.Print "Word(1)=" & para.Range.words(1)
If Not IsNumeric(para.Range.words(1)) Then GoTo ParaSuivant
Debug.Print "Word(2)=" & para.Range.words(2)
If Not DétectePrésencePoint(para.Range.words(2)) Then GoTo ParaSuivant
' Rechercher le premier mot ayant le style "Homme" ou "Femme"
For Each word In para.Range.words
If word.Style = "Homme" Or word.Style = "Femme" Then
rng.Start = word.Start
currentStyle = word.Style
Debug.Print "Word=" & word.Text
Exit For
End If
Next word
**' Étendre la sélection à tous les mots suivants ayant le même style**
**For Each word In para.Range.words**
**Debug.Print "Word=" & word.Text**
**'si le début du mot est bien dans le paragraphe**
**If word.Start >= rng.Start Then**
**If word.Style = currentStyle Then**
**'on étend la sélection**
**rng.End = word.End**
**Else**
**Exit For**
**End If**
**End If**
**Next word**
Dans cette dernière partie qui cherche les mots suivants possédant le style HOMME ou FEMME ne fonctionne pas car, entre temps, VBA "lit" le style comme étant Normal alors qu'il est bien Homme!
Pourquoi VBA fait une fausse lecture de cette propriété ?
Merci pour votre aide
Bernard
Processus dans Microsoft 365 pour configurer des applications Office, entrer des clés de produit et activer des licences.
Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.
Bonjour, et merci pour ces informations
Bernard
Cette réponse a été automatiquement traduite. Par conséquent, il peut y avoir des erreurs grammaticales ou des formulations étranges.
Bonjour, BernardBouree
Bienvenue dans la communauté de support Microsoft.
Je comprends le problème que vous rencontrez avec la question macro. Malheureusement, le forum Microsoft Answers ne prend pas en charge VBA. il est mieux adapté pour la publication sur les questions les plus récentes de 'vba' - Stack Overflow (en anglais seulement).
Utilisez des balises VBA et d’autres balises pertinentes pour publier des questions de programmation VBA sur les dernières questions 'vba' - Stack Overflow
Gardez à l’esprit que Stack Overflow a des directives telles que la nécessité d’un titre descriptif, d’un énoncé de problème complet et concis et de suffisamment de détails pour reproduire votre question. Les demandes de fonctionnalités ou les questions trop larges sont considérées comme hors sujet.
Clause de non-responsabilité : Microsoft n’offre aucune garantie, implicite ou autre, et n’est pas responsable des informations que vous recevez des sites tiers liés ou de tout support lié à la technologie.
Même si je ne peux pas vous aider, j’espère que les informations que j’ai fournies vous aideront à trouver une meilleure direction. Je garderai ces informations dans mes dossiers au cas où l’un de nos merveilleux bénévoles aurait une idée pour vous.
Merci de votre compréhension.
Allen L- MSFT | Spécialiste du support communautaire Microsoft