A voir également:
- Écraser un fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier host - Guide
- Ouvrir un fichier .bin - Guide
6 réponses
Raymond PENTIER
Messages postés
58720
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
10 novembre 2024
17 234
1 avril 2021 à 17:38
1 avril 2021 à 17:38
Tu as essayé FALSE au lieu de TRUE (juste avant End Sub) ?
Bonjour,
On ne peut pas imbriquer une procédure dans une autre :
Il faut les écrire séparément. Puis faire un appel de l'une dans l'autre !
Par exemple :
On ne peut pas imbriquer une procédure dans une autre :
Sub SauvAgenda() Private Sub Workbook_BeforeClose(Cancel As Boolean) .... End Sub End Sub
Il faut les écrire séparément. Puis faire un appel de l'une dans l'autre !
Par exemple :
Private Sub Workbook_BeforeClose(Cancel As Boolean) .... Call SauvAgenda() End Sub Sub SauvAgenda() ... End Sub
Merci infiniment...
Voici ma traduction de votre indication :
A l’exécution, il n'y a pas de changement, la question demeure "le fichier existe déjà..."
Ai-je mal placé ou mal écrit la commande application.displayalert = ?
Merci de votre aide précieuse.
Cdlt JG
Voici ma traduction de votre indication :
Private Sub Workbook_BeforeClose(Cancel As Boolean) Call SauvAgenda End Sub Sub SauvAgenda() Application.displayalert = False ' ' SauvAgenda Macro ' ChDir "F:\Jean\Banque" ActiveWorkbook.SaveAs Filename:="F:\Jean\Banque\Agenda.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False Application.displayalert = True End Sub
A l’exécution, il n'y a pas de changement, la question demeure "le fichier existe déjà..."
Ai-je mal placé ou mal écrit la commande application.displayalert = ?
Merci de votre aide précieuse.
Cdlt JG
ALS35
Messages postés
1033
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
9 janvier 2024
139
1 avril 2021 à 18:54
1 avril 2021 à 18:54
Bonjour à tous,
C'est Application.DisplayAlerts (avec un "s" à la fin).
Cordialement
C'est Application.DisplayAlerts (avec un "s" à la fin).
Cordialement
JeanVoit
>
ALS35
Messages postés
1033
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
9 janvier 2024
1 avril 2021 à 19:06
1 avril 2021 à 19:06
Bonsoir ALS35,
Merci de cette information que j'ai appliqué immédiatement sans changer la structure ci dessus.
A l’exécution, il n'y a pas de changement, la question demeure "le fichier existe déjà..."
Désolé, je ne suis pas assez initié pour identifier le problème.
Merci de votre aide!!
Cdlt JG
Merci de cette information que j'ai appliqué immédiatement sans changer la structure ci dessus.
A l’exécution, il n'y a pas de changement, la question demeure "le fichier existe déjà..."
Désolé, je ne suis pas assez initié pour identifier le problème.
Merci de votre aide!!
Cdlt JG
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié le 2 avril 2021 à 11:39
Modifié le 2 avril 2021 à 11:39
Bonjour,
supprime-le avant s'il existe :
eric
supprime-le avant s'il existe :
If Dir("F:\Jean\Banque\Agenda.xlsm") <> "" Then Kill "F:\Jean\Banque\Agenda.xlsm"
eric
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
>
RoMa.31
Modifié le 1 avril 2021 à 22:36
Modifié le 1 avril 2021 à 22:36
De mémoire, ça c'est pour résoudre les conflits dans les classeurs partagés (sur réseau, à l'ancienne). Lorsqu'il y a une collision entre 2 modifs
eric
eric
Bonjour,
Merci eriiic et RoMa 31 de votre aide précieuse.
Voici l script:
Pour autant il affiche toujours la demande " le fichier existe déjà..."
Ai-je fait une erreur dans le code?
Merci encore!!
Cdlt JeanVoit
Merci eriiic et RoMa 31 de votre aide précieuse.
Voici l script:
Sub SauvAgenda() ' ' SauvAgenda Macro ' If Dir("F:\Jean\Banque\Agenda.xlsm") <> "" Then Kill "F:\Jean\Banque\Agenda.xlsm" ChDir "F:\Jean\Banque" ActiveWorkbook.SaveAs Filename:="F:\Jean\Banque\Agenda.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub
Pour autant il affiche toujours la demande " le fichier existe déjà..."
Ai-je fait une erreur dans le code?
Merci encore!!
Cdlt JeanVoit
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
Modifié le 2 avril 2021 à 11:33
Modifié le 2 avril 2021 à 11:33
C'est étonnant puisque le fichier d'origine est effacé s'il existe !
Il n'y a pas un problème avec Agenda.xlsm ? On peut l'effacer de façon classique avec l'explorateur de Windows ?
Manifestement la macro est appelée depuis le fichier Agenda.xslm (ActiveWorkbook ?) auquel cas, il n'a pas envie de se suicider !
Dans ce cas, au lieu .SaveAs... il faudrait simplement utiliser .Save sauf la première fois où il faut donner un nom au fichier :
Ca pourrait alors donner quelque chose du genre :
On remet éventuellement les DisplayAlerts
PS : penser à utiliser les balises pour poster du code. Exemple pour le VBA :
Il n'y a pas un problème avec Agenda.xlsm ? On peut l'effacer de façon classique avec l'explorateur de Windows ?
Manifestement la macro est appelée depuis le fichier Agenda.xslm (ActiveWorkbook ?) auquel cas, il n'a pas envie de se suicider !
Dans ce cas, au lieu .SaveAs... il faudrait simplement utiliser .Save sauf la première fois où il faut donner un nom au fichier :
Ca pourrait alors donner quelque chose du genre :
Sub SauvAgenda() ' ' SauvAgenda Macro ' Application.DisplayAlerts=false ChDir "F:\Jean\Banque" If Dir("F:\Jean\Banque\Agenda.xlsm") <> "" Then 'Existe déjà ActiveWorkbook.Save else ' Le fichier n'existe pas encore ActiveWorkbook.SaveAs Filename:="F:\Jean\Banque\Agenda.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False endif Application.DisplayAlerts=true
On remet éventuellement les DisplayAlerts
PS : penser à utiliser les balises pour poster du code. Exemple pour le VBA :
Merci!! Roma_31
Sub SauvAgenda()
'
' SauvAgenda Macro
'
Application.DisplayAlerts = False
ChDir "F:\Jean\Banque"
If Dir("F:\Jean\Banque\Agenda.xlsm") <> "" Then 'Exite déjà
ActiveWorkbook.Save
Else ' Le fichier n'existe pas déjà
ActiveWorkbook.SaveAs Filename:="F:\Jean\Banque\Agenda.xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
Application.DisplayAlerts = True
End Sub
... Mais la question demeure.
Le ficher existe dans "banque", il n'est peut-être pas utile de faire une condition.
C'est ma sauvegarde supplémentaire dans le cas ou le fichier ouvert, un surf sur internet vienne le détériorer comme cela vient d'arriver...
Je comprends le code et ne comprends pas pourquoi cela ne fonctionne pas.
Peut être faut-il simplement décocher une option dans l'enregistrement, type "confirmer avant d'écraser" coche oui/non.
Je suis un peu naïf peut-être
PS: Je fait un copier/collé du code dans le module directement, sans utiliser les balises...
Cdlt
Jean
Sub SauvAgenda()
'
' SauvAgenda Macro
'
Application.DisplayAlerts = False
ChDir "F:\Jean\Banque"
If Dir("F:\Jean\Banque\Agenda.xlsm") <> "" Then 'Exite déjà
ActiveWorkbook.Save
Else ' Le fichier n'existe pas déjà
ActiveWorkbook.SaveAs Filename:="F:\Jean\Banque\Agenda.xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
Application.DisplayAlerts = True
End Sub
... Mais la question demeure.
Le ficher existe dans "banque", il n'est peut-être pas utile de faire une condition.
C'est ma sauvegarde supplémentaire dans le cas ou le fichier ouvert, un surf sur internet vienne le détériorer comme cela vient d'arriver...
Je comprends le code et ne comprends pas pourquoi cela ne fonctionne pas.
Peut être faut-il simplement décocher une option dans l'enregistrement, type "confirmer avant d'écraser" coche oui/non.
Je suis un peu naïf peut-être
PS: Je fait un copier/collé du code dans le module directement, sans utiliser les balises...
Cdlt
Jean
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
2 avril 2021 à 11:41
2 avril 2021 à 11:41
Bonjour,
s'il ne s'agit pas de lui-même et que c'est bien SaveAs qu'il faut, il faut peut-être un petit délai pour que l'effacement se fasse.
Teste en insérant une tempo de 1s pour voir :
Si ça fonctionne on fera autrement pour pouvoir la réduire
eric
s'il ne s'agit pas de lui-même et que c'est bien SaveAs qu'il faut, il faut peut-être un petit délai pour que l'effacement se fasse.
Teste en insérant une tempo de 1s pour voir :
Application.Wait DateAdd("s", 1, Now())
Si ça fonctionne on fera autrement pour pouvoir la réduire
eric
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié le 2 avril 2021 à 12:09
Modifié le 2 avril 2021 à 12:09
Si c'est pour un backup, tu aurais sans doute avantage d'utiliser un cloud gratuit comme google drive.
Ta sauvegarde se fera automatiquement (si tu es connecté bien sûr), et tu l'auras toujours même en cas de perte, vol, incendie etc, en plus de pouvoir le consulter de n'importe où
eric
Ta sauvegarde se fera automatiquement (si tu es connecté bien sûr), et tu l'auras toujours même en cas de perte, vol, incendie etc, en plus de pouvoir le consulter de n'importe où
eric
Bonjour et MERCI!!
Je viens de faire le test mais en vain.
là je pars en déplacement jusqu' à 17h donc je reprends après.
Si je démarre par:
ChDir "F:\Jean\Banque"
Est-ce utile d'indiquer le chemin dans la condition?
If Dir("F:\Jean\Banque\Agenda.xlsm")...
Pourrait-on écrire :
if Dir("Agendat.xlsm") <> "" Then
C'est juste une question pour que j'apprenne... ;)
cdlt Jean
Je viens de faire le test mais en vain.
là je pars en déplacement jusqu' à 17h donc je reprends après.
Si je démarre par:
ChDir "F:\Jean\Banque"
Est-ce utile d'indiquer le chemin dans la condition?
If Dir("F:\Jean\Banque\Agenda.xlsm")...
Pourrait-on écrire :
if Dir("Agendat.xlsm") <> "" Then
C'est juste une question pour que j'apprenne... ;)
cdlt Jean
JeanVoit
>
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
2 avril 2021 à 12:23
2 avril 2021 à 12:23
Merci Eric pour cette idée.
C'est une excellente formule mais, pour ma part, je ne souhaite pas trop utiliser ces services donc le comportement intrusif me derrange au plus haut point...
Cdlt
JG
C'est une excellente formule mais, pour ma part, je ne souhaite pas trop utiliser ces services donc le comportement intrusif me derrange au plus haut point...
Cdlt
JG
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
>
JeanVoit
2 avril 2021 à 12:54
2 avril 2021 à 12:54
Tu peux, mais il faut que tu sois sûr à 100% que le drive et le répertoire actif soient les bons.
Dans l'absolu ChDir n'est pas suffisant, il faudrait aussi ChDrive si besoin.
Si tu restes en local tu as un petit utilitaire, bien fait je trouve, qui crée une copie à chaque enregistrement d'un fichier que tu as décidé de superviser (ça peut être un répertoire aussi).
Pas mal de paramètres dont le nombre d'historique maxi.
Je le préfère à la sauvegarde de windows où on ne maîtrise rien sur ce qu'il fait
La version gratuite est largement suffisante : https://www.filehamster.com/
eric
Dans l'absolu ChDir n'est pas suffisant, il faudrait aussi ChDrive si besoin.
Si tu restes en local tu as un petit utilitaire, bien fait je trouve, qui crée une copie à chaque enregistrement d'un fichier que tu as décidé de superviser (ça peut être un répertoire aussi).
Pas mal de paramètres dont le nombre d'historique maxi.
Je le préfère à la sauvegarde de windows où on ne maîtrise rien sur ce qu'il fait
La version gratuite est largement suffisante : https://www.filehamster.com/
eric
JeanVoit
>
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
5 avril 2021 à 16:02
5 avril 2021 à 16:02
Bonjour Eric,
Merci pour ces infos.
Je ne souhaite pas charger une appli pour une chose aussi simple.
J'ai compris que la meilleure solution était de supprimer le fichier existant avant :
"F:\" est un HD externe.
Ce code ne fonctionne pas.
Où est l'erreur?
Kill "F:\Jean\Banque\Agenda.xlsm"
Application.Wait DateAdd("s", 1, Now())
Le fichier ne s'efface pas :((
Cdlt
Jean
Merci pour ces infos.
Je ne souhaite pas charger une appli pour une chose aussi simple.
J'ai compris que la meilleure solution était de supprimer le fichier existant avant :
"F:\" est un HD externe.
Ce code ne fonctionne pas.
Où est l'erreur?
Kill "F:\Jean\Banque\Agenda.xlsm"
Application.Wait DateAdd("s", 1, Now())
Le fichier ne s'efface pas :((
Cdlt
Jean
1 avril 2021 à 18:51
Si je fais l'inverse, ne vais-je pas mettre vrai avant faux?
Merci!
Cdlt JG