Utiliser une variable de Recordset

Le
JMD
Bonjour.

Dans une procédure VBA, je récupère les valeurs dans une table SQL Server
via les méthodes OpenDataBase et OpenRecordSet.

Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?

Merci à vous !

JMD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Anacoluthe
Le #1666432
Bonjour !

'JMD' nous a écrit ...
Dans une procédure VBA, je récupère les valeurs dans une table SQL Server
via les méthodes OpenDataBase et OpenRecordSet.
Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?


Word + une base de données ça fait publipostage* !! Votre document principal
contient des champs de fusion. La procédure de fusion* dans un document
de fusion vous évite en général tout le travail de OpenRecordset et tous
les Move et Fields pour accéder aux données : Word sait faire ça tout seul
avec quelques instructions simples en vba, requête SQL comprise.

Si vous tenez malgré tout à accéder vous-même à votre base, aux enregistrements
soumis à requête, et à tous les champs de ces enregistrements, la procédure
générale pour insérer du texte à une place précise d'un document est d'y
définir à cet endroit un signet* (objet Bookmark en vba Word).

Anacoluthe
« Avant d'employer un beau mot, faites-lui une place. »
- Joseph JOUBERT

JMD
Le #1666430
Merci d'avoir pris le temps de répondre.

J'ai donc créé un signet dans la feuille, nommé Offre.
Ensuite, dans le code, j'ai fais :

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient

Mais j'obteins "Propriété ou méthode non gérée par cet objet".

Donc, j'ai pas compris. Auriez-vous l'amabilité d'être plus précis ?

Merci encore,

JMD

"Anacoluthe"
Bonjour !

'JMD' nous a écrit ...
Dans une procédure VBA, je récupère les valeurs dans une table SQL Server
via les méthodes OpenDataBase et OpenRecordSet.
Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?


Word + une base de données ça fait publipostage* !! Votre document
principal
contient des champs de fusion. La procédure de fusion* dans un document
de fusion vous évite en général tout le travail de OpenRecordset et tous
les Move et Fields pour accéder aux données : Word sait faire ça tout seul
avec quelques instructions simples en vba, requête SQL comprise.

Si vous tenez malgré tout à accéder vous-même à votre base, aux
enregistrements
soumis à requête, et à tous les champs de ces enregistrements, la
procédure
générale pour insérer du texte à une place précise d'un document est d'y
définir à cet endroit un signet* (objet Bookmark en vba Word).

Anacoluthe
« Avant d'employer un beau mot, faites-lui une place. »
- Joseph JOUBERT



Geo
Le #1666429

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient


ActiveDocument.BookmarkS("Offre")

--
A+

JMD
Le #1666428
Bonjour.

"Utilisation incorrecte de la propriété".

Merci.


"Geo"

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient


ActiveDocument.BookmarkS("Offre")

--
A+





Corona
Le #1666426
Bonjour JMD,
ActiveDocument.Bookmarks("Offre").Range.Text = laVariable
Philippe

"JMD" en$
Merci d'avoir pris le temps de répondre.

J'ai donc créé un signet dans la feuille, nommé Offre.
Ensuite, dans le code, j'ai fais :

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient

Mais j'obteins "Propriété ou méthode non gérée par cet objet".

Donc, j'ai pas compris. Auriez-vous l'amabilité d'être plus précis ?

Merci encore,

JMD

"Anacoluthe" news:
Bonjour !

'JMD' nous a écrit ...
Dans une procédure VBA, je récupère les valeurs dans une table SQL
Server via les méthodes OpenDataBase et OpenRecordSet.
Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?


Word + une base de données ça fait publipostage* !! Votre document
principal
contient des champs de fusion. La procédure de fusion* dans un document
de fusion vous évite en général tout le travail de OpenRecordset et tous
les Move et Fields pour accéder aux données : Word sait faire ça tout
seul
avec quelques instructions simples en vba, requête SQL comprise.

Si vous tenez malgré tout à accéder vous-même à votre base, aux
enregistrements
soumis à requête, et à tous les champs de ces enregistrements, la
procédure
générale pour insérer du texte à une place précise d'un document est d'y
définir à cet endroit un signet* (objet Bookmark en vba Word).

