Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

creer des nouvelles propriétes d'un document Word par macro appe l.

7 réponses
Avatar
Herve cadieu
La présente sub ne fonctionne pas et je ne comprends pas ce que je fais de
facon incorrecte qui peut me deboguer ?

Sub CreationCustomProperties()
Dim prodoc1, prodoc2, prodoc3, prodoc4, prodoc5
Set prodoc1 = CustomDocumentProperties.Add
With prodoc1
.Name = "Signer1"
.Type = msoPropertyTypeString
.Value = ""
End With
MsgBox "prodoc1 Master crée" + vbCr + "Il doit toujours signer en dernier !"

Set prodoc2 = ActiveDocument.CustomDocumentProperties.Add
With prodoc2
.Name = "Signer2"
.Type = msoPropertyTypeString
.Value = ""
End With
MsgBox "prodoc2 signataire 2 crée"

Set prodoc3 = ActiveDocument.CustomDocumentProperties.Add
With prodoc3
.Name = "Signer3"
.Type = msoPropertyTypeString
.Value = ""
End With
MsgBox "prodoc3 signataire 3 crée"

Set prodoc4 = ActiveDocument.CustomDocumentProperties.Add
With prodoc4
.Name = "NbrSignVoulues"
.Type = msoPropertyTypeValue
.Value = 1
End With
MsgBox "prodoc4 Nbre signatures souhaitées crée"

Set prodoc5 = ActiveDocument.CustomDocumentProperties.Add
With prodoc5
.Name = "NbreSignActuel"
.Type = msoPropertyTypeValue
.Value = 0
End With
MsgBox "prodoc5: nbre signatures crée"
End Sub

7 réponses

Avatar
Anacoluthe
Bonjour !!! Très bien merci et vous ?

La présente sub ne fonctionne pas et je ne comprends pas ce que je fais de
facon incorrecte qui peut me deboguer ?


Robot-débogueur-débile dire :

Sub CreationCustomProperties()
With ActiveDocument.CustomDocumentProperties

.Add Name:="Signer1", LinkToContent:úlse, _
Value:="", Type:=msoPropertyTypeString
MsgBox "Signer1 Master créé patati patata"

.Add Name:="Signer2", LinkToContent:úlse, _
Value:="", Type:=msoPropertyTypeString
MsgBox "Signer2 signataire 2 créé"

.Add Name:="Signer3", LinkToContent:úlse, _
Value:="", Type:=msoPropertyTypeString
MsgBox "Signer3 signataire 3 créé"

.Add Name:="Signer4", LinkToContent:úlse, _
Value:="", Type:=msoPropertyTypeString
MsgBox "Signer4 Nbre signatures souhaitées créé"

.Add Name:="Signer5", LinkToContent:úlse, _
Value:="", Type:=msoPropertyTypeString
MsgBox "Signer5: nbre signatures créé"

End With
End Sub

Robot-débogueur-débile fatigué

Anacoluthe
« Le danger dans le passé était que les hommes deviennent des esclaves.
Le danger dans le futur est qu'ils deviennent des robots. »
- Erich FROMM

Avatar
Jean-Guy Marcil
Herve cadieu was telling us:
Herve cadieu nous racontait que :

Oui, bonjour à toi aussi, ça fait plaisir.

La présente sub ne fonctionne pas et je ne comprends pas ce que je
fais de facon incorrecte qui peut me deboguer ?


Ne fonctionne pas.... c'est un peu large comme description de problème.
La prochaine fois ce serait bien que tu nous informe de façon un peu plus
précise, par exemple: y-a-t-il des messages d'erreurs? Si oui quels
sont-ils? Quel est le résultat obtenu vs. le résultat escompté. Quelle ligne
de code semble bloquer? etc.
Heureusement pour toi, cette fois ci il est facile de mettre le doigt sur le
bobo...

La méthode Add requiert des arguments obligatoires et de plus
"msoPropertyTypeValue" n'est pas une constante reconnue par le VBA de Word.
Aussi, ce n'est pas un problème, mais quand on déclare des variables, il
vaut mieux déclarer leur type plutôt que de laisser le soin au compilateur
de le faire à notre place. De cette façon on contrôle tout et l'aide
"Intellisense" est disponible quand on écrit le code.
Au lieu de
Dim prodoc1, prodoc2, prodoc3, prodoc4, prodoc5
il aurait été mieux d'utiliser:
Dim MydocProp1 As CustomProperties
Dim MydocProp2 As CustomProperties
Dim MydocProp3 As CustomProperties
Dim MydocProp4 As CustomProperties
Dim MydocProp5 As CustomProperties
Finalement, ce n'est pas une "bonne habitude" d'utiliser + pour concaténer
des chaînes, sinon il arrivera que le + additionnera des éléments au lieu de
les concaténer, et on cherchera le problème... Le & est plus sûr. Enfin, ce
n'est que mon opinion.

Donc, essaie ce code à la place:

'_______________________________________
Sub CreationCustomProperties()

With ActiveDocument.CustomDocumentProperties
.Add Name:="Signer1", LinkToContent:úlse, Value:="", _
Type:=msoPropertyTypeString
MsgBox "prodoc1 Master crée" & vbCr _
& "Il doit toujours signer en dernier !"

.Add Name:="Signer2", LinkToContent:úlse, Value:="", _
Type:=msoPropertyTypeString
MsgBox "prodoc2 signataire 2 crée"

.Add Name:="Signer3", LinkToContent:úlse, Value:="", _
Type:=msoPropertyTypeString
MsgBox "prodoc3 signataire 3 crée"

.Add Name:="NbrSignVoulues", LinkToContent:úlse, Value:="1", _
Type:=msoPropertyTypeNumber
MsgBox "prodoc4 Nbre signatures souhaitées crée"

