IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Espace insécable dans les dates en FR & en ANG


Sujet :

VBA Word

  1. #1
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut Espace insécable dans les dates en FR & en ANG
    Bonjour!

    Dans un document, j’ai des parties de texte en français et d’autres en anglais. Je veux que des espaces insécables soient insérés avant et après les mois lorsqu’une date est donnée. Alors voilà, j’ai la macro ci-dessus qui le fait pour les dates qui sont écrite en français (ex. : 31 mai 2009) mais j’ai besoin de l’adapter – dans la même macro - pour les dates en anglais (ex. : May 31, 2009)

    Pouvez-vous me donner un coup de main?! Merci!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    sub Espace ()
     
    'Espace insécable pour les dates en français
    Dim sInsécable As String
    sInsécable = Chr(160)
    Dim i As Byte
    With Selection.Find
      For i = 1 To 12
        .Execute Format$(DateSerial(Year(Now), i, 1), " mmmm "), True, , , , , , wdFindContinue, False, sInsécable + Format$(DateSerial(Year(Now), i, 1), "mmmm") + sInsécable, wdReplaceAll
     Next i
    End With
     
    'Espace insécable pour les dates en anglais
     
    ':)???

  2. #2
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Souriane,

    Le format des dates est défini dans Word par configuration de la langue et/ou par la langue du système. Il est possible de le modifier mais tu peux te simplifier la vie en faisant le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
        Dim aTable(1 To 24) As String
     
        aTable(1) = "janvier"
        aTable(2) = "février"
        aTable(3) = "mars"
        aTable(4) = "avril"
        aTable(5) = "mai"
        aTable(6) = "juin"
        aTable(7) = "juillet"
        aTable(8) = "août"
        aTable(9) = "septembre"
        aTable(10) = "octobre"
        aTable(11) = "novembre"
        aTable(12) = "décembre"
        aTable(13) = "January"
        aTable(14) = "February"
        aTable(15) = "March"
        aTable(16) = "April"
        aTable(17) = "May"
        aTable(18) = "June"
        aTable(19) = "July"
        aTable(20) = "August"
        aTable(21) = "September"
        aTable(22) = "October"
        aTable(23) = "November"
        aTable(24) = "December"
     
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        '// Traitement de l'espace pour le français
        For aI = 1 To 12
            With Selection.Find
                .Text = "([0-9]) (" + aTable(aI) + ") ([0-9])"
                .Replacement.Text = "\1^s\2^s\3"
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = True
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            Selection.Find.Execute Replace:=wdReplaceAll
        Next
     
        '// Traitement de l'espace pour l'anglais
        For aI = 13 To 24
            With Selection.Find
                .Text = "(" + aTable(aI) + ") ([0-9])"
                .Replacement.Text = "\1^s\2"
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = True
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            Selection.Find.Execute Replace:=wdReplaceAll
        Next
    Attention, j'ai gardé ton principe mais dans la version française il y a un problème à mon avis. Tu n'as pas pris en compte les dates dont un espace (celui de devant ou de derrière) serait un espace simple mais dont l'autre serait un espace insécable (celui de derrière ou de devant). Pour garantir les 2 espaces insécables, le code devrait devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
        Dim aTable(1 To 24) As String
     
        aTable(1) = "janvier"
        aTable(2) = "février"
        aTable(3) = "mars"
        aTable(4) = "avril"
        aTable(5) = "mai"
        aTable(6) = "juin"
        aTable(7) = "juillet"
        aTable(8) = "août"
        aTable(9) = "septembre"
        aTable(10) = "octobre"
        aTable(11) = "novembre"
        aTable(12) = "décembre"
        aTable(13) = "January"
        aTable(14) = "February"
        aTable(15) = "March"
        aTable(16) = "April"
        aTable(17) = "May"
        aTable(18) = "June"
        aTable(19) = "July"
        aTable(20) = "August"
        aTable(21) = "September"
        aTable(22) = "October"
        aTable(23) = "November"
        aTable(24) = "December"
     
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        '// Traitement de l'espace devant pour le français
        For aI = 1 To 12
            With Selection.Find
                .Text = "([0-9]) (" + aTable(aI) + ")"
                .Replacement.Text = "\1^s\2"
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = True
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            Selection.Find.Execute Replace:=wdReplaceAll
        Next
        '// Traitement de l'espace derrière pour le français
        For aI = 1 To 12
            With Selection.Find
                .Text = "(" + aTable(aI) + ") ([0-9])"
                .Replacement.Text = "\1^s\2"
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = True
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            Selection.Find.Execute Replace:=wdReplaceAll
        Next
     
        '// Traitement de l'espace derrière pour l'anglais
        For aI = 13 To 24
            With Selection.Find
                .Text = "(" + aTable(aI) + ") ([0-9])"
                .Replacement.Text = "\1^s\2"
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = True
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            Selection.Find.Execute Replace:=wdReplaceAll
        Next
    @+

  3. #3
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut
    Super ça fonctionne nickel!

    Gros merci Sépia!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Espaces insécables dans les références biblio
    Par DorianD dans le forum Bibliographies - Index - Glossaires
    Réponses: 1
    Dernier message: 02/05/2012, 16h46
  2. Espaces insécables dans les noms de fichier
    Par Lcf.vs dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2010, 20h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo