Incompatibilité de type

Le
Thierry
Bonjour à tous,

J'ai un problème avec la procédure ci-dessous.

Public Sub ImprimeNotification()

Dim qdf As dao.QueryDef
Dim rst As dao.Recordset
Dim oWrd As Object
Dim cTitre As String
Dim VarDataPath As String

Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")

Set rst = qdf.OpenRecordset

Set oWrd = CreateObject("word.application")
On Error GoTo err_QuitImprimenotification

'Appel de la fonction CreatRepertoire pour créer le sous-repertoire
"Transmis le "
CreatRepertoire

While Not rst.EOF

With oWrd

.Documents.Add Template:=GetDataPath & "notification.doc"

.ActiveDocument.Bookmarks("RL_Nom").Select
.Selection.TypeText Text:=UCase(rst!RL_Nom)

.ActiveDocument.Bookmarks("RL_ad1").Select
.Selection.TypeText Text:=UCase(rst!RL_ad1)

.ActiveDocument.Bookmarks("RL_ad2").Select
.Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
UCase(rst!RL_ad2), " ")

.ActiveDocument.Bookmarks("RL_cpville").Select
.Selection.TypeText Text:=UCase(rst!RL_cpville)

.ActiveDocument.Bookmarks("Elève").Select
.Selection.TypeText Text:=UCase(rst!Elève)

.ActiveDocument.Bookmarks("Dnaiss_eleve").Select
.Selection.TypeText Text:=rst!Dnaiss_eleve
' .Selection.TypeText Text:=FormatDateTime(rst!Dnaiss_eleve,
vbGeneralDate)
etc

Que ce soit avec la dernière ligne (ici commentée) ou l'avant-dernière, il y
a toujours une incompatibilité de type.
Le champ Dnaiss_eleve est bien sûr au format date dans ma table d'origine.

Merci d'avance à ceux et celles qui pourraient m'aider.
Bonne journée.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Argyronet
Le #18797751
Bonjour,

Hummm, relisez votre code...
Tel qu'il est écrit, sans parler de l'erreur 13 qui est le sujet de votre
message, vous allez ouvrir autant de modèles Word que vous avez
d'enregistrement dans votre requête, donc, je ne pense pas que c'est ce que
vous souhaitez...

Sinon, pour repérer votre erreur, mettez un point d'arrêt en début de
procédure (F9) et exécutez pour nous dire sur quelle ligne cela plante car
dans un bloc With, c'est une erreur très fréquente quand on sollicite une
méthode ou que l'on définit une valeur à un objet qui ne peut pas la
comprendre ou la recevoir.

Enfin, une procédure générique pour solliciter les bookmarks du document
serait plus propre...

Sub DefinirSignet(ByVal NomSignet As String, ByVal ValeurSignet As String,
ByRef MonDoc As Word.Document, ByVal Majuscule As Boolean)
Dim oRng As Range
With MonDoc
Set oRng = .Bookmarks(NomSignet).Range
oRng.Text = IIf(Majuscule, UCase(ValeurSignet), ValeurSignet)
End With
Set oRng = Nothing
End Sub

que vous utilisez par exemple comme suit :

Sub RemplirDoc()
DefinirSignet "Signet1", "Une valeur quelconque", MonDoc, True
End Sub
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"Thierry" a écrit :

Bonjour tous,

J'ai un problme avec la procdure ci-dessous.

Public Sub ImprimeNotification()

Dim qdf As dao.QueryDef
Dim rst As dao.Recordset
Dim oWrd As Object
Dim cTitre As String
Dim VarDataPath As String

Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")

Set rst = qdf.OpenRecordset

Set oWrd = CreateObject("word.application")
On Error GoTo err_QuitImprimenotification

'Appel de la fonction CreatRepertoire pour crer le sous-repertoire
"Transmis le ..."
CreatRepertoire

While Not rst.EOF

With oWrd

.Documents.Add Template:=GetDataPath & "notification.doc"

.ActiveDocument.Bookmarks("RL_Nom").Select
.Selection.TypeText Text:=UCase(rst!RL_Nom)

.ActiveDocument.Bookmarks("RL_ad1").Select
.Selection.TypeText Text:=UCase(rst!RL_ad1)

.ActiveDocument.Bookmarks("RL_ad2").Select
.Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
UCase(rst!RL_ad2), " ")

.ActiveDocument.Bookmarks("RL_cpville").Select
.Selection.TypeText Text:=UCase(rst!RL_cpville)

.ActiveDocument.Bookmarks("Elve").Select
.Selection.TypeText Text:=UCase(rst!Elve)

.ActiveDocument.Bookmarks("Dnaiss_eleve").Select
.Selection.TypeText Text:=rst!Dnaiss_eleve
' .Selection.TypeText Text:=FormatDateTime(rst!Dnaiss_eleve,
vbGeneralDate)
etc...

Que ce soit avec la dernire ligne (ici commente) ou l'avant-dernire, il y
a toujours une incompatibilit de type.
Le champ Dnaiss_eleve est bien sr au format date dans ma table d'origine.

Merci d'avance ceux et celles qui pourraient m'aider.
Bonne journe.





Thierry
Le #18797741
Bonjour et merci d'avoir pris du temps pour me repondre.
Le code que j'ai mis dans mon message est un EXTRAIT d'une procedure que
j'utilise dans d'autres bases ACCESS et qui fonctionne parfaitement.
Je le mets en entier à la fin de ce message et je l'utilise souvent pour des
publipostages de + de 400 enregistrements et je n'ai pas l'impression
d'ouvrir 400 fois Word... Mais si vous pouvez jeter un oeil sur le code
complet, merci de me dire pourquoi Word s'ouvre x fois.
En ce qui concerne l'incompatibilite de type, c'est comme je l'ecris dans
mon premier message, la ligne :
.Selection.TypeText Text:=rst!Dnaiss_eleve

qui pose probleme.

Voici la procedure complete ( j'essaierai d'etudier la votre, de la
comprendre et de l'utiliser mais je ne suis pas informaticien de formation
...) :

Public Sub ImprimeNotification()

Dim qdf As dao.QueryDef
Dim rst As dao.Recordset
Dim oWrd As Object
Dim cTitre As String
Dim VarDataPath As String

Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")

Set rst = qdf.OpenRecordset

Set oWrd = CreateObject("word.application")
On Error GoTo err_QuitImprimenotification

'Appel de la fonction CreatRepertoire pour créer le sous-repertoire
"Transmis le ..."
CreatRepertoire

While Not rst.EOF

With oWrd

.Documents.Add Template:=GetDataPath & "notification.doc"

.ActiveDocument.Bookmarks("RL_Nom").Select
.Selection.TypeText Text:=UCase(rst!RL_Nom)

.ActiveDocument.Bookmarks("RL_ad1").Select
.Selection.TypeText Text:=UCase(rst!RL_ad1)

.ActiveDocument.Bookmarks("RL_ad2").Select
.Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
UCase(rst!RL_ad2), " ")

.ActiveDocument.Bookmarks("RL_cpville").Select
.Selection.TypeText Text:=UCase(rst!RL_cpville)

.ActiveDocument.Bookmarks("Elève").Select
.Selection.TypeText Text:=UCase(rst!Elève)

.ActiveDocument.Bookmarks("Dnaiss_eleve").Select
.Selection.TypeText Text:=rst!Dnaiss_eleve

.ActiveDocument.Bookmarks("origine_scolaire").Select
.Selection.TypeText.Date Text:=UCase(rst!Origine_scolaire)

.ActiveDocument.Bookmarks("decision").Select
.Selection.TypeText Text:=(rst!Decision)

.ActiveDocument.Bookmarks("dateretour").Select
.Selection.TypeText Text:=(rst!Dateretour)
.ActiveDocument.PrintOut Background:úlse

End With

rst.MoveNext
Wend

Call MajDateEnvoiNotification

ExitImprimenotification:
oWrd.Application.Quit savechanges:=wdDoNotSaveChanges
Set oWrd = Nothing
Set rst = Nothing
Set qdf = Nothing
Exit Sub

err_QuitImprimenotification:
MsgBox Err.Description
Resume ExitImprimenotification

End Sub

Merci d'avance


"Argyronet" a écrit :

Bonjour,

Hummm, relisez votre code...
Tel qu'il est écrit, sans parler de l'erreur 13 qui est le sujet de votre
message, vous allez ouvrir autant de modèles Word que vous avez
d'enregistrement dans votre requête, donc, je ne pense pas que c'est ce que
vous souhaitez...

Sinon, pour repérer votre erreur, mettez un point d'arrêt en début de
procédure (F9) et exécutez pour nous dire sur quelle ligne cela plante car
dans un bloc With, c'est une erreur très fréquente quand on sollicite une
méthode ou que l'on définit une valeur à un objet qui ne peut pas la
comprendre ou la recevoir.

Enfin, une procédure générique pour solliciter les bookmarks du document
serait plus propre...

Sub DefinirSignet(ByVal NomSignet As String, ByVal ValeurSignet As String,
ByRef MonDoc As Word.Document, ByVal Majuscule As Boolean)
Dim oRng As Range
With MonDoc
Set oRng = .Bookmarks(NomSignet).Range
oRng.Text = IIf(Majuscule, UCase(ValeurSignet), ValeurSignet)
End With
Set oRng = Nothing
End Sub

que vous utilisez par exemple comme suit :

Sub RemplirDoc()
DefinirSignet "Signet1", "Une valeur quelconque", MonDoc, True
End Sub
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"Thierry" a écrit :

> Bonjour tous,
>
> J'ai un problme avec la procdure ci-dessous.
>
> Public Sub ImprimeNotification()
>
> Dim qdf As dao.QueryDef
> Dim rst As dao.Recordset
> Dim oWrd As Object
> Dim cTitre As String
> Dim VarDataPath As String
>
> Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")
>
> Set rst = qdf.OpenRecordset
>
> Set oWrd = CreateObject("word.application")
> On Error GoTo err_QuitImprimenotification
>
> 'Appel de la fonction CreatRepertoire pour crer le sous-repertoire
> "Transmis le ..."
> CreatRepertoire
>
> While Not rst.EOF
>
> With oWrd
>
> .Documents.Add Template:=GetDataPath & "notification.doc"
>
> .ActiveDocument.Bookmarks("RL_Nom").Select
> .Selection.TypeText Text:=UCase(rst!RL_Nom)
>
> .ActiveDocument.Bookmarks("RL_ad1").Select
> .Selection.TypeText Text:=UCase(rst!RL_ad1)
>
> .ActiveDocument.Bookmarks("RL_ad2").Select
> .Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
> UCase(rst!RL_ad2), " ")
>
> .ActiveDocument.Bookmarks("RL_cpville").Select
> .Selection.TypeText Text:=UCase(rst!RL_cpville)
>
> .ActiveDocument.Bookmarks("Elve").Select
> .Selection.TypeText Text:=UCase(rst!Elve)
>
> .ActiveDocument.Bookmarks("Dnaiss_eleve").Select
> .Selection.TypeText Text:=rst!Dnaiss_eleve
> ' .Selection.TypeText Text:=FormatDateTime(rst!Dnaiss_eleve,
> vbGeneralDate)
> etc...
>
> Que ce soit avec la dernire ligne (ici commente) ou l'avant-dernire, il y
> a toujours une incompatibilit de type.
> Le champ Dnaiss_eleve est bien sr au format date dans ma table d'origine.
>
> Merci d'avance ceux et celles qui pourraient m'aider.
> Bonne journe.
>
>
>


Thierry
Le #18797731
Je viens de trouver, il faut mettre : Cstr(rst!Dnaiss_eleve)

Pour argyronet, je suis toujours interesse pour les explications sur
l'ouverture multiple de Word...
Merci encore et bonne fin de journee.



"Thierry" a écrit :

Bonjour et merci d'avoir pris du temps pour me repondre.
Le code que j'ai mis dans mon message est un EXTRAIT d'une procedure que
j'utilise dans d'autres bases ACCESS et qui fonctionne parfaitement.
Je le mets en entier à la fin de ce message et je l'utilise souvent pour des
publipostages de + de 400 enregistrements et je n'ai pas l'impression
d'ouvrir 400 fois Word... Mais si vous pouvez jeter un oeil sur le code
complet, merci de me dire pourquoi Word s'ouvre x fois.
En ce qui concerne l'incompatibilite de type, c'est comme je l'ecris dans
mon premier message, la ligne :
.Selection.TypeText Text:=rst!Dnaiss_eleve

qui pose probleme.

Voici la procedure complete ( j'essaierai d'etudier la votre, de la
comprendre et de l'utiliser mais je ne suis pas informaticien de formation
...) :

Public Sub ImprimeNotification()

Dim qdf As dao.QueryDef
Dim rst As dao.Recordset
Dim oWrd As Object
Dim cTitre As String
Dim VarDataPath As String

Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")

Set rst = qdf.OpenRecordset

Set oWrd = CreateObject("word.application")
On Error GoTo err_QuitImprimenotification

'Appel de la fonction CreatRepertoire pour créer le sous-repertoire
"Transmis le ..."
CreatRepertoire

While Not rst.EOF

With oWrd

.Documents.Add Template:=GetDataPath & "notification.doc"

.ActiveDocument.Bookmarks("RL_Nom").Select
.Selection.TypeText Text:=UCase(rst!RL_Nom)

.ActiveDocument.Bookmarks("RL_ad1").Select
.Selection.TypeText Text:=UCase(rst!RL_ad1)

.ActiveDocument.Bookmarks("RL_ad2").Select
.Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
UCase(rst!RL_ad2), " ")

.ActiveDocument.Bookmarks("RL_cpville").Select
.Selection.TypeText Text:=UCase(rst!RL_cpville)

.ActiveDocument.Bookmarks("Elève").Select
.Selection.TypeText Text:=UCase(rst!Elève)

.ActiveDocument.Bookmarks("Dnaiss_eleve").Select
.Selection.TypeText Text:=rst!Dnaiss_eleve

.ActiveDocument.Bookmarks("origine_scolaire").Select
.Selection.TypeText.Date Text:=UCase(rst!Origine_scolaire)

.ActiveDocument.Bookmarks("decision").Select
.Selection.TypeText Text:=(rst!Decision)

.ActiveDocument.Bookmarks("dateretour").Select
.Selection.TypeText Text:=(rst!Dateretour)
.ActiveDocument.PrintOut Background:úlse

End With

rst.MoveNext
Wend

Call MajDateEnvoiNotification

ExitImprimenotification:
oWrd.Application.Quit savechanges:=wdDoNotSaveChanges
Set oWrd = Nothing
Set rst = Nothing
Set qdf = Nothing
Exit Sub

err_QuitImprimenotification:
MsgBox Err.Description
Resume ExitImprimenotification

End Sub

Merci d'avance


"Argyronet" a écrit :

> Bonjour,
>
> Hummm, relisez votre code...
> Tel qu'il est écrit, sans parler de l'erreur 13 qui est le sujet de votre
> message, vous allez ouvrir autant de modèles Word que vous avez
> d'enregistrement dans votre requête, donc, je ne pense pas que c'est ce que
> vous souhaitez...
>
> Sinon, pour repérer votre erreur, mettez un point d'arrêt en début de
> procédure (F9) et exécutez pour nous dire sur quelle ligne cela plante car
> dans un bloc With, c'est une erreur très fréquente quand on sollicite une
> méthode ou que l'on définit une valeur à un objet qui ne peut pas la
> comprendre ou la recevoir.
>
> Enfin, une procédure générique pour solliciter les bookmarks du document
> serait plus propre...
>
> Sub DefinirSignet(ByVal NomSignet As String, ByVal ValeurSignet As String,
> ByRef MonDoc As Word.Document, ByVal Majuscule As Boolean)
> Dim oRng As Range
> With MonDoc
> Set oRng = .Bookmarks(NomSignet).Range
> oRng.Text = IIf(Majuscule, UCase(ValeurSignet), ValeurSignet)
> End With
> Set oRng = Nothing
> End Sub
>
> que vous utilisez par exemple comme suit :
>
> Sub RemplirDoc()
> DefinirSignet "Signet1", "Une valeur quelconque", MonDoc, True
> End Sub
> --
> Argy
> http://argyronet.developpez.com/
> Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
> VBA pour Office 2007 (ISBN 2742983910)
>
>
>
> "Thierry" a écrit :
>
> > Bonjour tous,
> >
> > J'ai un problme avec la procdure ci-dessous.
> >
> > Public Sub ImprimeNotification()
> >
> > Dim qdf As dao.QueryDef
> > Dim rst As dao.Recordset
> > Dim oWrd As Object
> > Dim cTitre As String
> > Dim VarDataPath As String
> >
> > Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")
> >
> > Set rst = qdf.OpenRecordset
> >
> > Set oWrd = CreateObject("word.application")
> > On Error GoTo err_QuitImprimenotification
> >
> > 'Appel de la fonction CreatRepertoire pour crer le sous-repertoire
> > "Transmis le ..."
> > CreatRepertoire
> >
> > While Not rst.EOF
> >
> > With oWrd
> >
> > .Documents.Add Template:=GetDataPath & "notification.doc"
> >
> > .ActiveDocument.Bookmarks("RL_Nom").Select
> > .Selection.TypeText Text:=UCase(rst!RL_Nom)
> >
> > .ActiveDocument.Bookmarks("RL_ad1").Select
> > .Selection.TypeText Text:=UCase(rst!RL_ad1)
> >
> > .ActiveDocument.Bookmarks("RL_ad2").Select
> > .Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
> > UCase(rst!RL_ad2), " ")
> >
> > .ActiveDocument.Bookmarks("RL_cpville").Select
> > .Selection.TypeText Text:=UCase(rst!RL_cpville)
> >
> > .ActiveDocument.Bookmarks("Elve").Select
> > .Selection.TypeText Text:=UCase(rst!Elve)
> >
> > .ActiveDocument.Bookmarks("Dnaiss_eleve").Select
> > .Selection.TypeText Text:=rst!Dnaiss_eleve
> > ' .Selection.TypeText Text:=FormatDateTime(rst!Dnaiss_eleve,
> > vbGeneralDate)
> > etc...
> >
> > Que ce soit avec la dernire ligne (ici commente) ou l'avant-dernire, il y
> > a toujours une incompatibilit de type.
> > Le champ Dnaiss_eleve est bien sr au format date dans ma table d'origine.
> >
> > Merci d'avance ceux et celles qui pourraient m'aider.
> > Bonne journe.
> >
> >
> >


Argyronet
Le #18807341
Bonjour,

Effectivement, le type incompatible arrive souvent avec ce genre de
sollicitation des bookmarks mais cela se gère relativement bien.

Je n'ai pas dit Multiple instance de Word mais multi ouverture de documents...
Mais j'ai bien vu que vous faisiez une sorte de mailing.
De mon point de vue et dans l'absolu, vous auriez pu faire un :
Documents.Add Template avant la boucle While et n'ouvrir qu'un seul document
pour le remplir totalement avec chaque jeu d'enregistrements après les quels
vous effectuez un Saut de page un peu comme est régi le publipostage de Word
en fait.

Mais je suppose que vous avez en guise de modèle défini ce document et ce
qui m'a posé un doute, c'est son extension .doc ; un modèle possède une
extension .dot ;
Là, tel que c'est écrit, vous risquez de faire un OverFlow de mémoire du
fait que vous ne fermez pas le document après chaque impression ce qui fait
que tous les documents restent ouverts, même si vous ne les voyez pas...
Amusez-vous à ajouter cette instruction après votre With oWrd :
.Visible=True
vous verrez les ouvertures successives.

Et d'ailleurs à ce propos, pourquoi n'avez-vous pas utilisé un état Access.
Cela vous aurait évité toute cette complication via OLE et c'est autrement
plus souple car l'édition de vos états aurait tenu en 1 ligne de code...

