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

Word Discussion :

Remplacement par "" qui ne fonctionne pas.


Sujet :

Word

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 60
    Points
    60
    Par défaut Remplacement par "" qui ne fonctionne pas.
    Bonjour à tous,

    - Le contexte : La fonction ci-dessous est intégrée dans une module Access et doit être compatible avec les outils office 2002 et 2013.
    Elle est utilisé dans un 'publipostage' maison via un outil Access sur le document Word actif.

    - Mon problème : quand NewValue = "", aucun remplacement n'est effectué, sauf si je remplace "" par un espace comme dans le 'test Gillou.
    Mais au rendu final, c'est pas propre.
    Y a t'il un moyen pour forcer le remplacement par une chaîne vide via cette fonction ?

    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
    Public Sub ReplaceInWord(ByRef appword As Object, ByRef OldValue As String, ByRef NewValue As String, Optional Lngcolor As Long = 0)
            'remplace tous les occurences de OldValue par NewValue dans le document actif de appword :
     
        Debug.Print OldValue & " > " & NewValue
        Dim tmpRange As Word.Range
     
        For Each tmpRange In appword.ActiveDocument.StoryRanges
            With tmpRange.Find
                .Text = OldValue
                'test Gillou
                'If NewValue <> "" Then
                    .Replacement.Text = NewValue
                'Else
                '    .Replacement.Text = " "
                'End If
                .Wrap = wdFindContinue
                .ClearFormatting
                .Replacement.ClearFormatting
                If Lngcolor <> 0 Then
                    .Font.Color = Lngcolor
                End If
                .Replacement.Highlight = False
                .Forward = True
     
                .Execute Replace:=wdReplaceAll
            End With
        Next tmpRange
     
    End Sub

    Merci d'avance pour les infos

  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 : 60
    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 gillou13,

    Citation Envoyé par gillou13
    - Mon problème : quand NewValue = "", aucun remplacement n'est effectué, sauf si je remplace "" par un espace comme dans le 'test Gillou.
    Oui, "" signifie "chaine vide" en VBA, donc c'est le bon comportement. Que voudrais-tu faire lorsque tu as "" dans NewValue,
    • Remplacer toutes les chaines (dans ce cas, ce n'est pas la bonne syntaxe),
    • Ne rien remplacer (dans ce cas, c'est la bonne syntaxe) mais ça ne semble pas te convenir
    • Remplacer qu'une partie mais dans ce cas, laquelle ?


    Dis-nous ce que tu veux comme résultat à partir de ce que tu as initialement, va nous permettre d'y voir plus clair.

    @+

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si tu veux un résultat sans aucune ligne vide, tu aurais sans doute intérêt à travailler au niveau de la requête que tu jettes en pâture à Access; pour éviter qu'Access n'envoie des données vides à Word.

    Sinon, tu peux modifier ta macro pour qu'elle saute un enregistrement où il manque des données. Dans ce cas, il faut sans doute ajouter le moyen de récupérer la liste des "oubliés" à quelque part; sans doute un fichier texte, ou un autre document Word.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    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 : 60
    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 clementmarcotte,

    Tu as raison, il est toujours plus intéressant de filtrer en amont les infos utiles des infos inutiles.

    Mais je ne comprends toujours pas l'intérêt de remplacer "" donc rien par du vide à moins que quelque chose m'échappe.

    @+

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/03/2014, 11h52
  2. [Data] Envoyer une map par un redirect qui ne fonctionne pas
    Par Logic_613 dans le forum Spring
    Réponses: 2
    Dernier message: 18/12/2012, 21h25
  3. [XL-2003] recherche et remplace qui ne fonctionne pas
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2011, 16h24
  4. Réponses: 0
    Dernier message: 10/06/2009, 10h36
  5. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 18h54

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