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

[VBA] [Formulaire] Récupérer données d'un formulaire dans un autre

4 réponses
Avatar
Nemroth
Bonsoir à tous,

Comment peut-on, en VBA,
1) s'assurer qu'un document (mettons doc2.doc) est ouvert dans la même
session de Word ?
Question subsidiaire : idem dans une autre session de Word ?
2) copier le contenu d'un champ de formulaire (mettons que son signet
est "toto" et que c'est un champ de texte) d'un document doc1 dans un
champ de formulaire (mettons que son signet est "titi" et que c'est un
champ de texte) d'un document doc2 ouvert dans la même session de Word ?

Question subsidiaire : et dans une autre instance de Word ?

Oui je sais, j'en demande beaucoup !!!

Par avance un grand merci

@+ Nemroth

4 réponses

Avatar
Guy Moncomble
Bonjour à tous,
dans le message ,

| Bonsoir à tous,
|
| Comment peut-on, en VBA,
| 1) s'assurer qu'un document (mettons doc2.doc) est ouvert dans la même
| session de Word ?

| Question subsidiaire : idem dans une autre session de Word ?
| 2) copier le contenu d'un champ de formulaire (mettons que son signet
| est "toto" et que c'est un champ de texte) d'un document doc1 dans un
| champ de formulaire (mettons que son signet est "titi" et que c'est un
| champ de texte) d'un document doc2 ouvert dans la même session de
| Word ?
|
| Question subsidiaire : et dans une autre instance de Word ?
|
| Oui je sais, j'en demande beaucoup !!!
|
| Par avance un grand merci
|
| @+ Nemroth

Je te livre une petite macro d'essai qui vérifie, ouvre et modifie. Même
avec des hypothèses simplissimes, le problème se complique avec les
protections formulaires activées ou non et je n'ai pas examiné tous les
cas !
Comme je considère comme irréaliste le fait d'essayer de modifier un
document dans une autre instance de Word, alors qu'il est si simple de
vérifier cette hypothèse avant utilisation, puis d'ouvrir et modifier
dans une seule instance, je m'arrête là, à moins que tu aies des
arguments assez puissants pour me faire passer quelques heures de plus
sur ce problème.
==
Public Sub TestPresenceDoc()
Dim NumErreur As Long, DescErreur As String, DocOuvert As String,
CheminDoc As String, NomDoc As String
Dim CeDoc As String
On Error GoTo GestErr
'Savoir si un document doc2.doc est ouvert dans cette instance
'Documents est une collection, si un document en est absent => erreur.
CeDoc = ActiveDocument.Name
CheminDoc = "D:DocGuyMes développementsEssai"
NomDoc = "EssaiPresenceDocCible.doc"
DocOuvert = Documents(NomDoc)
If DocOuvert <> NomDoc Then
MsgBox NomDoc & " n'est pas encore ouvert.", vbOKOnly + vbCritical,
"Test de présence d'un document"
'Est-il présent dans une autre ?
Documents.Open FileName:=CheminDoc & NomDoc ',
WritePasswordDocument:=""
If ActiveDocument.Windows(1).Caption Like "*(Lecture seule)*" Then
MsgBox NomDoc & " est déjà ouvert dans une autre application.
Modification impossible.", vbOKOnly + vbCritical, "Ouverture d'un
document"
ActiveDocument.Close
Exit Sub
End If
Else
MsgBox NomDoc & " est ouvert.", vbOKOnly + vbInformation, "Test de
présence d'un document"
'On reverrouille pour être sûr
If Documents(CeDoc).ProtectionType = wdNoProtection Then
Documents(CeDoc).Protect wdAllowOnlyFormFields
If Documents(NomDoc).ProtectionType = wdNoProtection Then
Documents(NomDoc).Protect wdAllowOnlyFormFields
'Remplissage du champ
Documents(NomDoc).FormFields("titi").Result Documents(CeDoc).FormFields("toto").Result
End If
GoTo Fin
GestErr:
NumErreur = Err.Number
DescErreur = Err.Description
Select Case NumErreur
Case 4160 'Nom de fichier incorrect
Resume Next
Case Else
End Select
Fin:
End Sub
== --
A+

GMO MVP Word

