OVH Cloud OVH Cloud

Comment générer des documents en supprimant la macro d'origine

3 réponses
Avatar
Denel
Bonjour a tous,

Je vais essayer d'être plus clair :)

Je génére des documents grace à une macro contenu dans un modèle (.dot)

Il s'agit de lettres de relance, les données (champs dynamiques) étant
stockées dans sql server

Ca marche pas mal à part des petits soucis de mise en page mais je voudrais
surtout ques les documents word .doc générés soit débarrasé de leur macro
d'origine qui n'est plus utile une fois le traitement terminé.

Je suis sur que c'ets possible mais je ne trouves pas :)

3 réponses

Avatar
Anacoluthe
Bonjour !

'Denel' nous a écrit ...
Je vais essayer d'être plus clair :)
Je génére des documents grace à une macro contenu dans un modèle (.dot)
Il s'agit de lettres de relance, les données (champs dynamiques) étant
stockées dans sql server
Ca marche pas mal à part des petits soucis de mise en page mais je voudrais
surtout ques les documents word .doc générés soit débarrasé de leur macro
d'origine qui n'est plus utile une fois le traitement terminé.


Merci de rester dans votre discussion : on a du mal à vous suivre.

Si vos macros sont dans votre modèle, il n'y a aucune raison
de les retrouver dans les documents....
Il est difficile de comprendre ce que viennent faire les macros
dans votre question : une requête SQL, un publipostage, fusion
bingo : 5647 lettres de relance envoyées, zéro macro.

Anacoluthe
« Je ne cherche pas à connaître les réponses,
je cherche à comprendre les questions. »
- CONFUCIUS

Avatar
Denel
Anacoluthe a écrit
Si vos macros sont dans votre modèle, il n'y a aucune raison
de les retrouver dans les documents....
Il est difficile de comprendre ce que viennent faire les macros
dans votre question : une requête SQL, un publipostage, fusion
bingo : 5647 lettres de relance envoyées, zéro macro.

Merci de ta réponse.


je suis bien d'accord avec toi, mes macros ne devrait pas être dans mes
documents généres et pourtant elle le sont quand même :)


Voila le code :

Private Sub Document_New()
Dim myConn
Dim myConn1
Dim myRecordset
Dim mySql
' instanciation des objets ADO
Set myConn = CreateObject("ADODB.Connection")
Set myConn1 = CreateObject("ADODB.Connection")
Set myRecordset = CreateObject("ADODB.Recordset")
Set myRecordsetDetail = CreateObject("ADODB.Recordset")
Set myRecordsetResponsableClient = CreateObject("ADODB.Recordset")

' Définir les propriétés de la connexion
myConn.Open = "Provider=SQLOLEDB.1;Data Source¯I13012M; Initial
Catalog¯irec ;user id = 'Applixxxx';password='xxxxx'"
myConn1.Open = "Provider=SQLOLEDB.1;Data Source¯I13012M; Initial
Catalog¯irec ;user id = 'Applixxxxx';password='xxxx'"

' Définir la requète SQL
mySql = "SELECT * FROM [DU CLIENTS]"

'Ouvrir la connexion
myRecordset.Open mySql, myConn
myRecordset.MoveFirst

Do While Not myRecordset.EOF
'On Error Resume Next

' Définir la requète SQL pour la liste des responsables clients
mySqlResponsableClient = "SELECT * FROM RESPONSABLECLIENT WHERE ClienAux '" & myRecordset.Fields.Item("ClienComptAux").Value & "'"

'Ouvrir la connexion pour la liste des responsables
myRecordsetResponsableClient.Open mySqlResponsableClient, myConn1
myRecordsetResponsableClient.MoveFirst

nom.Caption = myRecordset.Fields.Item("MailiNom").Value
Adresse1.Caption = myRecordset.Fields.Item("MailiAdrs1").Value
Adresse2.Caption = myRecordset.Fields.Item("MailiAdrs2").Value
adresse3.Caption = myRecordset.Fields.Item("MailiAdrs3").Value
ville.Caption = myRecordset.Fields.Item("MailiVille").Value
Solde.Caption = myRecordset.Fields.Item("Solde").Value

' On Remplit la zone de texte contenant les détails
Responsable.Caption myRecordsetResponsableClient.Fields.Item("ClienNomRespon").Value


' ON AFFICHE LES DETAILS
mySqlDetail = "SELECT * FROM [DU CLIENTS DETAILS]WHERE ClienComptAux = '" &
myRecordset.Fields.Item("ClienComptAux").Value & "'"
myRecordsetDetail.Open mySqlDetail, myConn

myRecordsetDetail.MoveFirst

Tables(1).Rows.Select
Do While Not myRecordsetDetail.EOF
' On Remplit la zone de texte contenant les détails
Selection.TypeText
(myRecordsetDetail.Fields.Item("ClienComptRefer").Value)
Selection.MoveRight Unit:=wdCell
Selection.TypeText
(myRecordsetDetail.Fields.Item("ClienComptDate").Value)
Selection.MoveRight Unit:=wdCell
Selection.TypeText (myRecordsetDetail.Fields.Item("ClienEncaiNet").Value
& " Euros")
Selection.InsertRowsBelow 1

myRecordsetDetail.MoveNext


Loop
myRecordsetDetail.Close

ActiveDocument.SaveAs
("afi13012dc2PermanentsRelanceAutomatiqueRelance1" & "relance du " &
Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "_" &
myRecordset.Fields.Item("MailiNom").Value & ".doc")


' On ferme le recordset responsable client
myRecordsetResponsableClient.Close

myRecordset.MoveNext



Loop
myRecordset.Close

myConn.Close
myConn1.Close
End Sub

Avatar
Anacoluthe
Bonjour !

'Denel' nous a écrit ...
je suis bien d'accord avec toi, mes macros ne devrait pas être dans mes
documents généres et pourtant elle le sont quand même :)


Si vous parlez du message d'alerte 'présence de macro' c'est
normal tant que le document garde son modèle attaché !
Vérifiez les modules : ceux des documents sont vides, les
macros sont et restent dans le modèle. Pour moi il n'y a
aucune raison de trouver des macros dans un document si on
ne les a pas expressément mises dedans... :-)

Anacoluthe
« Je ne cherche pas à connaître les réponses,
je cherche à comprendre les questions. »
- CONFUCIUS