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

Windows Forms Discussion :

modification de l'entete du document word


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 40
    Par défaut modification de l'entete du document word
    Bonjour tout le monde

    J'ai crée une fonction qui remplace un mot par un autre dans document Word,
    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
     
            private void FindAndReplace(Word.Application WordApp, object findText, object replaceWithText)
            {
     
                object replaceAll = Word.WdReplace.wdReplaceAll;
                object missing = System.Reflection.Missing.Value;
                WordApp.Selection.Find.ClearFormatting();
                WordApp.Selection.Find.Text = findText.ToString();
     
                WordApp.Selection.Find.Replacement.ClearFormatting();
                WordApp.Selection.Find.Replacement.Text = replaceWithText.ToString();
     
                WordApp.Selection.Find.Execute(
                    ref missing, ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing, ref missing,
                    ref replaceAll, ref missing, ref missing, ref missing, ref missing);
     
            }
    cette fonction fonctionne bien, mais il ne remplace pas les mot qui se trouve dans le entêtes (header, footer)

    Merci de m'aider a resoudre ce problème
    merci

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Ceci devrait t'aider :
    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
        internal Word.Application WA_Application          = null ;
        internal Word.Document    WA_Document             = null ;
        private  static object    TrueObject              = true ;
        private  static object    FalseObject             = false ;
        internal static object    MissingObject           = System.Reflection.Missing.Value ;
    
    internal bool Wa_ReplaceInAllDocument(string FindText,string ReplaceText)    
    { // replaces text also in Headers and Footers 
          Word.WdViewType SaveViewType=WA_Document.ActiveWindow.View.Type;
          bool Result=false ;
          Word.Range [] Ranges=Wa_DocumentRangeIncludingFootersAndHeaders() ;
          for (int i=0;i<Ranges.Length;i++) Result=Result | WA_Replace(Ranges[i],FindText,ReplaceText) ;
          WA_Document.ActiveWindow.View.Type=SaveViewType ;
          return Result ;
        }
    
    internal Word.Range [] Wa_DocumentRangeIncludingFootersAndHeaders() 
        {
          int RangeCount=1 ; // At least the Document Range 
          for (int i=1;i<=WA_Document.Sections.Count;i++) RangeCount+=WA_Document.Sections.Item(i).Headers.Count + WA_Document.Sections.Item(i).Footers.Count ; 
          Word.Range [] Result= new Word.Range [RangeCount] ;
          Result[0]=WA_Document.Range(ref MissingObject,ref MissingObject) ;
          RangeCount=1 ;
          for (int i=1;i<=WA_Document.Sections.Count;i++) 
          {
            for (int hf=0;hf<2;hf++)
            {
              Word.HeadersFooters HeadersFooters= hf==0 ? WA_Document.Sections.Item(i).Headers : WA_Document.Sections.Item(i).Footers ;
              if (HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary  )!=null)
                Result[RangeCount++] = HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary  ).Range ; 
              if (HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage)!=null)
                Result[RangeCount++] = HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage).Range ;
              if (HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages)!=null)
                Result[RangeCount++] = HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages).Range ;
            }
          }
          return Result ;
        }
    
        internal bool WA_Replace(Word.Range Range,string FindText,string ReplaceText)     {
          bool Result=Range!=null ;
          if (Result)
          {
            object FindTextObject   = FindText    ;
            object ReplaceTextObject= null ;
            if ((Object)ReplaceText!=null) ReplaceText = ReplaceText.Replace(SxStrings.CRLF,"^p");
            while ((Object)ReplaceText!=null)
            {
              if (ReplaceText.Length>250)
              {
                int rlength = 250-FindText.Length;
                if (ReplaceText.Substring(0,rlength).EndsWith("^")) rlength--;
                ReplaceTextObject = ReplaceText.Substring(0,rlength) + FindText;
                ReplaceText = ReplaceText.Substring(rlength);
              }
              else
              {
                ReplaceTextObject = ReplaceText;
                ReplaceText = null;
              }
              object ReplaceObject    = 2          ; // 2=ReplaceAll
              Range.Select() ;
              Result= Range.Find.Execute( 
                ref FindTextObject   , ref MissingObject, ref TrueObject    , // FindText       , Matchcase      , WholeWord
                ref MissingObject    , ref MissingObject, ref MissingObject , // WildCard       , MatchSoundsLike, MatchAllWordsForm
                ref TrueObject       , ref MissingObject, ref MissingObject , // Forward        , Wrap           , Format
                ref ReplaceTextObject, ref ReplaceObject, ref MissingObject , // ReplaceWith    , Replace        , MatchKasida    
                ref TrueObject       , ref MissingObject, ref MissingObject); // MatchDiacritics,MatchAlefHamza  , MatchControl
            }
          }
          return Result ;
        }

  3. #3
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 40
    Par défaut
    Merci pour votre réponse,
    j'ai essayé de compiler ce code, et le compilateur donne ces erreurs
    'Microsoft.Office.Interop.Word.Sections' ne contient pas une définition pour 'Item' et aucune méthode d'extension 'Item' acceptant un premier argument de type 'Microsoft.Office.Interop.Word.Sections' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) C:\Users\PcAitbouhou\Desktop\RemplaceWord\RemplaceWord\Class1.cs 40 147 RemplaceWord
    Nb; je travaile sur framework 3.5 visual studio
    merci

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Ca marche chez moi (framework 3.5 visual studio aussi).

    Mais, essaie simplement de remplacer WA_Document.Sections.Item(i) par WA_Document.Sections[i] - ou par WA_Document.Sections(i) -.

  5. #5
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 40
    Par défaut
    Salut
    le variable Word est de quelle type ?
    et comment faire pour charger le document word dans ce cas
    merci

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    internal Word.Application WA_Application          = null ;
    internal Word.Document    WA_Document             = null ;
    // WA_Application          =  WordApp ;
    WA_Document=WA_Application.Documents[0] ;
    le variable Word est de quelle type ?
    C'est une classe de Office Interop.

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

Discussions similaires

  1. [SP-2007] Problème modification document word
    Par matthieu.simar dans le forum SharePoint
    Réponses: 11
    Dernier message: 29/09/2011, 11h14
  2. [SP-2007] Modification document Word 2003
    Par matthieu_lasalle dans le forum SharePoint
    Réponses: 0
    Dernier message: 24/04/2009, 10h11
  3. Création et modification de document Word
    Par wulfram dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/02/2009, 22h43
  4. Réponses: 7
    Dernier message: 11/11/2008, 00h19
  5. [OpenOffice][Texte] Modification d'un document word avec OpenOffice.
    Par maxlegrand dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 16/11/2007, 17h54

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