Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/10/2006, 13h07   #1
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
Par défaut Mise à jour champs Word en VB

Bonjour,

je souhaite pouvoir mettre à jour des champs de Word (DOCPROPERTY) depuis excel,
en fait l'équivalent sous VB d'un word ouvert dans lequel on fait : "Ctrl-A" puis "F9" mais je sais pas si c'est possible ...

Merci d'avance
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 13h17   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Essaie
Code :
    Selection.Fields.Update
donné par l'enregistreur de macro
ou
Code :
ActiveDocument.Fields.Update
donné dans l'aide en ligne

sur fields !
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 13h38   #3
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
merci, ca fonctionne bien sauf pour les champs qui se trouvent dans les en-têtes et pieds de pages, comment faire ?

PS : ma question était un peu bête j'avoue mais en fête c'est parceque j'essayais de mettre à jour les champs word depuis excel, au lien de mettre à jour depuis le document word appelé par excel, je sais pas si je suis clair mais j'me comprends ...
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 15h52   #4
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

pour les entetes, tu peux essayer

Code :
1
2
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary). _
        Range.Fields.Update

michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h28   #5
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
ben j'ai essayé mais ca marche pas :

Code :
1
2
3
4
5
6
7
8
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary). _
        Range.Fields.Update
    ActiveDocument.Sections(2).Footers(wdHeaderFooterPrimary). _
        Range.Fields.Update
    ActiveDocument.Sections(3).Footers(wdHeaderFooterPrimary). _
        Range.Fields.Update
 
    ActiveDocument.Save
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h31   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par Australia
ben j'ai essayé mais ca marche pas :

....
c'est normal pour marcher il faut des jambes ... Word n'en as pas ... dis nous plutôt ce qui fonctionne pas (message d'erreur ..?) ... ! et ou tu as utilisé ce code...!
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h33   #7
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
est-ce qu'il y a moyen de réupérer le nombre de page d'un document word ?
surement mais comment ?
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h34   #8
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par Australia
est-ce qu'il y a moyen de réupérer le nombre de page d'un document word ?
surement mais comment ?
c'est une nouvelle question .. cela ou c'est le message d'erreur ..?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h38   #9
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
ben ce qu'il fonctionne pas c'est que ca fonctionne pas, j'ai pas de message d'insulte ni d'erreur, ca ne me met pas mes champs dans les pieds de page à jour, bien sur que s'il y avait une erreur je le donnerait, je suis pas complètement stupide bien que faisant du VB avec Word ,

sinon, j'ai trouvé ca qui fonctionne (puisque le verbe marche n'est pas à utiliser pour word)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=i
 
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.WholeStory
    Selection.Fields.Update
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
avec i la page qui possède la section,

j'ai donc besoin de savoir comment réupérer le nombre de page et je sais pas le faire et pourtant ca doit pas être bien dure,
désolé d'être si nul mais la doc de VB sous word est vraiment un peu compliqué pour moi
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h41   #10
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
? peu-être :
Code :
i= ActiveDocument.Range.Information(wdActiveEndPageNumber)
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h51   #11
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
ca fonctionne pas super, je sais pas pourquoi mais ca me donne pas le bon nombre de pages !!!
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 16h55   #12
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
n'arrivant pas à sélectionner tous les entêtes ... on peu boucler dedans... peu être :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
 
Sub MajChamps()
 Dim H As HeaderFooter
 Dim s As Section
 For Each s In ActiveDocument.Sections
    For Each H In s.Headers
      H.Range.Fields.Update
    Next
  Next
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 17h08   #13
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
déjà essayé tout à l'heure,

il me manque plus que de pouvoir récupérer le nb de pages, en plus ca fait partie des statistiques du document donc ca doit pouvoir se récupérer !!! Enfin j'éspère
je cherche
un truc du genre
Code :
statistiDocumentProperties
...
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h09   #14
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tel quel, donné par Bidou dans un post pas bien vieux mais un peu vieux quand même
Code :
1
2
3
4
Sub sélectionnerDesPagesSelonBidou()
    Selection.GoTo wdGoToPage, wdGoToFirst
    Selection.SetRange Selection.Start, Selection.GoTo(wdGoToPage, wdGoToNext, 2).End
End Sub
Avec ça, tu devrais sélectionner toutes les pages
Mais je pense à un autre solution. Je la mets au propre, je la teste et je la mets
Pas testé, c'est ça :
Code :
1
2
ActiveDocument.Footers(wdHeaderFooterPrimary). _
        Range.Fields.Update
Je regarde s'il faut ajouter un for each....
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h16   #15
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
Excusez moi d'insister un peu mais
Y a vraiment rien qui permet d'obtenir le nombre de page du document word ?
moi j'ai fait
Code :
ThisDocument.BuiltInDocumentProperties("Number of Pages").Value
mais il me donne pas plus le bon nombre de page qu'avec la solutiobn que m'a fournir bbil,
je pense qu'il donne le nombre de page de la section ou qqchose comme ca !!!!
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h35   #16
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
est il possible de voir la totalité de ta procédure ?


michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h44   #17
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
je vois pas en quoi ca peut t'aider mais la voila :
Code :
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
Public Function Mise_a_jour_variables(NumCadFt As Integer, datePrecCadFt, dateCadFT, dateProchaineCadFt, numCrCaftFT)
On Error GoTo Mise_a_jour_variables_error
    Dim nb_pages_word
    Dim i As Integer
    ThisDocument.CustomDocumentProperties("DatePrecedenteCAD") = datePrecCadFt
    ThisDocument.CustomDocumentProperties("DateCAD") = dateCadFT
    ThisDocument.CustomDocumentProperties("DateProchaineCAD") = dateProchaineCadFt
    ThisDocument.CustomDocumentProperties("numeroCAD") = NumCadFt
    ThisDocument.BuiltInDocumentProperties(wdPropertyTitle).Value = PREFIXE_TITRE & NumCadFt
    ThisDocument.BuiltInDocumentProperties(wdPropertySubject).Value = numCrCaftFT
    ThisDocument.Fields.Update
 
    'ca fonctionne pas mais on sait pas pourquoi ????
    nb_pages_word = ThisDocument.BuiltInDocumentProperties("Number of Pages").Value
 nb_pages_word = nb_pages_word * 2
    For i = 2 To nb_pages_word
       Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=i
 
       If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
           ActiveWindow.Panes(2).Close
       End If
       If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
           ActivePane.View.Type = wdOutlineView Then
           ActiveWindow.ActivePane.View.Type = wdPrintView
       End If
       ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
       Selection.WholeStory
       Selection.Fields.Update
       If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
           ActiveWindow.Panes(2).Close
       End If
       If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
           ActivePane.View.Type = wdOutlineView Then
           ActiveWindow.ActivePane.View.Type = wdPrintView
       End If
    Next i
 
    ThisDocument.Save
Exit Function
Mise_a_jour_variables_error:
    MsgBox Err.Number & " : " & Err.Description
End Function
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h57   #18
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Un pis-aller en attendant qu'on ait le nombre de page
Code :
1
2
3
4
5
6
7
8
9
Selection.HomeKey Unit:=wdStory
Do
    i = i + 1
    With Selection
        .GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Selection.Fields.Update
    End With
Loop While i < 12
Tu peux mettre 50 pages, ça plante pas. Quant à mettre les champs à jour, tu peux tester pour nous ?
NB - Faut fermer l'entête à la fin...
Edit
Code :
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 19h01   #19
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Je pense à une chose : si tu n'as pas d'entête sur une section, regarde à Exists dans l'aide
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 19h07   #20
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
ouaih, je sais qu'il plante pas c'est pour ca que je mets nombre de page *2 parceque j'ai 5 pages et qu'il me dit 3 ce p?!$ù*ù$é'(-'_è-)_è) de word
moi j'avais mis exprès 1000 pour récupérer l'erreur et manque de bol il lève pas d'erreur donc dans mon c...

après le code, j'suis pas rentré dedans, j'ai juste récupérer la macro word ...

c'est dingue quand même qu'il y ait pas une propriété nombre de page !!!

merci à toi uskel'n'or pour m'avoir supporter toute la journée,
peut être deain qqun aura une solution sur le nb de page mais la j'en ai marre de chez marre donc j'vais arrêter
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h33.


 
 
 
 
Partenaires

Hébergement Web