.Add Name:="NbreSignActuel", LinkToContent:úlse, Value:="0", _
Type:=msoPropertyTypeNumber
MsgBox "prodoc5: nbre signatures crée"
End With

End Sub
'_______________________________________

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org

Avatar
Anacoluthe
Bonjour !

'Jean-Guy Marcil' nous a écrit ...
Dim MydocProp1 As CustomProperties
Dans son code j'aurais dit plutôt Dim ... As DocumentProperty

mais j'ai du mal à dire la classe de MyDocProp1 si on fait
Set MyDocProp1 = MyDoc.CustomDocumentProperties.Add(name:= ....)
il me semble que ce Add là ne marche pas comme les autres ;-)
Qu'en penses-tu ?

'_______________________________________
Sub CreationCustomProperties()


hi hi hi les grands esprits macroteurs se retrouvent !
Nous avons donné exactement le même code ;-)

Anacoluthe
« Un gentleman, c'est quelqu'un qui sait jouer
de la cornemuse et qui n'en joue pas. »
- Pierre DESPROGES

Avatar
Jean-Guy Marcil
Anacoluthe was telling us:
Anacoluthe nous racontait que :

Bonjour !

'Jean-Guy Marcil' nous a écrit ...
Dim MydocProp1 As CustomProperties
Dans son code j'aurais dit plutôt Dim ... As DocumentProperty



Doh! Évidemment! Me suis trompé!

mais j'ai du mal à dire la classe de MyDocProp1 si on fait
Set MyDocProp1 = MyDoc.CustomDocumentProperties.Add(name:= ....)
il me semble que ce Add là ne marche pas comme les autres ;-)
Qu'en penses-tu ?


Je ne suis pas certain de comprendre ce que tu veux dire...
Comment ce Add est-il différent des autres Add?
C'est vrai que l'aide en ligne est muette à son sujet... Un oubli de
l'équipe des développeurs?

En fait, oui, je suis certain! Je ne comprends pas!

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org


Avatar
Anacoluthe
Bonjour !

'Jean-Guy Marcil' nous a écrit ...
Je ne suis pas certain de comprendre ce que tu veux dire...
Comment ce Add est-il différent des autres Add?
En fait, oui, je suis certain! Je ne comprends pas!


J'explique (WD2003) : la méthode Add d'une collection
peut être généralement utilisée pour /renvoyer/ l'objet ajouté:
Dim Truc As Object
Set Truc = Machins.Add(Avec:= ceci, EtPuis:= cela)
Dim MonDoc As Document
Set MonDoc = Documents.Add
Etc. D'accord ? C'est classique et très utile.

Dans le cas de CustomDocumentProperties.Add
ça ne /renvoie/ pas une DocumentProperty ni même un
Object comme une méthode Add qui fait aussi /fonction/ .

Peux-tu essayer et confirmer que ce Add est 'différent' ? ;-)

Anacoluthe
« C'est de l'identité qu'est née la différence. »
- Heinz PAGELS

Avatar
Jean-Guy Marcil
Anacoluthe was telling us:
Anacoluthe nous racontait que :

Bonjour !

'Jean-Guy Marcil' nous a écrit ...
Je ne suis pas certain de comprendre ce que tu veux dire...
Comment ce Add est-il différent des autres Add?
En fait, oui, je suis certain! Je ne comprends pas!


J'explique (WD2003) : la méthode Add d'une collection
peut être généralement utilisée pour /renvoyer/ l'objet ajouté:
Dim Truc As Object
Set Truc = Machins.Add(Avec:= ceci, EtPuis:= cela)
Dim MonDoc As Document
Set MonDoc = Documents.Add
Etc. D'accord ? C'est classique et très utile.

Dans le cas de CustomDocumentProperties.Add
ça ne /renvoie/ pas une DocumentProperty ni même un
Object comme une méthode Add qui fait aussi /fonction/ .



Non, je ne crois pas que ce soit différent. Ce qui est différent est le fait
que l'aide en ligne est très mal écrite à ce sujet et que l'intellisense ne
marche pas toujours avec les propriétés personnalisées
(CustomDocumentProperties). Et auusi il y a le fait que DocumentPrioperty
fair référence a CustomDocumentProperties et à BuiltInDocumentProperties,
c'est très mêlant tout ça!

Essaie cette macro. Elle à fonctionée pour moi (WD2003).


Sub TestDocProp()

Dim MyDocProp As DocumentProperty

Set MyDocProp = ActiveDocument.CustomDocumentProperties.Add("Jour", _
False, msoPropertyTypeString, "Lundi")

MsgBox MyDocProp.Value

MyDocProp.Value = "Mardi"

MsgBox MyDocProp.Value

End Sub

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org


Avatar
Anacoluthe
Bonjour !

'Jean-Guy Marcil' nous a écrit ...
Non, je ne crois pas que ce soit différent. Ce qui est différent est le fait
que l'aide en ligne est très mal écrite à ce sujet et que l'intellisense ne
marche pas toujours avec les propriétés personnalisées
(CustomDocumentProperties). Et auusi il y a le fait que DocumentPrioperty
fair référence a CustomDocumentProperties et à BuiltInDocumentProperties,
c'est très mêlant tout ça!

Essaie cette macro. Elle à fonctionée pour moi (WD2003).


Ahhhhhhh OUI t'as raison ! J'aime mieux ça. J'ai refait des tests
avec des arguments nommés et c'est tout bon. Je ne m'étais même
pas rendu compte que je m'étais planté dans les arguments ! ;-)
hi han - Merci !

Anacoluthe
« Est un âne de nature qui ne sait lire son écriture. »
- Proverbe français