Laissées à elles-mêmes, les choses tendent à aller de pire en pire. Se
faire aider ne fait qu'accélérer le processus.

Edward A. Murphy, Jr.
Avatar
Guy Moncomble
Bonjour à tous,
dans le message ,

| Bonsoir à tous,
|
| Comment peut-on, en VBA,
| 1) s'assurer qu'un document (mettons doc2.doc) est ouvert dans la même
| session de Word ?

| Question subsidiaire : idem dans une autre session de Word ?
| 2) copier le contenu d'un champ de formulaire (mettons que son signet
| est "toto" et que c'est un champ de texte) d'un document doc1 dans un
| champ de formulaire (mettons que son signet est "titi" et que c'est un
| champ de texte) d'un document doc2 ouvert dans la même session de
| Word ?
|
| Question subsidiaire : et dans une autre instance de Word ?
|
| Oui je sais, j'en demande beaucoup !!!
|
| Par avance un grand merci
|
| @+ Nemroth

Je te livre une petite macro d'essai qui vérifie, ouvre et modifie. Même
avec des hypothèses simplissimes, le problème se complique avec les
protections formulaires activées ou non et je n'ai pas examiné tous les
cas !
Comme je considère comme irréaliste le fait d'essayer de modifier un
document dans une autre instance de Word, alors qu'il est si simple de
vérifier cette hypothèse avant utilisation, puis d'ouvrir et modifier
dans une seule instance, je m'arrête là, à moins que tu aies des
arguments assez puissants pour me faire passer quelques heures de plus
sur ce problème.
==
Public Sub TestPresenceDoc()
Dim NumErreur As Long, DescErreur As String, DocOuvert As String,
CheminDoc As String, NomDoc As String
Dim CeDoc As String
On Error GoTo GestErr
'Savoir si un document doc2.doc est ouvert dans cette instance
'Documents est une collection, si un document en est absent => erreur.
CeDoc = ActiveDocument.Name
CheminDoc = "D:DocGuyMes développementsEssai"
NomDoc = "EssaiPresenceDocCible.doc"
DocOuvert = Documents(NomDoc)
If DocOuvert <> NomDoc Then
MsgBox NomDoc & " n'est pas encore ouvert.", vbOKOnly + vbCritical,
"Test de présence d'un document"
'Est-il présent dans une autre ?
Documents.Open FileName:=CheminDoc & NomDoc ',
WritePasswordDocument:=""
If ActiveDocument.Windows(1).Caption Like "*(Lecture seule)*" Then
MsgBox NomDoc & " est déjà ouvert dans une autre application.
Modification impossible.", vbOKOnly + vbCritical, "Ouverture d'un
document"
ActiveDocument.Close
Exit Sub
End If
Else
MsgBox NomDoc & " est ouvert.", vbOKOnly + vbInformation, "Test de
présence d'un document"
'On reverrouille pour être sûr
If Documents(CeDoc).ProtectionType = wdNoProtection Then
Documents(CeDoc).Protect wdAllowOnlyFormFields
If Documents(NomDoc).ProtectionType = wdNoProtection Then
Documents(NomDoc).Protect wdAllowOnlyFormFields
'Remplissage du champ
Documents(NomDoc).FormFields("titi").Result Documents(CeDoc).FormFields("toto").Result
End If
GoTo Fin
GestErr:
NumErreur = Err.Number
DescErreur = Err.Description
Select Case NumErreur
Case 4160 'Nom de fichier incorrect
Resume Next
Case Else
End Select
Fin:
End Sub
== --
A+

GMO MVP Word

Laissées à elles-mêmes, les choses tendent à aller de pire en pire. Se
faire aider ne fait qu'accélérer le processus.

Edward A. Murphy, Jr.
Avatar
nuindacil
Hello Guy !!!

Ca s'appelle begayer !!! ;-))))

nuindacil
Avatar
Nemroth
Bonjour Guy,

Comme je considère comme irréaliste le fait d'essayer de modifier un
document dans une autre instance de Word, alors qu'il est si simple de
vérifier cette hypothèse avant utilisation, puis d'ouvrir et modifier
dans une seule instance, je m'arrête là, à moins que tu aies des
arguments assez puissants pour me faire passer quelques heures de plus
sur ce problème.


Cette question (subsidiaire) tenait à éviter la modification d'un document
sous forme de formulaire dans une instance de Word si l'utilisateur l'avait
déjà ouvert dans une autre instance. Mais ça n'est qu'une hypothèse... Ca
n'était pas le point crucial de ma question.

Je te remercie de ta réponse, je vais tester ta solution. Entre temps,
j'aivais cherché par moi-même mais je n'y arrivais pas... Je vais adapter ta
solution à mes besoins. En tous cas, je te remercie encore beaucoup...

@+ Nemroth



Bonjour à tous,
dans le message ,

| Bonsoir à tous,
|
| Comment peut-on, en VBA,
| 1) s'assurer qu'un document (mettons doc2.doc) est ouvert dans la même
| session de Word ?

| Question subsidiaire : idem dans une autre session de Word ?
| 2) copier le contenu d'un champ de formulaire (mettons que son signet
| est "toto" et que c'est un champ de texte) d'un document doc1 dans un
| champ de formulaire (mettons que son signet est "titi" et que c'est un
| champ de texte) d'un document doc2 ouvert dans la même session de
| Word ?
|
| Question subsidiaire : et dans une autre instance de Word ?
|
| Oui je sais, j'en demande beaucoup !!!
|
| Par avance un grand merci
|
| @+ Nemroth

Je te livre une petite macro d'essai qui vérifie, ouvre et modifie. Même
avec des hypothèses simplissimes, le problème se complique avec les
protections formulaires activées ou non et je n'ai pas examiné tous les
cas ! Bien entendu, il faut l'adapter.
Comme je considère comme irréaliste le fait d'essayer de modifier un
document dans une autre instance de Word, alors qu'il est si simple de
vérifier cette hypothèse avant utilisation, puis d'ouvrir et modifier
dans une seule instance, je m'arrête là, à moins que tu aies des
arguments assez puissants pour me faire passer quelques heures de plus
sur ce problème.
== >
Public Sub TestPresenceDoc()
Dim NumErreur As Long, DescErreur As String, DocOuvert As String,
CheminDoc As String, NomDoc As String
Dim CeDoc As String
On Error GoTo GestErr
'Savoir si un document doc2.doc est ouvert dans cette instance
'Documents est une collection, si un document en est absent => erreur.
CeDoc = ActiveDocument.Name
CheminDoc = "D:DocGuyMes développementsEssai"
NomDoc = "EssaiPresenceDocCible.doc"
DocOuvert = Documents(NomDoc)
If DocOuvert <> NomDoc Then
MsgBox NomDoc & " n'est pas encore ouvert.", vbOKOnly + vbCritical,
"Test de présence d'un document"
'Est-il présent dans une autre ?
Documents.Open FileName:=CheminDoc & NomDoc ',
WritePasswordDocument:=""
If ActiveDocument.Windows(1).Caption Like "*(Lecture seule)*" Then
MsgBox NomDoc & " est déjà ouvert dans une autre application.
Modification impossible.", vbOKOnly + vbCritical, "Ouverture d'un
document"
ActiveDocument.Close
Exit Sub
End If
Else
MsgBox NomDoc & " est ouvert.", vbOKOnly + vbInformation, "Test de
présence d'un document"
'On reverrouille pour être sûr
If Documents(CeDoc).ProtectionType = wdNoProtection Then
Documents(CeDoc).Protect wdAllowOnlyFormFields
If Documents(NomDoc).ProtectionType = wdNoProtection Then
Documents(NomDoc).Protect wdAllowOnlyFormFields
'Remplissage du champ
Documents(NomDoc).FormFields("titi").Result > Documents(CeDoc).FormFields("toto").Result
End If
GoTo Fin
GestErr:
NumErreur = Err.Number
DescErreur = Err.Description
Select Case NumErreur
Case 4160 'Nom de fichier incorrect
Resume Next
Case Else
End Select
Fin:
End Sub
== > --
A+

GMO MVP Word

Laissées à elles-mêmes, les choses tendent à aller de pire en pire. Se
faire aider ne fait qu'accélérer le processus.

Edward A. Murphy, Jr.