OVH Cloud OVH Cloud

Code Automation

10 réponses
Avatar
Sogolon
Salut à toutes et à tous.
Voila, j'utilise automation avec wourd pour exporter certaines dans word
pour rédiger mon courrier.
Voilà le code:
---------------------------------------------
Set objWord = CreateObject("Word.Application")
With objWord

' Make the application visible.
.Visible = False
.Documents.Open (g:\Lettre.dot")

.ActiveDocument.Bookmarks("référence").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!référence))

.ActiveDocument.Bookmarks("DateCourrier").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!DateCourrier))

.ActiveDocument.Bookmarks("objet").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

.ActiveDocument.Bookmarks("NomSociete").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!NomSociete))

.ActiveDocument.Bookmarks("Prenom").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

.ActiveDocument.Bookmarks("Nom").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Nom))
-------------------------------------------------------------------
Mon prbème:
Le code s'arrête au premier champ vide de ma table.
Comment modifier ce code afin qu'il continue sans bogue même s'il des
champs nulls.
Merci de votre aide.
A+...

10 réponses

Avatar
Bonjour

remplace tes

.Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

par

.Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------


"Sogolon" <mbenoumar(àsuprimer)@hotmail.com> a écrit dans le message de news:
Salut à toutes et à tous.
Voila, j'utilise automation avec wourd pour exporter certaines dans word
pour rédiger mon courrier.
Voilà le code:
---------------------------------------------
Set objWord = CreateObject("Word.Application")
With objWord

' Make the application visible.
.Visible = False
.Documents.Open (g:Lettre.dot")

.ActiveDocument.Bookmarks("référence").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!référence))

.ActiveDocument.Bookmarks("DateCourrier").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!DateCourrier))

.ActiveDocument.Bookmarks("objet").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

.ActiveDocument.Bookmarks("NomSociete").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!NomSociete))

.ActiveDocument.Bookmarks("Prenom").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

.ActiveDocument.Bookmarks("Nom").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Nom))
-------------------------------------------------------------------
Mon prbème:
Le code s'arrête au premier champ vide de ma table.
Comment modifier ce code afin qu'il continue sans bogue même s'il des
champs nulls.
Merci de votre aide.
A+...


Avatar
LiR
Bonjour à vous,

Le code proposé par Anor ne résoud pas le problème, car une valeur Null
pourra toujours être passée à la fonction Cstr (c'est la source du plantage).

Une méthode, qui me paraît être la plus simple pour affecter une valeur
pouvant valoir Null à une chaîne de texte :

Text = vbNullString & Forms!tbcorrespondance!référence

Text vaudra "" (vbNullString) si le champ vaut Null



Bonjour

remplace tes

..Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

par

..Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------


"Sogolon" <mbenoumar(àsuprimer)@hotmail.com> a écrit dans le message de news:
Salut à toutes et à tous.
Voila, j'utilise automation avec wourd pour exporter certaines dans word
pour rédiger mon courrier.
Voilà le code:
---------------------------------------------
Set objWord = CreateObject("Word.Application")
With objWord

' Make the application visible.
.Visible = False
.Documents.Open (g:Lettre.dot")

.ActiveDocument.Bookmarks("référence").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!référence))

.ActiveDocument.Bookmarks("DateCourrier").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!DateCourrier))

.ActiveDocument.Bookmarks("objet").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

.ActiveDocument.Bookmarks("NomSociete").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!NomSociete))

.ActiveDocument.Bookmarks("Prenom").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Objet))

.ActiveDocument.Bookmarks("Nom").Select
.Selection.Text = (CStr(Forms!tbcorrespondance!Nom))
-------------------------------------------------------------------
Mon prbème:
Le code s'arrête au premier champ vide de ma table.
Comment modifier ce code afin qu'il continue sans bogue même s'il des
champs nulls.
Merci de votre aide.
A+...







Avatar
Salut

"LiR" a écrit dans le message de news:
Bonjour à vous,

