Personalisation des notes bas de page

phnoel Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Comment insérer, en une seule opération, une espace insécable après les numéros de toutes les notes dans le bas de page ?

Rechercher / remplacer ?

Macro ?

Merci de votre aide


Windows / Firefox 140.0

7 réponses

Résumé de la discussion

L’opération peut être automatisée par une macro VBA qui insère un espace insécable après chaque numéro de notes de bas de page dans Word.
Plusieurs codes existent, principalement des macros qui parcourent les notes et ajoutent ChrW(160) après le numéro, avec des variantes selon le format de numérotation (avec ou sans point, ou autres séparateurs).
Pour les exécuter, il faut ouvrir l’éditeur VBA (Alt+F11), ajouter un module, coller le code et lancer la macro, puis enregistrer le document en .docm.
Des retours indiquent que le placement précis de l’espace peut varier et nécessiter des ajustements (par exemple 1 ou 2 caractères après le numéro ou changer le caractère ciblé selon le format).

Généré automatiquement par IA
sur la base des meilleures réponses
  1. phnoel Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
     

    J'ai, au pif, modifié la ligne  9 par :

    noteText.MoveStart wdCharacter, 0 ' Passe le numéro

    et le résultat est correct et, je n'ai pas remarqué de dégâts collatéraux.

    Pouvez-vous toutefois me confirmer que cette modif était judicieuse ?

    Merci

    1
    1. brucine Messages postés 24942 Date d'inscription   Statut Membre Dernière intervention   4 178
       

      Bonjour,

      Si on a du mal à y parvenir par une macro, deux autres pistes.

      Modification des tabulations dans le style:
      https://www.reddit.com/r/MicrosoftWord/comments/dgj3xy/space_between_footnotes_number_and_note/?tl=fr

      Rechercher-Remplacer:
      On a ici le cas inverse (supprimer l'espace):
      https://www.reddit.com/r/MicrosoftWord/comments/sv7fp2/footnotes_space_between_footnote_number_and/?tl=fr

      mais la syntaxe de remplacement pour cette fois-ci ajouter un espace se trouve là:
      https://www.msofficeforums.com/word/28124-space-between-footnote-number-footnote.html

      où je suppose que 32 doit être remplacé par 160 si l'espace doit être insécable.

      0
    2. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   170
       

      Super !

      0
  2. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   170
     

    Bonjour,

    Si vous devez effectuer cette opération fréquemment ou sur plusieurs documents, une macro VBA peut automatiser le processus. Voici un exemple de code VBA pour Word :

    Sub InsererEspaceInsecableApresNotes()
        Dim note As Footnote
        For Each note In ActiveDocument.Footnotes
            note.Range.Text = note.Range.Text & Chr(160)
        Next note
    End Sub

    0
  3. phnoel Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
     

    Merci de votre retour.

    J'ai tenté...mais ça n'a pas fonctionné ! Ai-je oublié quelque chose ?

    0
  4. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   170
     

    Alors suivez bien ceci:

    - Accéder à l'éditeur VBA
    Appuyez sur Alt + F11 pour ouvrir l'éditeur VBA.
    Insérez un nouveau module : Insertion > Module.


    - Écrire la macro
    Copiez le code suivant pour parcourir les notes de bas de page et insérer une espace insécable après le numéro :

    Sub AjouterEspaceInsecableNotes()
        Dim note As Footnote
        Dim noteText As Range
        
        For Each note In ActiveDocument.Footnotes
            Set noteText = note.Range
            ' Supposons que le numéro est suivi d'un point ou d'un autre caractère
            If Len(noteText.Text) > 1 Then
                noteText.MoveStart wdCharacter, 1 ' Ignore le numéro de note automatique
                noteText.MoveEndUntil Cset:=".", Count:=1 ' Avance jusqu'au point
                noteText.MoveEnd wdCharacter, 1 ' Inclut le point
                noteText.InsertAfter ChrW(160) ' Insère une espace insécable (code Unicode 160)
            End If
        Next note
    End Sub

    - Exécuter la macro
    Enregistrez le document avec prise en charge des macros (.docm).
    Appuyez sur F5 dans l'éditeur VBA ou exécutez la macro depuis Affichage > Macros > Exécuter.


    La macro parcourt chaque note de bas de page et insère une espace insécable après le numéro (en supposant qu'il est suivi d'un point).


    Testez sur un document de sauvegarde pour éviter toute perte de données.


    0
    1. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   170
       

      Personnalisation :
      Si vos notes ont un format différent (par exemple, 1), 1-), modifiez la ligne noteText.MoveEndUntil Cset:="." pour cibler le caractère approprié (par exemple, ")" ou "-").

      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. phnoel Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
     

    Eh bien je suis désolé. Vos indications sont pourtant claires et précises...et ça ne fonctionne toujours pas  !

    NB le format des notes est "standard" (1,2,3...) sans point,  avec renumérotation à chaque section.

    0
    1. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   170
       

      Désolé ! Essayez cette dernière :

      Sub AjouterEspaceInsecableNotesSimples()
          Dim note As Footnote
          Dim noteText As Range
          
          For Each note In ActiveDocument.Footnotes
              Set noteText = note.Range
              ' Déplace au début du texte après le numéro automatique
              noteText.Collapse wdCollapseStart
              noteText.MoveStart wdCharacter, 1 ' Passe le numéro
              ' Vérifie s'il n'y a pas d'espace ou caractère après
              If noteText.Characters(1) <> ChrW(160) And noteText.Characters(1) <> " " Then
                  noteText.InsertBefore ChrW(160) ' Insère une espace insécable avant le texte
              End If
          Next note
      End Sub
      0
  7. phnoel Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
     

    "On" y est presque. Super.

    L'espace est mal placé (1 ou 2 caractères après le numéro)

    0
  8. phnoel Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
     

    Merci Brucine,

    La macro précedente avait fonctionné, mais les liens fournis étaient très didactique.

    Rechercher/remplacer peut être utilisé 

    0