Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont "alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont "alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont "alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont "alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont "alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont "alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et
deredonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si
on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et
deredonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" 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, 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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
et
deredonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si
on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" 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, 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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
et
deredonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de la
table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sans
avoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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 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" 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, 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)
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 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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
etderedonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas
si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sansavoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas
si
on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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 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" 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, 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)
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 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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
etderedonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas
si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sansavoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" 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 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" 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, 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)
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 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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
etderedonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas
si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sansavoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas
si
on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" 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 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" 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, 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)
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 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" 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 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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module
etderedonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais pas
si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de ligne
sansavoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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 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
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" 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,
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)
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
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" 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
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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui
doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette
manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le
code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou
de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le
module
etderedonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais
pas
si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs
de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de
ligne
sansavoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette
manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le
code
exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou
de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le
module
et
de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"
les uns derrière les autres et séparés par un ";", je ne sais
pas
si
on
peut
faire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs
de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de
ligne
sans
avoir
à refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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 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
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" 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,
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)
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
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" 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
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" a écrit dans le message de
news:Bonjour
J'exporte des données d'une table vers un fichier texte qui
doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte
dans
un
dossier prédéfini, et qui écrit dedans les données de cette
manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le
code
exactmais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou
de
supprimer
une ligne ou en rajouter une, je suis obligé de modifier le
module
etderedonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont
"alignés"les uns derrière les autres et séparés par un ";", je ne sais
pas
si
on
peutfaire quelque chose du style:
champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*
*n'est pas changé par la base et où "champx" est un des champs
de
la
table
cela me permettrais de stocker ce fichier "modele.ini" à
l'extérieur
de
la
base et de pouvoir modifier l'entête, le final ou le nom de
ligne
sansavoirà refaire un MDE
quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?
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" 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 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 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
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
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
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