Le code proposé par Anor ne résoud pas le problème, car une valeur Null
pourra toujours être passée à la fonction Cstr (c'est la source du plantage).

..Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")




ah oui très juste, j'aurais dans ce cas peut-être dû écrire :
.Selection.Text = CStr(Nz(Forms!tbcorrespondance!Objet,""))

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------


Avatar
Sogolon
Bonjour et merci à tous les deux.
Je mets en application et vous donne un feedback bientôt.
Merci et bonne journée

A+...


Salut

"LiR" a écrit dans le message de news:
Bonjour à vous,

Le code proposé par Anor ne résoud pas le problème, car une valeur Null
pourra toujours être passée à la fonction Cstr (c'est la source du plantage).

..Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")




ah oui très juste, j'aurais dans ce cas peut-être dû écrire :
..Selection.Text = CStr(Nz(Forms!tbcorrespondance!Objet,""))

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------







Avatar
Sogolon
Bonjour et merci à tous les deux.
J'ai testé les deux solutions, elles fonctionnent.
Merci beaucoup.
Comment s'il vous plait rendre invisible le bouton "Exporter_vers_word" que
j'ai sur mon formulaire quand le champ "DocFichier" contenant le chemin du
fichier crée est non null (Not IsNull)
J'ai essayé ceci:
--------
If Not IsNull(Me!DocFichier) Then
Exporter_vers_word.Visible = False
End If
--------------
Exporter_vers_word est le nom de mon bouton de commande.
Merci à toute la communauté.
A+...




Bonjour et merci à tous les deux.
Je mets en application et vous donne un feedback bientôt.
Merci et bonne journée

A+...


Salut

"LiR" a écrit dans le message de news:
Bonjour à vous,

Le code proposé par Anor ne résoud pas le problème, car une valeur Null
pourra toujours être passée à la fonction Cstr (c'est la source du plantage).

..Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")




ah oui très juste, j'aurais dans ce cas peut-être dû écrire :
..Selection.Text = CStr(Nz(Forms!tbcorrespondance!Objet,""))

a+
--
Arnaud






Avatar
LiR
Exporter_vers_word.Visible = IsNull(Me!DocFichier)

le mieux est de faire une procédure générale :

Private Sub CheckExport ()
Exporter_vers_word.Visible = IsNull(Me!DocFichier)
End Sub

Et de la placer dans l'événement Form_Current afin de rafraîchir à chaque
affichage d'un enregistrement et en fin de code d'exportation, après
validation du fichier.

Cependant, si le bouton a le focus (ce qui est probablement le cas après
avoir exporté vers word), une erreur sera générée car on essaye de masquer le
contrôle actif, ce qui est impossible avec Access.
Il faut donc ajouter une petite vérification supplémentaire qui passe la
focus à n'importe quel autre contrôle avant de masquer le bouton :

Private Sub CheckExport ()

Dim activCtrl as Object

If IsNull(Me!DocFichier) then

Exporter_vers_word.Visible = True

Else

On Error resume Next
Set activCtrl = Me.ActiveControl
If activCtrl Is Exporter_vers_word Then
Me.AutreControle.SetFocus ' A MODIFIER
End if

Exporter_vers_word.Visible = False

End If

End Sub

Dans cette procédure, il faut remplacer dans :

Me.AutreControle.SetFocus

AutreControle par le nom d'un contrôle du formulaire pour passer le focus à
ce contrôle (pour que le bouton Exporter_vers_word n'ait plus le focus et
puisse être masqué)


Bonjour et merci à tous les deux.
J'ai testé les deux solutions, elles fonctionnent.
Merci beaucoup.
Comment s'il vous plait rendre invisible le bouton "Exporter_vers_word" que
j'ai sur mon formulaire quand le champ "DocFichier" contenant le chemin du
fichier crée est non null (Not IsNull)
J'ai essayé ceci:
--------
If Not IsNull(Me!DocFichier) Then
Exporter_vers_word.Visible = False
End If
--------------
Exporter_vers_word est le nom de mon bouton de commande.
Merci à toute la communauté.
A+...




Bonjour et merci à tous les deux.
Je mets en application et vous donne un feedback bientôt.
Merci et bonne journée

A+...


Salut

"LiR" a écrit dans le message de news:
Bonjour à vous,

Le code proposé par Anor ne résoud pas le problème, car une valeur Null
pourra toujours être passée à la fonction Cstr (c'est la source du plantage).

..Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")




ah oui très juste, j'aurais dans ce cas peut-être dû écrire :
..Selection.Text = CStr(Nz(Forms!tbcorrespondance!Objet,""))

a+
--
Arnaud









Avatar
Sogolon
rebonjour "LiR"
je ne comprends pas quand vous dites:

Et de la placer dans l'événement Form_Current afin de rafraîchir à chaque
affichage d'un enregistrement et en fin de code d'exportation, après
validation du fichier.
Merci

A+...


Exporter_vers_word.Visible = IsNull(Me!DocFichier)

le mieux est de faire une procédure générale :

Private Sub CheckExport ()
Exporter_vers_word.Visible = IsNull(Me!DocFichier)
End Sub

Et de la placer dans l'événement Form_Current afin de rafraîchir à chaque
affichage d'un enregistrement et en fin de code d'exportation, après
validation du fichier.

Cependant, si le bouton a le focus (ce qui est probablement le cas après
avoir exporté vers word), une erreur sera générée car on essaye de masquer le
contrôle actif, ce qui est impossible avec Access.
Il faut donc ajouter une petite vérification supplémentaire qui passe la
focus à n'importe quel autre contrôle avant de masquer le bouton :

Private Sub CheckExport ()

Dim activCtrl as Object

If IsNull(Me!DocFichier) then

Exporter_vers_word.Visible = True

Else

On Error resume Next
Set activCtrl = Me.ActiveControl
If activCtrl Is Exporter_vers_word Then
Me.AutreControle.SetFocus ' A MODIFIER
End if

Exporter_vers_word.Visible = False

End If

End Sub

Dans cette procédure, il faut remplacer dans :

Me.AutreControle.SetFocus

AutreControle par le nom d'un contrôle du formulaire pour passer le focus à
ce contrôle (pour que le bouton Exporter_vers_word n'ait plus le focus et
puisse être masqué)


Bonjour et merci à tous les deux.
J'ai testé les deux solutions, elles fonctionnent.
Merci beaucoup.
Comment s'il vous plait rendre invisible le bouton "Exporter_vers_word" que
j'ai sur mon formulaire quand le champ "DocFichier" contenant le chemin du
fichier crée est non null (Not IsNull)
J'ai essayé ceci:
--------
If Not IsNull(Me!DocFichier) Then
Exporter_vers_word.Visible = False
End If
--------------
Exporter_vers_word est le nom de mon bouton de commande.
Merci à toute la communauté.
A+...




Bonjour et merci à tous les deux.
Je mets en application et vous donne un feedback bientôt.
Merci et bonne journée

A+...


Salut

"LiR" a écrit dans le message de news:
Bonjour à vous,

Le code proposé par Anor ne résoud pas le problème, car une valeur Null
pourra toujours être passée à la fonction Cstr (c'est la source du plantage).

..Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")




ah oui très juste, j'aurais dans ce cas peut-être dû écrire :
..Selection.Text = CStr(Nz(Forms!tbcorrespondance!Objet,""))

a+
--
Arnaud











Avatar
LiR
euh... je ne comprends pas ce que vous ne comprenez pas !


rebonjour "LiR"
je ne comprends pas quand vous dites:

Et de la placer dans l'événement Form_Current afin de rafraîchir à chaque
affichage d'un enregistrement et en fin de code d'exportation, après
validation du fichier.
Merci

A+...


Exporter_vers_word.Visible = IsNull(Me!DocFichier)

le mieux est de faire une procédure générale :

Private Sub CheckExport ()
Exporter_vers_word.Visible = IsNull(Me!DocFichier)
End Sub

Et de la placer dans l'événement Form_Current afin de rafraîchir à chaque
affichage d'un enregistrement et en fin de code d'exportation, après
validation du fichier.

Cependant, si le bouton a le focus (ce qui est probablement le cas après
avoir exporté vers word), une erreur sera générée car on essaye de masquer le
contrôle actif, ce qui est impossible avec Access.
Il faut donc ajouter une petite vérification supplémentaire qui passe la
focus à n'importe quel autre contrôle avant de masquer le bouton :

Private Sub CheckExport ()

Dim activCtrl as Object

If IsNull(Me!DocFichier) then

Exporter_vers_word.Visible = True

Else

On Error resume Next
Set activCtrl = Me.ActiveControl
If activCtrl Is Exporter_vers_word Then
Me.AutreControle.SetFocus ' A MODIFIER
End if

Exporter_vers_word.Visible = False

End If

End Sub

Dans cette procédure, il faut remplacer dans :

Me.AutreControle.SetFocus

AutreControle par le nom d'un contrôle du formulaire pour passer le focus à
ce contrôle (pour que le bouton Exporter_vers_word n'ait plus le focus et
puisse être masqué)


Bonjour et merci à tous les deux.
J'ai testé les deux solutions, elles fonctionnent.
Merci beaucoup.
Comment s'il vous plait rendre invisible le bouton "Exporter_vers_word" que
j'ai sur mon formulaire quand le champ "DocFichier" contenant le chemin du
fichier crée est non null (Not IsNull)
J'ai essayé ceci:
--------
If Not IsNull(Me!DocFichier) Then
Exporter_vers_word.Visible = False
End If
--------------
Exporter_vers_word est le nom de mon bouton de commande.
Merci à toute la communauté.
A+...




Bonjour et merci à tous les deux.
Je mets en application et vous donne un feedback bientôt.
Merci et bonne journée

A+...


Salut

"LiR" a écrit dans le message de news:
Bonjour à vous,

Le code proposé par Anor ne résoud pas le problème, car une valeur Null
pourra toujours être passée à la fonction Cstr (c'est la source du plantage).

..Selection.Text = Nz(CStr(Forms!tbcorrespondance!Objet),"")




ah oui très juste, j'aurais dans ce cas peut-être dû écrire :
..Selection.Text = CStr(Nz(Forms!tbcorrespondance!Objet,""))

a+
--
Arnaud













Avatar
Sogolon
Ok.
Je me documente, je lis et je réessaie.
Je vous recontacte après.
Merci.
A+...
Avatar
Sogolon
Bonjour toute la communauté.
Bonjour "LiR" et bonjour "Anor".
Voilà après un peu lecture pour en connaître d'avantage sur Access, pour mon
code je suis parvenue à ceci:
-----------------------------sur l'évèment "Sur activation"
Private Sub Form_Current()
Exporter_vers_word.Visible .Visible = IsNull(Me!DocFichier)
CmdOpenfile.Visible = Not IsNull(Me!DocFichier)
End Sub
-------------------------
Et à la fin de mon code d'automation (sur clic de Exporter_vers_word)
-------------------------------
...
objWord.Quit

Set objWord = Nothing
...
If IsNull(Me!DocFichier) Then

Exporter_vers_word.Visible = True

Else

On Error Resume Next
Set activCtrl = Me.ActiveControl
If activCtrl Is Exporter_vers_word Then
Me.Objet.SetFocus ' A MODIFIER
End If

Exporter_vers_word.Visible = False
CmdOpenfile.Visible = True
End If
End Sub
------------------------------------
Mon bouton "Exporter_vers_word" est caché seulement sur démarrage du
formulaire de saisie sur un nouveau enregistement.
Par exemple si j'ajoute un nouvel enregistrement et que fasse suivant, il
est toujours caché, mais si je fais précédent, le champ "DocFichier" n'est
pas nul mais le bouton"Exporter_vers_word" est visible.
Merci à toutes et tous de votre aide.
A+...


Ok.
Je me documente, je lis et je réessaie.
Je vous recontacte après.
Merci.
A+...