Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
de
news:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1
foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,_
ByVal NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,_
ByVal NomCle As
String,_
ByVal Donnee As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doitimpérativement respecter un format
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message de
news: 6158D22A-A92D-4DD6-A998-A101296EA77D@microsoft.com...
ok j'essaye ça demain et je vous dis
Merci
Bonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message
de
news:E74B00EC-4457-4B73-A5B0-206C8EDC6BE2@microsoft.com...
Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
un
peu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soient
numérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
super ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
eApDbhG$GHA.4800@TK2MSFTNGP05.phx.gbl...
Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" <chris.v@waika9.com> a écrit dans le message de
news:OWyoyza%23GHA.4708@TK2MSFTNGP05.phx.gbl...
Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeant
que
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1
fois
la
5ème ligne
Merci de votre aide précieuse
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
uZFO4o58GHA.3820@TK2MSFTNGP02.phx.gbl...
Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
As
String, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) As
Long
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal NomSection
As
String,
_
ByVal NomCle As
String)
As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
de
la
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
la
clé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,
NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle As
String,
_
ByVal Donnee As
String)
As
Boolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section
' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
section
désirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:eVwiki38GHA.568@TK2MSFTNGP05.phx.gbl...
Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message
de
news:
egC$Cd38GHA.4084@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI et
qui
va
le
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:evvIvw28GHA.5092@TK2MSFTNGP04.phx.gbl...
Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doit
impérativement respecter un format
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
de
news:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1
foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,_
ByVal NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,_
ByVal NomCle As
String,_
ByVal Donnee As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doitimpérativement respecter un format
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
de
news:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1
foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,_
ByVal NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,_
ByVal NomCle As
String,_
ByVal Donnee As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doitimpérativement respecter un format
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message de
news: 6158D22A-A92D-4DD6-A998-A101296EA77D@microsoft.com...
ok j'essaye ça demain et je vous dis
Merci
Bonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message
de
news:E74B00EC-4457-4B73-A5B0-206C8EDC6BE2@microsoft.com...
Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
un
peu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soient
numérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
super ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
eApDbhG$GHA.4800@TK2MSFTNGP05.phx.gbl...
Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" <chris.v@waika9.com> a écrit dans le message de
news:OWyoyza%23GHA.4708@TK2MSFTNGP05.phx.gbl...
Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeant
que
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1
fois
la
5ème ligne
Merci de votre aide précieuse
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
uZFO4o58GHA.3820@TK2MSFTNGP02.phx.gbl...
Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
As
String, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) As
Long
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal NomSection
As
String,
_
ByVal NomCle As
String)
As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
de
la
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
la
clé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,
NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle As
String,
_
ByVal Donnee As
String)
As
Boolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section
' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
section
désirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:eVwiki38GHA.568@TK2MSFTNGP05.phx.gbl...
Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message
de
news:
egC$Cd38GHA.4084@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI et
qui
va
le
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:evvIvw28GHA.5092@TK2MSFTNGP04.phx.gbl...
Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doit
impérativement respecter un format
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
de
news:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1
foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,_
ByVal NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,_
ByVal NomCle As
String,_
ByVal Donnee As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doitimpérativement respecter un format
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:ensrbBXCHHA.1196@TK2MSFTNGP02.phx.gbl...
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message de
news: 6158D22A-A92D-4DD6-A998-A101296EA77D@microsoft.com...
ok j'essaye ça demain et je vous dis
Merci
Bonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message
de
news:E74B00EC-4457-4B73-A5B0-206C8EDC6BE2@microsoft.com...
Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
un
peu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soient
numérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
super ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
eApDbhG$GHA.4800@TK2MSFTNGP05.phx.gbl...
Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" <chris.v@waika9.com> a écrit dans le message de
news:OWyoyza%23GHA.4708@TK2MSFTNGP05.phx.gbl...
Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeant
que
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1
fois
la
5ème ligne
Merci de votre aide précieuse
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message
de
news:
uZFO4o58GHA.3820@TK2MSFTNGP02.phx.gbl...
Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
As
String, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) As
Long
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle As
String)
As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
de
la
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
la
clé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,
NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle
As
String,
_
ByVal Donnee
As
String)
As
Boolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section
' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
section
désirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:eVwiki38GHA.568@TK2MSFTNGP05.phx.gbl...
Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le
message
de
news:
egC$Cd38GHA.4084@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
va
le
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:evvIvw28GHA.5092@TK2MSFTNGP04.phx.gbl...
Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doit
impérativement respecter un format
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:ensrbBXCHHA.1196@TK2MSFTNGP02.phx.gbl...
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message de
news: 6158D22A-A92D-4DD6-A998-A101296EA77D@microsoft.com...
ok j'essaye ça demain et je vous dis
Merci
Bonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message
de
news:E74B00EC-4457-4B73-A5B0-206C8EDC6BE2@microsoft.com...
Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
un
peu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soient
numérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
super ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
eApDbhG$GHA.4800@TK2MSFTNGP05.phx.gbl...
Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" <chris.v@waika9.com> a écrit dans le message de
news:OWyoyza%23GHA.4708@TK2MSFTNGP05.phx.gbl...
Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeant
que
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1
fois
la
5ème ligne
Merci de votre aide précieuse
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message
de
news:
uZFO4o58GHA.3820@TK2MSFTNGP02.phx.gbl...
Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
As
String, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) As
Long
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle As
String)
As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
de
la
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
la
clé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,
NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle
As
String,
_
ByVal Donnee
As
String)
As
Boolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section
' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
section
désirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:eVwiki38GHA.568@TK2MSFTNGP05.phx.gbl...
Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le
message
de
news:
egC$Cd38GHA.4084@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
va
le
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:evvIvw28GHA.5092@TK2MSFTNGP04.phx.gbl...
Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doit
impérativement respecter un format
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle, Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
par contre je le met comme ceci dans mon module?
: Print #intFichier, Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
où il y a une autre façon de procéder
Merci
"Gilbert" a écrit dans le message de news:Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message
de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le
message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les
enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je
suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message",
acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met
(logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule
fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName
As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle
As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans
la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il
est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans
la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle,
Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
par contre je le met comme ceci dans mon module?
: Print #intFichier, Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
où il y a une autre façon de procéder
Merci
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
OfVKtaXCHHA.4404@TK2MSFTNGP06.phx.gbl...
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:ensrbBXCHHA.1196@TK2MSFTNGP02.phx.gbl...
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message
de
news: 6158D22A-A92D-4DD6-A998-A101296EA77D@microsoft.com...
ok j'essaye ça demain et je vous dis
Merci
Bonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le
message
de
news:E74B00EC-4457-4B73-A5B0-206C8EDC6BE2@microsoft.com...
Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
un
peu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les
enregistrements
soient
numérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je
suis
clair)
Merci
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
super ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
eApDbhG$GHA.4800@TK2MSFTNGP05.phx.gbl...
Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" <chris.v@waika9.com> a écrit dans le message de
news:OWyoyza%23GHA.4708@TK2MSFTNGP05.phx.gbl...
Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeant
que
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message",
acNormal,
acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met
(logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule
fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1
fois
la
5ème ligne
Merci de votre aide précieuse
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message
de
news:
uZFO4o58GHA.3820@TK2MSFTNGP02.phx.gbl...
Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
As
String, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName
As
String) As
Long
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle
As
String)
As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
de
la
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
la
clé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,
NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle
As
String,
_
ByVal Donnee
As
String)
As
Boolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans
la
section
' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il
est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans
la
section
désirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle,
Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:eVwiki38GHA.568@TK2MSFTNGP05.phx.gbl...
Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le
message
de
news:
egC$Cd38GHA.4084@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
va
le
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:evvIvw28GHA.5092@TK2MSFTNGP04.phx.gbl...
Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doit
impérativement respecter un format
par contre je le met comme ceci dans mon module?
: Print #intFichier, Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
où il y a une autre façon de procéder
Merci
"Gilbert" a écrit dans le message de news:Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message
de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le
message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les
enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je
suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message",
acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met
(logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule
fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName
As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle
As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans
la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il
est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans
la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle,
Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
l'erreur se produit à chaque enregistrement
j'ai essayé aussi en enlevant le +1 comme ceci
Print #intFichier, rst.AbsolutePosition
et en simplifiant le fichier, c'est à dire en simplifiant le nombre de
champs et de lignes
(j'ai mis le minimun) il y a 2 enregistrements dans ma table
et c'est pareil
par contre "mettre des points d'arrets", cela ne me parle pas
Merci
"Gilbert" a écrit dans le message de news:Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message
de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le
message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les
enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je
suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message",
acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met
(logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule
fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName
As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle
As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans
la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il
est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans
la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle,
Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
l'erreur se produit à chaque enregistrement
j'ai essayé aussi en enlevant le +1 comme ceci
Print #intFichier, rst.AbsolutePosition
et en simplifiant le fichier, c'est à dire en simplifiant le nombre de
champs et de lignes
(j'ai mis le minimun) il y a 2 enregistrements dans ma table
et c'est pareil
par contre "mettre des points d'arrets", cela ne me parle pas
Merci
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
OfVKtaXCHHA.4404@TK2MSFTNGP06.phx.gbl...
Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:ensrbBXCHHA.1196@TK2MSFTNGP02.phx.gbl...
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message
de
news: 6158D22A-A92D-4DD6-A998-A101296EA77D@microsoft.com...
ok j'essaye ça demain et je vous dis
Merci
Bonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le
message
de
news:E74B00EC-4457-4B73-A5B0-206C8EDC6BE2@microsoft.com...
Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
un
peu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les
enregistrements
soient
numérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je
suis
clair)
Merci
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
super ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
eApDbhG$GHA.4800@TK2MSFTNGP05.phx.gbl...
Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" <chris.v@waika9.com> a écrit dans le message de
news:OWyoyza%23GHA.4708@TK2MSFTNGP05.phx.gbl...
Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeant
que
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message",
acNormal,
acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met
(logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule
fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1
fois
la
5ème ligne
Merci de votre aide précieuse
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message
de
news:
uZFO4o58GHA.3820@TK2MSFTNGP02.phx.gbl...
Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
As
String, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName
As
String) As
Long
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle
As
String)
As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
de
la
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
la
clé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,
NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal
NomSection
As
String,
_
ByVal NomCle
As
String,
_
ByVal Donnee
As
String)
As
Boolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans
la
section
' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il
est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans
la
section
désirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désirées
Test = WritePrivateProfileString(NomSection, NomCle,
Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:eVwiki38GHA.568@TK2MSFTNGP05.phx.gbl...
Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le
message
de
news:
egC$Cd38GHA.4084@TK2MSFTNGP05.phx.gbl...
Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
va
le
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:evvIvw28GHA.5092@TK2MSFTNGP04.phx.gbl...
Bonjour
J'exporte des données d'une table vers un fichier texte
qui
doit
impérativement respecter un format
l'erreur se produit à chaque enregistrement
j'ai essayé aussi en enlevant le +1 comme ceci
Print #intFichier, rst.AbsolutePosition
et en simplifiant le fichier, c'est à dire en simplifiant le nombre de
champs et de lignes
(j'ai mis le minimun) il y a 2 enregistrements dans ma table
et c'est pareil
par contre "mettre des points d'arrets", cela ne me parle pas
Merci
"Gilbert" a écrit dans le message de news:Bonjour,
Voici pour le mois
TonMois = Choose(Month(Date - 1), "JAN", "FEB", "MAR",
"APR","...........",
"DEC")
Pour l'erreur 3251
Est-ce que l'erreur se produit à chaque enregistrement?
As-tu essayé en mettent des points d'arrêt et en testant les valeurs?
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier
paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message
de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le
message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les
enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je
suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message",
acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" &
Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met
(logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule
fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne
et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message
de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName
As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal
NomSection
As
String,_
ByVal NomCle
As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
'Ecriture de la Valeur d'une clé dans un fichier INI
Public Function Ecriture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,
_
ByVal
NomSectionAs
String,_
ByVal NomCle
As
String,_
ByVal Donnee
As
String)AsBoolean
' Pour enregistrer les données, on utilise la fonction
WritePrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé où doit être enregistrer la donnée dans
la
section' La donnée a enregistrer
' Le nom du fichier INI ainsi que le répertoire dans lequel
il
se
trouve
' Remarques :
' Si le fichier n'existe pas ou s'il n'est pas trouvé, il
est
créé.
' Si la section n'existe pas, elle est ajoutée
' Si la clé n'existe pas, elle est également ajoutée dans
la
sectiondésirée
Dim Test ' Déclaration d'une variable de test d'écriture
' Ecriture de la valeur dans la section et dans la clé
désiréesTest = WritePrivateProfileString(NomSection, NomCle,
Donnee,
NomFichier)
Ecriture_Valeur_Cle_Fichier_INI = -Test
End Function
Gilbert
"chris" a écrit dans le message de
news:Re
ok merci mais ce que j'aimerais c'est un exemple
ou une explication des fonctionnalités
"Gilbert" a écrit dans le
message
de
news:egC$Bonjour,
Dans la mesure où c'est toi qui va créer le fichier .INI
et
qui
vale
le
lire, tu peux bien y organiser les données comme tu
l'entends.
Il n'y a aucune obligation d'aucune sorte.
Gilbert
"chris" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte
quidoitimpérativement respecter un format
Précision
Pour l'avoir en français il suffit de :
StrConv(Left(MonthName(Month(Date - 1)), 3), vbUpperCase)
Le nombre de m dans la fonction Format ne correspond pas au nombre de
lettres.
m ou mm donne le mois en chiffre
mmm en abrégé
mmmm le nom complet
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
Précision
Pour l'avoir en français il suffit de :
StrConv(Left(MonthName(Month(Date - 1)), 3), vbUpperCase)
Le nombre de m dans la fonction Format ne correspond pas au nombre de
lettres.
m ou mm donne le mois en chiffre
mmm en abrégé
mmmm le nom complet
Gilbert
"chris" <chris.v@waika9.com> a écrit dans le message de
news:ensrbBXCHHA.1196@TK2MSFTNGP02.phx.gbl...
Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message de
news: 6158D22A-A92D-4DD6-A998-A101296EA77D@microsoft.com...
ok j'essaye ça demain et je vous dis
Merci
Bonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" <Chris50@discussions.microsoft.com> a écrit dans le message
de
news:E74B00EC-4457-4B73-A5B0-206C8EDC6BE2@microsoft.com...
Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
un
peu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soient
numérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
super ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
eApDbhG$GHA.4800@TK2MSFTNGP05.phx.gbl...
Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" <chris.v@waika9.com> a écrit dans le message de
news:OWyoyza%23GHA.4708@TK2MSFTNGP05.phx.gbl...
Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeant
que
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&
"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"
&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les
3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1
fois
la
5ème ligne
Merci de votre aide précieuse
"Gilbert" <ZZZZgilbertvie@tiscali.fr> a écrit dans le message de
news:
uZFO4o58GHA.3820@TK2MSFTNGP02.phx.gbl...
Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"
Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
As
String, ByVal nSize As Long, ByVal lpFileName As String) As
Long
Private Declare Function WritePrivateProfileString Lib
"kernel32"
Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,
ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) As
Long
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichier
As
String,
_
ByVal NomSection
As
String,
_
ByVal NomCle As
String)
As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString
' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
de
la
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeur
de
la
clé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,
255,
NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
Précision
Pour l'avoir en français il suffit de :
StrConv(Left(MonthName(Month(Date - 1)), 3), vbUpperCase)
Le nombre de m dans la fonction Format ne correspond pas au nombre de
lettres.
m ou mm donne le mois en chiffre
mmm en abrégé
mmmm le nom complet
Gilbert
"chris" a écrit dans le message de
news:Bonjour
Pour la date c'est ok, par contre
j'ai mis ceci :
Print #intFichier, rst.AbsolutePosition +1
et là il me dit :
erreur d'execution 3251
opération non autorisée pour ce type d'objet
voilou
j'ai essayé aussi de mettre dans un autre module
Print #intFichier, Format(Date - 1, "mmm") pour avoir les 3 premièrers
lettres du mois
cela fonctionne, mais le mois apparaît en minuscules (j'en ai besoin en
majuscules forcément) et en français (normal, mais là je suis encore
exigeant, je sais, mais j'en ai besoin en anglais (si ce dernier paramètre
n'est pas possible on le mettra manuellement))
Merci beaucoup
"Chris50" a écrit dans le message de
news:ok j'essaye ça demain et je vous dis
MerciBonjour,
Pour la date de la veille tu peux utiliser :
Format(Date - 1, "ddmmyy")
et pour le numéro de l'enregistrement :
rst.AbsolutePosition +1 (la numérotation commence à 0)
Gilbert
"Chris50" a écrit dans le message
denews:Euh re bonjour,
J'ai encore 1 ou 2 ptits trucs à demander, car on m'a demandé de
modifier
unpeu le format
Avant le Nz(rst("NOM"), "-")
il faut mettre :
la date de la veille sous ce format : 141106 pour le 14 nov 2006
le numéro de l'enregistrement : c'est à dire que les enregistrements
soientnumérotés de 1 à 4 s'il y a 4 enregistrements (je sais po si je suis
clair)
Merci
If not rst.EOF thenPrint #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End Ifsuper ça fonctionne
merci infiniment, je va maintenant m'essayer au fichier ini
merci encore
"Gilbert" a écrit dans le message de
news:
eApDbhG$Bonjour,
Il suffit de sortir de la boucle les écritures que tu ne veux
qu'une
fois.
If not rst.EOF then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
While Not rst.EOF
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-"
&Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
"chris" a écrit dans le message de
news:OWyoyza%Merci beaucoup, je vais essayer ça
Pour un autre type de message préformaté (celui-ci est moins
changeantque
l'autre), j'utilise ceci :
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal,
acEditDoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
While Not rst.EOF
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
Print #intFichier, "par" Nz(rst("Nom agent"), "-")
Print #intFichier, "objet du message : listing du " &
Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"),
"-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") &
"-"&
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, "Fin de liste"
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
et lorsque j'ai 2 enregistrements ou plus, il met met (logique)
les 4
lignes, comment faire une boucle pour qu'il mette 1 seule fois
les3
premières ligne
puis autant de fois qu'il y a d'enregistrements la 4ème ligne et
1foisla
5ème ligne
Merci de votre aide précieuse
"Gilbert" a écrit dans le message de
news:Tu peux faire un fichier texte tout simple
Entete
Champ1;Champ2;Champ54
Champ25;champ4
Champ5
...
Fin
Ensuite tu lis ton fichier séquentiellement
Open NomFichier For Input As #1
Do While Not EOF(1)
Texte = Input(LOF(1), 1)
Traitement.......
Loop
Close #1
Si tu tiens à utiliser un fichier .INI, voici 2 fonctions
Private Declare Function GetPrivateProfileString Lib
"kernel32"Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVallpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString
AsString, ByVal nSize As Long, ByVal lpFileName As String) As
LongPrivate Declare Function WritePrivateProfileString Lib
"kernel32"
Alias"WritePrivateProfileStringA" (ByVal lpApplicationName As
String,ByVallpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) AsLong
'Lecture de la Valeur d'une clé dans un fichier INI
Public Function Lecture_Valeur_Cle_Fichier_INI(ByVal
NomFichierAs
String,_
ByVal NomSection
As
String,_
ByVal NomCle As
String)As
String
' Pour lire les données, on utilise la fonction
GetPrivateProfileString' Les arguments passés à l'API Windows sont :
' Le nom de section dans le fichier INI
' Le nom de la clé qui doit être lue dans la section
' La valeur par défaut
' La variable dans laquelle on stocke la donnée lue
' La longueur de la chaîne de caractère
' Le nom du fichier INI ainsi que le répertoire dans lequel il
se
trouve
Dim Taille As Long ' Variable pour recevoir la
longueur
dela
chaîne lue
Dim Donnee As String * 255 ' Variable pour recevoir la
valeurde
laclé
' Lecture de la clé dans la section
Taille = GetPrivateProfileString(NomSection, NomCle, "",
Donnee,255,NomFichier)
Lecture_Valeur_Cle_Fichier_INI = Mid(Donnee, 1, Taille)
End Function
Bonjour,
alors pour la date c'est Ok
par contre pour le reste (numérotation de l'enregistrement Print
#intFichier, rst.AbsolutePosition) toujours l'erreur 3251
opération non autorisée pour ce type d'objet
voilà le code
Merci
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
While Not rst.EOF
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"), "-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-" &
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR", "APR",
"MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
Print #intFichier, rst.AbsolutePosition
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
Bonjour,
alors pour la date c'est Ok
par contre pour le reste (numérotation de l'enregistrement Print
#intFichier, rst.AbsolutePosition) toujours l'erreur 3251
opération non autorisée pour ce type d'objet
voilà le code
Merci
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
While Not rst.EOF
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"), "-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-" &
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR", "APR",
"MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
Print #intFichier, rst.AbsolutePosition
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
Bonjour,
alors pour la date c'est Ok
par contre pour le reste (numérotation de l'enregistrement Print
#intFichier, rst.AbsolutePosition) toujours l'erreur 3251
opération non autorisée pour ce type d'objet
voilà le code
Merci
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
While Not rst.EOF
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"), "-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-" &
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR", "APR",
"MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
Print #intFichier, rst.AbsolutePosition
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
Bonsoir,
Je ne comprends toujours pas cette erreur.
J'ai déjà utilisé cette propriété sans jamais rencontrer d'erreur.
Quelle version d'Access utilises-tu?
As-tu fait un essai sur un autre recordset? du genre
set rst=currentdb.openrecordset("Select * from UneTable")
do while not rst.eof
debug.print rst.AbsolutePosition
rst.movenext
loop
Gilbert
"Chris" a écrit dans le message de
news:Bonjour,
alors pour la date c'est Ok
par contre pour le reste (numérotation de l'enregistrement Print
#intFichier, rst.AbsolutePosition) toujours l'erreur 3251
opération non autorisée pour ce type d'objet
voilà le code
Merci
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
While Not rst.EOF
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),
"-")Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"), "-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-" &
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR", "APR",
"MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
Print #intFichier, rst.AbsolutePosition
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
Bonsoir,
Je ne comprends toujours pas cette erreur.
J'ai déjà utilisé cette propriété sans jamais rencontrer d'erreur.
Quelle version d'Access utilises-tu?
As-tu fait un essai sur un autre recordset? du genre
set rst=currentdb.openrecordset("Select * from UneTable")
do while not rst.eof
debug.print rst.AbsolutePosition
rst.movenext
loop
Gilbert
"Chris" <chris.v@waika9.com> a écrit dans le message de
news:eivn3m9DHHA.5028@TK2MSFTNGP03.phx.gbl...
Bonjour,
alors pour la date c'est Ok
par contre pour le reste (numérotation de l'enregistrement Print
#intFichier, rst.AbsolutePosition) toujours l'erreur 3251
opération non autorisée pour ce type d'objet
voilà le code
Merci
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
While Not rst.EOF
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),
"-")
Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"), "-")
&"-"
& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-" &
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR", "APR",
"MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
Print #intFichier, rst.AbsolutePosition
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function
Bonsoir,
Je ne comprends toujours pas cette erreur.
J'ai déjà utilisé cette propriété sans jamais rencontrer d'erreur.
Quelle version d'Access utilises-tu?
As-tu fait un essai sur un autre recordset? du genre
set rst=currentdb.openrecordset("Select * from UneTable")
do while not rst.eof
debug.print rst.AbsolutePosition
rst.movenext
loop
Gilbert
"Chris" a écrit dans le message de
news:Bonjour,
alors pour la date c'est Ok
par contre pour le reste (numérotation de l'enregistrement Print
#intFichier, rst.AbsolutePosition) toujours l'erreur 3251
opération non autorisée pour ce type d'objet
voilà le code
Merci
Function message()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long
'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")
'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier
'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
While Not rst.EOF
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),
"-")Print #intFichier, Nz(rst("NOM"), "-") & "-" & Nz(rst("Prenom"), "-")
&"-"& Nz(rst("adresse"), "-") & "/" & Nz(rst("téléphone"), "-") & "-" &
Nz(rst("email"), "-") & "-" & Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR", "APR",
"MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
Print #intFichier, rst.AbsolutePosition
Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"
' passer à l'enregistrement suivant
rst.MoveNext
Wend
Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"
'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function