--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"Thierry" a écrit :

Je viens de trouver, il faut mettre : Cstr(rst!Dnaiss_eleve)

Pour argyronet, je suis toujours interesse pour les explications sur
l'ouverture multiple de Word...
Merci encore et bonne fin de journee.



"Thierry" a écrit :

> Bonjour et merci d'avoir pris du temps pour me repondre.
> Le code que j'ai mis dans mon message est un EXTRAIT d'une procedure que
> j'utilise dans d'autres bases ACCESS et qui fonctionne parfaitement.
> Je le mets en entier à la fin de ce message et je l'utilise souvent pour des
> publipostages de + de 400 enregistrements et je n'ai pas l'impression
> d'ouvrir 400 fois Word... Mais si vous pouvez jeter un oeil sur le code
> complet, merci de me dire pourquoi Word s'ouvre x fois.
> En ce qui concerne l'incompatibilite de type, c'est comme je l'ecris dans
> mon premier message, la ligne :
> .Selection.TypeText Text:=rst!Dnaiss_eleve
>
> qui pose probleme.
>
> Voici la procedure complete ( j'essaierai d'etudier la votre, de la
> comprendre et de l'utiliser mais je ne suis pas informaticien de formation
> ...) :
>
> Public Sub ImprimeNotification()
>
> Dim qdf As dao.QueryDef
> Dim rst As dao.Recordset
> Dim oWrd As Object
> Dim cTitre As String
> Dim VarDataPath As String
>
> Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")
>
> Set rst = qdf.OpenRecordset
>
> Set oWrd = CreateObject("word.application")
> On Error GoTo err_QuitImprimenotification
>
> 'Appel de la fonction CreatRepertoire pour créer le sous-repertoire
> "Transmis le ..."
> CreatRepertoire
>
> While Not rst.EOF
>
> With oWrd
>
> .Documents.Add Template:=GetDataPath & "notification.doc"
>
> .ActiveDocument.Bookmarks("RL_Nom").Select
> .Selection.TypeText Text:=UCase(rst!RL_Nom)
>
> .ActiveDocument.Bookmarks("RL_ad1").Select
> .Selection.TypeText Text:=UCase(rst!RL_ad1)
>
> .ActiveDocument.Bookmarks("RL_ad2").Select
> .Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
> UCase(rst!RL_ad2), " ")
>
> .ActiveDocument.Bookmarks("RL_cpville").Select
> .Selection.TypeText Text:=UCase(rst!RL_cpville)
>
> .ActiveDocument.Bookmarks("Elève").Select
> .Selection.TypeText Text:=UCase(rst!Elève)
>
> .ActiveDocument.Bookmarks("Dnaiss_eleve").Select
> .Selection.TypeText Text:=rst!Dnaiss_eleve
>
> .ActiveDocument.Bookmarks("origine_scolaire").Select
> .Selection.TypeText.Date Text:=UCase(rst!Origine_scolaire)
>
> .ActiveDocument.Bookmarks("decision").Select
> .Selection.TypeText Text:=(rst!Decision)
>
> .ActiveDocument.Bookmarks("dateretour").Select
> .Selection.TypeText Text:=(rst!Dateretour)
> .ActiveDocument.PrintOut Background:úlse
>
> End With
>
> rst.MoveNext
> Wend
>
> Call MajDateEnvoiNotification
>
> ExitImprimenotification:
> oWrd.Application.Quit savechanges:=wdDoNotSaveChanges
> Set oWrd = Nothing
> Set rst = Nothing
> Set qdf = Nothing
> Exit Sub
>
> err_QuitImprimenotification:
> MsgBox Err.Description
> Resume ExitImprimenotification
>
> End Sub
>
> Merci d'avance
>
>
> "Argyronet" a écrit :
>
> > Bonjour,
> >
> > Hummm, relisez votre code...
> > Tel qu'il est écrit, sans parler de l'erreur 13 qui est le sujet de votre
> > message, vous allez ouvrir autant de modèles Word que vous avez
> > d'enregistrement dans votre requête, donc, je ne pense pas que c'est ce que
> > vous souhaitez...
> >
> > Sinon, pour repérer votre erreur, mettez un point d'arrêt en début de
> > procédure (F9) et exécutez pour nous dire sur quelle ligne cela plante car
> > dans un bloc With, c'est une erreur très fréquente quand on sollicite une
> > méthode ou que l'on définit une valeur à un objet qui ne peut pas la
> > comprendre ou la recevoir.
> >
> > Enfin, une procédure générique pour solliciter les bookmarks du document
> > serait plus propre...
> >
> > Sub DefinirSignet(ByVal NomSignet As String, ByVal ValeurSignet As String,
> > ByRef MonDoc As Word.Document, ByVal Majuscule As Boolean)
> > Dim oRng As Range
> > With MonDoc
> > Set oRng = .Bookmarks(NomSignet).Range
> > oRng.Text = IIf(Majuscule, UCase(ValeurSignet), ValeurSignet)
> > End With
> > Set oRng = Nothing
> > End Sub
> >
> > que vous utilisez par exemple comme suit :
> >
> > Sub RemplirDoc()
> > DefinirSignet "Signet1", "Une valeur quelconque", MonDoc, True
> > End Sub
> > --
> > Argy
> > http://argyronet.developpez.com/
> > Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
> > VBA pour Office 2007 (ISBN 2742983910)
> >
> >
> >
> > "Thierry" a écrit :
> >
> > > Bonjour tous,
> > >
> > > J'ai un problme avec la procdure ci-dessous.
> > >
> > > Public Sub ImprimeNotification()
> > >
> > > Dim qdf As dao.QueryDef
> > > Dim rst As dao.Recordset
> > > Dim oWrd As Object
> > > Dim cTitre As String
> > > Dim VarDataPath As String
> > >
> > > Set qdf = CurrentDb.QueryDefs("Qry_ImpNotification")
> > >
> > > Set rst = qdf.OpenRecordset
> > >
> > > Set oWrd = CreateObject("word.application")
> > > On Error GoTo err_QuitImprimenotification
> > >
> > > 'Appel de la fonction CreatRepertoire pour crer le sous-repertoire
> > > "Transmis le ..."
> > > CreatRepertoire
> > >
> > > While Not rst.EOF
> > >
> > > With oWrd
> > >
> > > .Documents.Add Template:=GetDataPath & "notification.doc"
> > >
> > > .ActiveDocument.Bookmarks("RL_Nom").Select
> > > .Selection.TypeText Text:=UCase(rst!RL_Nom)
> > >
> > > .ActiveDocument.Bookmarks("RL_ad1").Select
> > > .Selection.TypeText Text:=UCase(rst!RL_ad1)
> > >
> > > .ActiveDocument.Bookmarks("RL_ad2").Select
> > > .Selection.TypeText Text:=IIf((rst!RL_ad2) <> "",
> > > UCase(rst!RL_ad2), " ")
> > >
> > > .ActiveDocument.Bookmarks("RL_cpville").Select
> > > .Selection.TypeText Text:=UCase(rst!RL_cpville)
> > >
> > > .ActiveDocument.Bookmarks("Elve").Select
> > > .Selection.TypeText Text:=UCase(rst!Elve)
> > >
> > > .ActiveDocument.Bookmarks("Dnaiss_eleve").Select
> > > .Selection.TypeText Text:=rst!Dnaiss_eleve
> > > ' .Selection.TypeText Text:=FormatDateTime(rst!Dnaiss_eleve,
> > > vbGeneralDate)
> > > etc...
> > >
> > > Que ce soit avec la dernire ligne (ici commente) ou l'avant-dernire, il y
> > > a toujours une incompatibilit de type.
> > > Le champ Dnaiss_eleve est bien sr au format date dans ma table d'origine.
> > >
> > > Merci d'avance ceux et celles qui pourraient m'aider.
> > > Bonne journe.
> > >
> > >
> > >


Publicité
Poster une réponse
Anonyme