J'utilise un fichier Excel (5 feuilles) pour faire des factures.
Une de ces feuilles (la facture) est sauvegardée automatiquement dans un
dossier spécifique.
-----1er problème: Chaque sauvegarde pèse environ 800 Ko. (Pour 1 feuille
c'est beaucoup).
Le code VBA qui fait ce travail, me permet également de récupérer une
facture sauvegardée.
-----2ème problème: Je ne peux rien modifier sur une facture rappelée. Très
génant car si je me rend compte d'une erreur
juste après la sauvegarde, je suis obligé de refaire une facture et
d'aller supprimer l'autre.
J'ai cru voir un jour, un système de sauvegarde de facture, disons sous
forme de tableau ou texte, je ne sais plus. (Donc très léger).
Mais je ne trouve rien à ce sujet.
Tu ferais sans doute mieux d'initier un ou plusieurs nouveaux fils, puisque les questions posées dans celui-ci semblent avoir trouvé une solution qui te convient.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir le Forum,
Frédéric! Félicitations et un Grand Merci pour le travail accompli. Tes 2 macros sont extras. Elles ont quelque peu modifié l'ancien code. J'ai donc toujours besoin d'aide. Dois-je poursuivre sur ce fil, ou bien créer un autre post ? Merci encore. Jean-Pierre
"Frédéric Sigonneau" a écrit dans le message de news:
Rerere,
Nom_Client n'est pas renseigné dans la macro ImportDatas, NumFact non plus. Du
coup la variable FichTxt ne contient pas une séquence chemin/nom de fichier
valide, et l'instruction Open FichTxt provoque une erreur.
Un moyen simple de récupérer ces infos est d'aller les chercher avec la boite de
dialogue Ouvrir d'Excel, qui renvoie le nom et chemin complet du fichier sélectionné sans l'ouvrir réellement. Par exemple :
Sub ImportDatas() Dim FichTxt, S, Data ChDrive "C" ChDir "C:Mes Factures" FichTxt = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt") If FichTxt = False Then Exit Sub Open FichTxt For Input As 1 While Not EOF(1) Line Input #1, S Data = Split(S, "=")(1) If IsDate(Split(S, "=")(1)) Then Data = CDate(Data) Range(Split(S, "=")(0)).Value = Data Wend Close End Sub 'fs
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Re.........
Ta macro retouchée fonctionne parfaitement. Création des rep, sauvegarde des
.txt, écrasement d'un fichier existant avec prise en compte des modifs. Poids moyen d'une facture : 8ko C'est le pied. Comme tu dois t'en douter, Frédéric, j'ai un souci avec la récupération.
Message d'erreur 53. Trouve pas le fichier. Le débuggeur surligne "Open FichTxt For Input As 1"
Sub ImportDatas() Dim Nom_Client$, NumFact$, Rangement$ Dim FichTxt, S, Data Rangement = "C:Mes factures" & Nom_Client & "" FichTxt = Rangement & NumFact & ".txt" Open FichTxt For Input As 1 While Not EOF(1) Line Input #1, S Data = Split(S, "=")(1) If IsDate(Split(S, "=")(1)) Then Data = CDate(Data) Range(Split(S, "=")(0)).Value = Data Wend Close End Sub 'fs
Merci pour tes explications. Ca m'aide beaucoup.
Bonne nuit Jipé
"Frédéric Sigonneau" a écrit dans le message
de news:
Re-re,
Je veux bien une explication pour çà: Open FichTxt For Output As 1
-> on ouvre (ça le crée s'il n'existe pas, ça écrase un existant) FichTxt
pour
écrire dedans
For Each cell In Plage
-> on passe en revue toutes les cellules stockées dans la variable Plage
Print #1, cell.Address & "=" & cell.Text
on écrit dans le fichier texte l'adresse de chaque cellule et son contenu.
Ça
donne des entrées du style : $G$9=zaza
Pour que les .txt soient créés dans des répertoires spécifiques au nom
des
clients dans C:Mes factures, puis-je utiliser le code ci-dessous? J'ai essayé d'inclure ton code, au code que j'utilisais avant ton aide.
Pas
évident.
Essaye plutôt avec ces modifs :
'====================== > > > > Sub ExportDatas() Dim Nom_Client$, NumFact$, Rangement$ Dim Plage As Range, cell As Range, FichTxt$
'attention : ce test (comme le précedent) 'suppose que C:Mes Factures existe If Dir(Rangement, vbDirectory) = "" Then MkDir Rangement
'** Set Plage = Union(Range("g9"), Range("b16"), Range("c18:c23"), _ Range("a27:h55"), Range("g58:g60"), _ Range("f15:f18"), Range("f21")) '**(tu peux aussi nommer la plage des données à sauvegarder) Open FichTxt For Output As 1 For Each cell In Plage Print #1, cell.Address & "=" & cell.Text Next Close End Sub '====================== > > > > Ça devrait fonctionner comme tu le souhaites pour la sauvegarde. Reste à
tester
la récupération.
Merci pour ton aide Frédéric. (Je pense que tu es le seul à suivre ce
fil).
Pas sûr :)
Jipé
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
Tu ferais sans doute mieux d'initier un ou plusieurs nouveaux fils, puisque les
questions posées dans celui-ci semblent avoir trouvé une solution qui te
convient.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir le Forum,
Frédéric! Félicitations et un Grand Merci pour le travail accompli.
Tes 2 macros sont extras.
Elles ont quelque peu modifié l'ancien code. J'ai donc toujours besoin
d'aide.
Dois-je poursuivre sur ce fil, ou bien créer un autre post ?
Merci encore.
Jean-Pierre
"Frédéric Sigonneau" <frederic.sigonneau@wanadoo.fr> a écrit dans le message
de news:402AC7ED.13EAC160@wanadoo.fr...
Rerere,
Nom_Client n'est pas renseigné dans la macro ImportDatas, NumFact non
plus. Du
coup la variable FichTxt ne contient pas une séquence chemin/nom de
fichier
valide, et l'instruction Open FichTxt provoque une erreur.
Un moyen simple de récupérer ces infos est d'aller les chercher avec la
boite de
dialogue Ouvrir d'Excel, qui renvoie le nom et chemin complet du fichier
sélectionné sans l'ouvrir réellement. Par exemple :
Sub ImportDatas()
Dim FichTxt, S, Data
ChDrive "C"
ChDir "C:Mes Factures"
FichTxt = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt")
If FichTxt = False Then Exit Sub
Open FichTxt For Input As 1
While Not EOF(1)
Line Input #1, S
Data = Split(S, "=")(1)
If IsDate(Split(S, "=")(1)) Then Data = CDate(Data)
Range(Split(S, "=")(0)).Value = Data
Wend
Close
End Sub 'fs
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Re.........
Ta macro retouchée fonctionne parfaitement. Création des rep, sauvegarde
des
.txt,
écrasement d'un fichier existant avec prise en compte des modifs.
Poids moyen d'une facture : 8ko C'est le pied.
Comme tu dois t'en douter, Frédéric, j'ai un souci avec la récupération.
Message d'erreur 53. Trouve pas le fichier.
Le débuggeur surligne "Open FichTxt For Input As 1"
Sub ImportDatas()
Dim Nom_Client$, NumFact$, Rangement$
Dim FichTxt, S, Data
Rangement = "C:Mes factures" & Nom_Client & ""
FichTxt = Rangement & NumFact & ".txt"
Open FichTxt For Input As 1
While Not EOF(1)
Line Input #1, S
Data = Split(S, "=")(1)
If IsDate(Split(S, "=")(1)) Then Data = CDate(Data)
Range(Split(S, "=")(0)).Value = Data
Wend
Close
End Sub 'fs
Merci pour tes explications. Ca m'aide beaucoup.
Bonne nuit Jipé
"Frédéric Sigonneau" <frederic.sigonneau@wanadoo.fr> a écrit dans le
message
de news:402A90EF.FB7A4258@wanadoo.fr...
Re-re,
Je veux bien une explication pour çà:
Open FichTxt For Output As 1
-> on ouvre (ça le crée s'il n'existe pas, ça écrase un existant)
FichTxt
pour
écrire dedans
For Each cell In Plage
-> on passe en revue toutes les cellules stockées dans la variable
Plage
Print #1, cell.Address & "=" & cell.Text
on écrit dans le fichier texte l'adresse de chaque cellule et son
contenu.
Ça
donne des entrées du style :
$G$9=zaza
Pour que les .txt soient créés dans des répertoires spécifiques au
nom
des
clients dans C:Mes factures,
puis-je utiliser le code ci-dessous?
J'ai essayé d'inclure ton code, au code que j'utilisais avant ton
aide.
Pas
évident.
Essaye plutôt avec ces modifs :
'====================== > > > > Sub ExportDatas()
Dim Nom_Client$, NumFact$, Rangement$
Dim Plage As Range, cell As Range, FichTxt$
'attention : ce test (comme le précedent)
'suppose que C:Mes Factures existe
If Dir(Rangement, vbDirectory) = "" Then MkDir Rangement
'**
Set Plage = Union(Range("g9"), Range("b16"), Range("c18:c23"), _
Range("a27:h55"), Range("g58:g60"), _
Range("f15:f18"), Range("f21"))
'**(tu peux aussi nommer la plage des données à sauvegarder)
Open FichTxt For Output As 1
For Each cell In Plage
Print #1, cell.Address & "=" & cell.Text
Next
Close
End Sub
'====================== > > > >
Ça devrait fonctionner comme tu le souhaites pour la sauvegarde. Reste
à
tester
la récupération.
Merci pour ton aide Frédéric. (Je pense que tu es le seul à suivre
ce
fil).
Pas sûr :)
Jipé
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Tu ferais sans doute mieux d'initier un ou plusieurs nouveaux fils, puisque les questions posées dans celui-ci semblent avoir trouvé une solution qui te convient.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir le Forum,
Frédéric! Félicitations et un Grand Merci pour le travail accompli. Tes 2 macros sont extras. Elles ont quelque peu modifié l'ancien code. J'ai donc toujours besoin d'aide. Dois-je poursuivre sur ce fil, ou bien créer un autre post ? Merci encore. Jean-Pierre
"Frédéric Sigonneau" a écrit dans le message de news:
Rerere,
Nom_Client n'est pas renseigné dans la macro ImportDatas, NumFact non plus. Du
coup la variable FichTxt ne contient pas une séquence chemin/nom de fichier
valide, et l'instruction Open FichTxt provoque une erreur.
Un moyen simple de récupérer ces infos est d'aller les chercher avec la boite de
dialogue Ouvrir d'Excel, qui renvoie le nom et chemin complet du fichier sélectionné sans l'ouvrir réellement. Par exemple :
Sub ImportDatas() Dim FichTxt, S, Data ChDrive "C" ChDir "C:Mes Factures" FichTxt = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt") If FichTxt = False Then Exit Sub Open FichTxt For Input As 1 While Not EOF(1) Line Input #1, S Data = Split(S, "=")(1) If IsDate(Split(S, "=")(1)) Then Data = CDate(Data) Range(Split(S, "=")(0)).Value = Data Wend Close End Sub 'fs
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Re.........
Ta macro retouchée fonctionne parfaitement. Création des rep, sauvegarde des
.txt, écrasement d'un fichier existant avec prise en compte des modifs. Poids moyen d'une facture : 8ko C'est le pied. Comme tu dois t'en douter, Frédéric, j'ai un souci avec la récupération.
Message d'erreur 53. Trouve pas le fichier. Le débuggeur surligne "Open FichTxt For Input As 1"
Sub ImportDatas() Dim Nom_Client$, NumFact$, Rangement$ Dim FichTxt, S, Data Rangement = "C:Mes factures" & Nom_Client & "" FichTxt = Rangement & NumFact & ".txt" Open FichTxt For Input As 1 While Not EOF(1) Line Input #1, S Data = Split(S, "=")(1) If IsDate(Split(S, "=")(1)) Then Data = CDate(Data) Range(Split(S, "=")(0)).Value = Data Wend Close End Sub 'fs
Merci pour tes explications. Ca m'aide beaucoup.
Bonne nuit Jipé
"Frédéric Sigonneau" a écrit dans le message
de news:
Re-re,
Je veux bien une explication pour çà: Open FichTxt For Output As 1
-> on ouvre (ça le crée s'il n'existe pas, ça écrase un existant) FichTxt
pour
écrire dedans
For Each cell In Plage
-> on passe en revue toutes les cellules stockées dans la variable Plage
Print #1, cell.Address & "=" & cell.Text
on écrit dans le fichier texte l'adresse de chaque cellule et son contenu.
Ça
donne des entrées du style : $G$9=zaza
Pour que les .txt soient créés dans des répertoires spécifiques au nom
des
clients dans C:Mes factures, puis-je utiliser le code ci-dessous? J'ai essayé d'inclure ton code, au code que j'utilisais avant ton aide.
Pas
évident.
Essaye plutôt avec ces modifs :
'====================== > > > > Sub ExportDatas() Dim Nom_Client$, NumFact$, Rangement$ Dim Plage As Range, cell As Range, FichTxt$
'attention : ce test (comme le précedent) 'suppose que C:Mes Factures existe If Dir(Rangement, vbDirectory) = "" Then MkDir Rangement
'** Set Plage = Union(Range("g9"), Range("b16"), Range("c18:c23"), _ Range("a27:h55"), Range("g58:g60"), _ Range("f15:f18"), Range("f21")) '**(tu peux aussi nommer la plage des données à sauvegarder) Open FichTxt For Output As 1 For Each cell In Plage Print #1, cell.Address & "=" & cell.Text Next Close End Sub '====================== > > > > Ça devrait fonctionner comme tu le souhaites pour la sauvegarde. Reste à
tester
la récupération.
Merci pour ton aide Frédéric. (Je pense que tu es le seul à suivre ce
fil).
Pas sûr :)
Jipé
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !