Enregistrer un CSV sans avertissement et directement dans le même fichier
4 réponses
sebastienk
Bonjour,
Lorsqu'on enregistre un CSV avec Excel (Fichier > Enregistrer), on a
toujours deux =E9tapes:
- enregistrer le CSV sous
- avertissement sur la perte de format
Je souhaite modifier le comportement d'Excel 2000 =E0 l'aide de
PERSO.xls, dans un module de classe avec un Sub de type Private Sub
App_WorkbookBeforeSave, pour qu'Excel enregistre directement dans le
fichier ouvert et sans message d'avertissement.
Lorsqu'on enregistre un CSV avec Excel (Fichier > Enregistrer), on a toujours deux étapes: - enregistrer le CSV sous - avertissement sur la perte de format
Je souhaite modifier le comportement d'Excel 2000 à l'aide de PERSO.xls, dans un module de classe avec un Sub de type Private Sub App_WorkbookBeforeSave, pour qu'Excel enregistre directement dans le fichier ouvert et sans message d'avertissement.
Pouvez-vous m'aider?
Merci, Sébastien
Cette sub et Cette fonction permette d'enregistrer le fichier au format csv
sans faire apparître l'avertissement concerné.
Sub EnregistrerCSV()
Dim NomFic
NomFic = EnregistrerSous(ThisWorkbook.Path)
If NomFic <> False Then
ThisWorkbook.SaveAs Filename:=NomFic, FileFormat:=xlCSV
End If
End Sub
Function EnregistrerSous(Optional Dossier As String = "")
If Dossier <> "" Then
'Positionne le répertoire par défaut
If Not CBool(Len(Dir(Dossier, vbDirectory))) Then
MkDir Dossier
End If
Lorsqu'on enregistre un CSV avec Excel (Fichier > Enregistrer), on a
toujours deux étapes:
- enregistrer le CSV sous
- avertissement sur la perte de format
Je souhaite modifier le comportement d'Excel 2000 à l'aide de
PERSO.xls, dans un module de classe avec un Sub de type Private Sub
App_WorkbookBeforeSave, pour qu'Excel enregistre directement dans le
fichier ouvert et sans message d'avertissement.
Lorsqu'on enregistre un CSV avec Excel (Fichier > Enregistrer), on a toujours deux étapes: - enregistrer le CSV sous - avertissement sur la perte de format
Je souhaite modifier le comportement d'Excel 2000 à l'aide de PERSO.xls, dans un module de classe avec un Sub de type Private Sub App_WorkbookBeforeSave, pour qu'Excel enregistre directement dans le fichier ouvert et sans message d'avertissement.
Pouvez-vous m'aider?
Merci, Sébastien
sebastienk
On 25 avr, 12:26, hasco wrote:
Cette sub et Cette fonction permette d'enregistrer le fichier au format c sv sans faire apparître l'avertissement concerné.
Sub EnregistrerCSV() Dim NomFic
NomFic = EnregistrerSous(ThisWorkbook.Path)
If NomFic <> False Then ThisWorkbook.SaveAs Filename:=NomFic, FileFormat:=xlCSV End If
End Sub
Function EnregistrerSous(Optional Dossier As String = "")
If Dossier <> "" Then 'Positionne le répertoire par défaut If Not CBool(Len(Dir(Dossier, vbDirectory))) Then MkDir Dossier End If
Lorsqu'on enregistre un CSV avec Excel (Fichier > Enregistrer), on a toujours deux étapes: - enregistrer le CSV sous - avertissement sur la perte de format
Je souhaite modifier le comportement d'Excel 2000 à l'aide de PERSO.xls, dans un module de classe avec un Sub de type Private Sub App_WorkbookBeforeSave, pour qu'Excel enregistre directement dans le fichier ouvert et sans message d'avertissement.
Pouvez-vous m'aider?
Merci, Sébastien- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Merci pour ta réponse hasco!
J'ai un problème cependant: je ne veux pas créer un bouton pour enregistrer, mais utiliser directement l'enregistrement d'Excel. C'est pour ça que je veux utiliser la sub App_WorkbookBeforeSave.
Quelques détails:
Dans un module de classe, j'ai:
Public WithEvents App As Application
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
fType = Wb.FileFormat
Cancel = False
If fType = 6 Then Cancel = True Call EnregistrerCSV(Wb) End If
End Sub
Ainsi, je pense y arriver. Le seul souci, c'est que lorsque la sub EnregistrerCSV veut enregistrer le fichier, App_WorkbookBeforeSave se déclenche pour la deuxième fois (donc une deuxième fenêtre Enregist rer sous apparaît). Et rien n'est sauvegardé à la fin! Une idée?
Merci pour ton aide, Sébastien
On 25 avr, 12:26, hasco <h...@discussions.microsoft.com> wrote:
Cette sub et Cette fonction permette d'enregistrer le fichier au format c sv
sans faire apparître l'avertissement concerné.
Sub EnregistrerCSV()
Dim NomFic
NomFic = EnregistrerSous(ThisWorkbook.Path)
If NomFic <> False Then
ThisWorkbook.SaveAs Filename:=NomFic, FileFormat:=xlCSV
End If
End Sub
Function EnregistrerSous(Optional Dossier As String = "")
If Dossier <> "" Then
'Positionne le répertoire par défaut
If Not CBool(Len(Dir(Dossier, vbDirectory))) Then
MkDir Dossier
End If
Lorsqu'on enregistre un CSV avec Excel (Fichier > Enregistrer), on a
toujours deux étapes:
- enregistrer le CSV sous
- avertissement sur la perte de format
Je souhaite modifier le comportement d'Excel 2000 à l'aide de
PERSO.xls, dans un module de classe avec un Sub de type Private Sub
App_WorkbookBeforeSave, pour qu'Excel enregistre directement dans le
fichier ouvert et sans message d'avertissement.
Pouvez-vous m'aider?
Merci,
Sébastien- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Merci pour ta réponse hasco!
J'ai un problème cependant: je ne veux pas créer un bouton pour
enregistrer, mais utiliser directement l'enregistrement d'Excel. C'est
pour ça que je veux utiliser la sub App_WorkbookBeforeSave.
Quelques détails:
Dans un module de classe, j'ai:
Public WithEvents App As Application
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal
SaveAsUI As Boolean, Cancel As Boolean)
fType = Wb.FileFormat
Cancel = False
If fType = 6 Then
Cancel = True
Call EnregistrerCSV(Wb)
End If
End Sub
Ainsi, je pense y arriver. Le seul souci, c'est que lorsque la sub
EnregistrerCSV veut enregistrer le fichier, App_WorkbookBeforeSave se
déclenche pour la deuxième fois (donc une deuxième fenêtre Enregist rer
sous apparaît). Et rien n'est sauvegardé à la fin! Une idée?
Lorsqu'on enregistre un CSV avec Excel (Fichier > Enregistrer), on a toujours deux étapes: - enregistrer le CSV sous - avertissement sur la perte de format
Je souhaite modifier le comportement d'Excel 2000 à l'aide de PERSO.xls, dans un module de classe avec un Sub de type Private Sub App_WorkbookBeforeSave, pour qu'Excel enregistre directement dans le fichier ouvert et sans message d'avertissement.
Pouvez-vous m'aider?
Merci, Sébastien- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Merci pour ta réponse hasco!
J'ai un problème cependant: je ne veux pas créer un bouton pour enregistrer, mais utiliser directement l'enregistrement d'Excel. C'est pour ça que je veux utiliser la sub App_WorkbookBeforeSave.
Quelques détails:
Dans un module de classe, j'ai:
Public WithEvents App As Application
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
fType = Wb.FileFormat
Cancel = False
If fType = 6 Then Cancel = True Call EnregistrerCSV(Wb) End If
End Sub
Ainsi, je pense y arriver. Le seul souci, c'est que lorsque la sub EnregistrerCSV veut enregistrer le fichier, App_WorkbookBeforeSave se déclenche pour la deuxième fois (donc une deuxième fenêtre Enregist rer sous apparaît). Et rien n'est sauvegardé à la fin! Une idée?
Merci pour ton aide, Sébastien
hasco
Une idée?
J'ai déjà essayé ce genre de chose et ne suis arrivé à rien de concluant aussi ai-je laissé tombé.
toutefois peut-être qu'en modifiant le comportement du sous-menu Enregistrer ou Enregistrer sous par l'objet commandBar et la propriét OnAction est controls idoines, dans l'évènement open ou activate du Workbook, tu pourrais lancer ta macro d'enregistrement.
Ne pas oublier de rétablir le menu normal dans WorkbookDeactivate ou beforeclose!
Amicalement Ges
Une idée?
J'ai déjà essayé ce genre de chose et ne suis arrivé à rien de concluant
aussi ai-je laissé tombé.
toutefois peut-être qu'en modifiant le comportement du sous-menu Enregistrer
ou Enregistrer sous par l'objet commandBar et la propriét OnAction est
controls idoines, dans l'évènement open ou activate du Workbook, tu pourrais
lancer ta macro d'enregistrement.
Ne pas oublier de rétablir le menu normal dans WorkbookDeactivate ou
beforeclose!
J'ai déjà essayé ce genre de chose et ne suis arrivé à rien de concluant aussi ai-je laissé tombé.
toutefois peut-être qu'en modifiant le comportement du sous-menu Enregistrer ou Enregistrer sous par l'objet commandBar et la propriét OnAction est controls idoines, dans l'évènement open ou activate du Workbook, tu pourrais lancer ta macro d'enregistrement.
Ne pas oublier de rétablir le menu normal dans WorkbookDeactivate ou beforeclose!
Amicalement Ges
sebastienk
On 26 avr, 15:00, hasco wrote:
Une idée?
J'ai déjà essayé ce genre de chose et ne suis arrivé à rien de concluant aussi ai-je laissé tombé.
toutefois peut-être qu'en modifiant le comportement du sous-menu Enregi strer ou Enregistrer sous par l'objet commandBar et la propriét OnAction est controls idoines, dans l'évènement open ou activate du Workbook, tu p ourrais lancer ta macro d'enregistrement.
Ne pas oublier de rétablir le menu normal dans WorkbookDeactivate ou beforeclose!
Amicalement Ges
J'ai affecté à un bouton "Save" l'enregistrement et ça marche nickel.
Public WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Excel.Workbook) CommandBars("BarrePerso").Controls("Save").OnAction = "Enregistrer" End Sub
If fType = 6 Then Application.DisplayAlerts = False On Error GoTo AnnuleSauvegarde ActiveWorkbook.SaveAs Filename:=fNom, FileFormat:=6 Application.DisplayAlerts = True Else ActiveWorkbook.Save End If
AnnuleSauvegarde:
End Sub
Le type 6 correspond chez moi à un CSV.
On 26 avr, 15:00, hasco <h...@discussions.microsoft.com> wrote:
Une idée?
J'ai déjà essayé ce genre de chose et ne suis arrivé à rien de concluant
aussi ai-je laissé tombé.
toutefois peut-être qu'en modifiant le comportement du sous-menu Enregi strer
ou Enregistrer sous par l'objet commandBar et la propriét OnAction est
controls idoines, dans l'évènement open ou activate du Workbook, tu p ourrais
lancer ta macro d'enregistrement.
Ne pas oublier de rétablir le menu normal dans WorkbookDeactivate ou
beforeclose!
Amicalement
Ges
J'ai affecté à un bouton "Save" l'enregistrement et ça marche nickel.
Public WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Excel.Workbook)
CommandBars("BarrePerso").Controls("Save").OnAction = "Enregistrer"
End Sub
If fType = 6 Then
Application.DisplayAlerts = False
On Error GoTo AnnuleSauvegarde
ActiveWorkbook.SaveAs Filename:=fNom, FileFormat:=6
Application.DisplayAlerts = True
Else
ActiveWorkbook.Save
End If
J'ai déjà essayé ce genre de chose et ne suis arrivé à rien de concluant aussi ai-je laissé tombé.
toutefois peut-être qu'en modifiant le comportement du sous-menu Enregi strer ou Enregistrer sous par l'objet commandBar et la propriét OnAction est controls idoines, dans l'évènement open ou activate du Workbook, tu p ourrais lancer ta macro d'enregistrement.
Ne pas oublier de rétablir le menu normal dans WorkbookDeactivate ou beforeclose!
Amicalement Ges
J'ai affecté à un bouton "Save" l'enregistrement et ça marche nickel.
Public WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Excel.Workbook) CommandBars("BarrePerso").Controls("Save").OnAction = "Enregistrer" End Sub
If fType = 6 Then Application.DisplayAlerts = False On Error GoTo AnnuleSauvegarde ActiveWorkbook.SaveAs Filename:=fNom, FileFormat:=6 Application.DisplayAlerts = True Else ActiveWorkbook.Save End If