Anacoluthe
« Avant d'employer un beau mot, faites-lui une place. »
- Joseph JOUBERT







JMD
Le #1666425
Hum, il me semble qu'un 'SIGNET' est un objet qui détermine une position
dans le document, objet qui est identifié dans la collection par son nom ou
son N° d'index. Mais il ne me semble pas que cela réponde à ma question, que
j'ai sans doute mal formulée.

Dans mon code VBA, une instruction select... me renvoie des valeurs. Je
souhaite "écrire" ces valeurs à un emplacement dans la page. Par exemple :

Code du Client : [Ici ma valeur rst!codeClient]

Mais dans quel objet renvoyer cette valeur ? Ne faut-il pas créer un champ
dans le document et ensuite affecter le résultat de la requête à ce champ ?
En VBA Excel, on ferait :

cells(Ligne, Colonne)=rst!Nomduchamp

Me suis-je mieux exprimé ?

Enore merci.



"JMD" ukm$
Bonjour.

"Utilisation incorrecte de la propriété".

Merci.


"Geo"

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient


ActiveDocument.BookmarkS("Offre")

--
A+









JMD
Le #1666424
Merci Philippe.

ActiveDocument.Bookmarks("Offre").Range.Text = "TOTO"
fonctionne parfaitement.

Par contre, une fois que le code a écrit "TOTO" dans la page, à
l'emplacement du signet en question, si on supprime TOTO on supprime aussi
le signet et le code est mort, l'objet n'existe plus. Bigre....

A +


"Corona"
Bonjour JMD,
ActiveDocument.Bookmarks("Offre").Range.Text = laVariable
Philippe

"JMD" en$
Merci d'avoir pris le temps de répondre.

J'ai donc créé un signet dans la feuille, nommé Offre.
Ensuite, dans le code, j'ai fais :

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient

Mais j'obteins "Propriété ou méthode non gérée par cet objet".

Donc, j'ai pas compris. Auriez-vous l'amabilité d'être plus précis ?

Merci encore,

JMD

"Anacoluthe" news:
Bonjour !

'JMD' nous a écrit ...
Dans une procédure VBA, je récupère les valeurs dans une table SQL
Server via les méthodes OpenDataBase et OpenRecordSet.
Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?


Word + une base de données ça fait publipostage* !! Votre document
principal
contient des champs de fusion. La procédure de fusion* dans un document
de fusion vous évite en général tout le travail de OpenRecordset et tous
les Move et Fields pour accéder aux données : Word sait faire ça tout
seul
avec quelques instructions simples en vba, requête SQL comprise.

Si vous tenez malgré tout à accéder vous-même à votre base, aux
enregistrements
soumis à requête, et à tous les champs de ces enregistrements, la
procédure
générale pour insérer du texte à une place précise d'un document est d'y
définir à cet endroit un signet* (objet Bookmark en vba Word).

Anacoluthe
« Avant d'employer un beau mot, faites-lui une place. »
- Joseph JOUBERT











Corona
Le #1666423
Bonjour,
Voici une routine écrite par Guy Moncomble qui résoud ce problème. C'est
cette méthode que j'utilise.
Philippe

Public Sub MajSignet(NomSignet As String, TexteSignet As String)
' © Guy Moncomble 2001
Dim Début As Long
Application.ScreenUpdating = False
With ActiveDocument
If .Bookmarks.Exists(NomSignet) Then
Début = .Bookmarks(NomSignet).Range.Start
.Bookmarks(NomSignet).Range.Text = TexteSignet
.Bookmarks.Add Name:=NomSignet, Range:=.Range(Début, Début +
Len(TexteSignet))
End If
End With
Application.ScreenUpdating = True
End Sub


"JMD"
Merci Philippe.

ActiveDocument.Bookmarks("Offre").Range.Text = "TOTO"
fonctionne parfaitement.

Par contre, une fois que le code a écrit "TOTO" dans la page, à
l'emplacement du signet en question, si on supprime TOTO on supprime aussi
le signet et le code est mort, l'objet n'existe plus. Bigre....

A +


"Corona"
Bonjour JMD,
ActiveDocument.Bookmarks("Offre").Range.Text = laVariable
Philippe

"JMD" en$
Merci d'avoir pris le temps de répondre.

J'ai donc créé un signet dans la feuille, nommé Offre.
Ensuite, dans le code, j'ai fais :

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient

Mais j'obteins "Propriété ou méthode non gérée par cet objet".

Donc, j'ai pas compris. Auriez-vous l'amabilité d'être plus précis ?

Merci encore,

JMD

"Anacoluthe" news:
Bonjour !

'JMD' nous a écrit ...
Dans une procédure VBA, je récupère les valeurs dans une table SQL
Server via les méthodes OpenDataBase et OpenRecordSet.
Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?


Word + une base de données ça fait publipostage* !! Votre document
principal
contient des champs de fusion. La procédure de fusion* dans un document
de fusion vous évite en général tout le travail de OpenRecordset et
tous
les Move et Fields pour accéder aux données : Word sait faire ça tout
seul
avec quelques instructions simples en vba, requête SQL comprise.

Si vous tenez malgré tout à accéder vous-même à votre base, aux
enregistrements
soumis à requête, et à tous les champs de ces enregistrements, la
procédure
générale pour insérer du texte à une place précise d'un document est
d'y
définir à cet endroit un signet* (objet Bookmark en vba Word).

Anacoluthe
« Avant d'employer un beau mot, faites-lui une place. »
- Joseph JOUBERT















JMD
Le #1666421
Merci.
Cette procédure évite au code de planter, mais n'interdit pas à l'utlisateur
de détruire le signet, si j'ai bien lu le code.

Je vais donc créer une page comme un modèle (.dot) qui contiendra les
signets, et à partir duquel modèle on fera des .doc, enregistrés sous
rst!NumeroOffre.doc. Pour chaque nouveau document, on repartira du .dot, qui
de fait contiendra toujours les signets.

Cela te semble correct ?

A +

"Corona"
Bonjour,
Voici une routine écrite par Guy Moncomble qui résoud ce problème.
C'est cette méthode que j'utilise.
Philippe

Public Sub MajSignet(NomSignet As String, TexteSignet As String)
' © Guy Moncomble 2001
Dim Début As Long
Application.ScreenUpdating = False
With ActiveDocument
If .Bookmarks.Exists(NomSignet) Then
Début = .Bookmarks(NomSignet).Range.Start
.Bookmarks(NomSignet).Range.Text = TexteSignet
.Bookmarks.Add Name:=NomSignet, Range:=.Range(Début, Début +
Len(TexteSignet))
End If
End With
Application.ScreenUpdating = True
End Sub


"JMD"
Merci Philippe.

ActiveDocument.Bookmarks("Offre").Range.Text = "TOTO"
fonctionne parfaitement.

Par contre, une fois que le code a écrit "TOTO" dans la page, à
l'emplacement du signet en question, si on supprime TOTO on supprime
aussi le signet et le code est mort, l'objet n'existe plus. Bigre....

A +


"Corona"
Bonjour JMD,
ActiveDocument.Bookmarks("Offre").Range.Text = laVariable
Philippe

"JMD" en$
Merci d'avoir pris le temps de répondre.

J'ai donc créé un signet dans la feuille, nommé Offre.
Ensuite, dans le code, j'ai fais :

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient

Mais j'obteins "Propriété ou méthode non gérée par cet objet".

Donc, j'ai pas compris. Auriez-vous l'amabilité d'être plus précis ?

Merci encore,

JMD

"Anacoluthe" news:
Bonjour !

'JMD' nous a écrit ...
Dans une procédure VBA, je récupère les valeurs dans une table SQL
Server via les méthodes OpenDataBase et OpenRecordSet.
Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?


Word + une base de données ça fait publipostage* !! Votre document
principal
contient des champs de fusion. La procédure de fusion* dans un
document
de fusion vous évite en général tout le travail de OpenRecordset et
tous
les Move et Fields pour accéder aux données : Word sait faire ça tout
seul
avec quelques instructions simples en vba, requête SQL comprise.

Si vous tenez malgré tout à accéder vous-même à votre base, aux
enregistrements
soumis à requête, et à tous les champs de ces enregistrements, la
procédure
générale pour insérer du texte à une place précise d'un document est
d'y
définir à cet endroit un signet* (objet Bookmark en vba Word).

Anacoluthe
« Avant d'employer un beau mot, faites-lui une place. »
- Joseph JOUBERT



















Corona
Le #1666419
Bonjour JMD,
Si un utilisateur supprime un signet, un tableau ou tout autre objet de
référence il est clair que l'on ne peux plus rien faire.
A partir du moment où l'on utilise du code VBA il me semble
effectivement indispensable de le faire au départ d'un modèle.
Philippe

"JMD" %
Merci.
Cette procédure évite au code de planter, mais n'interdit pas à
l'utlisateur de détruire le signet, si j'ai bien lu le code.

Je vais donc créer une page comme un modèle (.dot) qui contiendra les
signets, et à partir duquel modèle on fera des .doc, enregistrés sous
rst!NumeroOffre.doc. Pour chaque nouveau document, on repartira du .dot,
qui de fait contiendra toujours les signets.

Cela te semble correct ?

A +

"Corona"
Bonjour,
Voici une routine écrite par Guy Moncomble qui résoud ce problème.
C'est cette méthode que j'utilise.
Philippe

Public Sub MajSignet(NomSignet As String, TexteSignet As String)
' © Guy Moncomble 2001
Dim Début As Long
Application.ScreenUpdating = False
With ActiveDocument
If .Bookmarks.Exists(NomSignet) Then
Début = .Bookmarks(NomSignet).Range.Start
.Bookmarks(NomSignet).Range.Text = TexteSignet
.Bookmarks.Add Name:=NomSignet, Range:=.Range(Début, Début +
Len(TexteSignet))
End If
End With
Application.ScreenUpdating = True
End Sub


"JMD"
Merci Philippe.

ActiveDocument.Bookmarks("Offre").Range.Text = "TOTO"
fonctionne parfaitement.

Par contre, une fois que le code a écrit "TOTO" dans la page, à
l'emplacement du signet en question, si on supprime TOTO on supprime
aussi le signet et le code est mort, l'objet n'existe plus. Bigre....

A +


"Corona"
Bonjour JMD,
ActiveDocument.Bookmarks("Offre").Range.Text = laVariable
Philippe

"JMD" en$
Merci d'avoir pris le temps de répondre.

J'ai donc créé un signet dans la feuille, nommé Offre.
Ensuite, dans le code, j'ai fais :

Set ActiveDocument.Bookmark("Offre") = rstlct!Codeclient

Mais j'obteins "Propriété ou méthode non gérée par cet objet".

Donc, j'ai pas compris. Auriez-vous l'amabilité d'être plus précis ?

Merci encore,

JMD

"Anacoluthe" news:
Bonjour !

'JMD' nous a écrit ...
Dans une procédure VBA, je récupère les valeurs dans une table SQL
Server via les méthodes OpenDataBase et OpenRecordSet.
Comment ensuite renvoyer ces valeurs dans le document Word, à des
emplacements précis ? Je suppose qu'il faut insérer des champs, mais
lesquels et comment les adresser via VBA ?


Word + une base de données ça fait publipostage* !! Votre document
principal
contient des champs de fusion. La procédure de fusion* dans un
document
de fusion vous évite en général tout le travail de OpenRecordset et
tous
les Move et Fields pour accéder aux données : Word sait faire ça tout
seul
avec quelques instructions simples en vba, requête SQL comprise.

Si vous tenez malgré tout à accéder vous-même à votre base, aux
enregistrements
soumis à requête, et à tous les champs de ces enregistrements, la
procédure
générale pour insérer du texte à une place précise d'un document est
d'y
définir à cet endroit un signet* (objet Bookmark en vba Word).

Anacoluthe
« Avant d'employer un beau mot, faites-lui une place. »
- Joseph JOUBERT























Publicité
Poster une réponse
Anonyme