Forcer à oui la question de confirmation pour l' enregistrement
Résolu/Fermé
Ramon1
Messages postés
334
Date d'inscription
samedi 1 octobre 2005
Statut
Membre
Dernière intervention
16 février 2025
-
12 févr. 2021 à 15:03
Ramon1 Messages postés 334 Date d'inscription samedi 1 octobre 2005 Statut Membre Dernière intervention 16 février 2025 - 14 févr. 2021 à 16:54
Ramon1 Messages postés 334 Date d'inscription samedi 1 octobre 2005 Statut Membre Dernière intervention 16 février 2025 - 14 févr. 2021 à 16:54
A voir également:
- Forcer à oui la question de confirmation pour l' enregistrement
- Forcer demarrage pc - Guide
- Forcer la reinitialisation pc - Guide
- Forcer la suppression d'un fichier - Guide
- Forcer à quitter - Guide
- Confirmation de lecture whatsapp - Guide
6 réponses
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
Ambassadeur
1 568
12 févr. 2021 à 19:52
12 févr. 2021 à 19:52
bonjour,
à ta place, j'essaierais plutôt d'utiliser ConflictResolution.
à ta place, j'essaierais plutôt d'utiliser ConflictResolution.
Utilisateur anonyme
Modifié le 12 févr. 2021 à 20:19
Modifié le 12 févr. 2021 à 20:19
Bonjour,
Pour compléter la remarque de yg_be qui devrait résoudre le problème (indiquer le chemin complet plutôt que ChDir, il faut noter que cette commande fonctionne comme sous DOS : L’instruction ChDir modifie le répertoire ou le dossier par défaut, mais ne modifie pas le lecteur par défaut. Une autre instruction, ChDrive, modifie le lecteur par défaut.
Voir : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/chdir-statement
Donc pour faire court, il faudrait faire chdrive "E" en plus du chdir...
L'une des 2 solutions de yg_be est donc plus "élégante" pour résoudre le problème.
Pour compléter la remarque de yg_be qui devrait résoudre le problème (indiquer le chemin complet plutôt que ChDir, il faut noter que cette commande fonctionne comme sous DOS : L’instruction ChDir modifie le répertoire ou le dossier par défaut, mais ne modifie pas le lecteur par défaut. Une autre instruction, ChDrive, modifie le lecteur par défaut.
Voir : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/chdir-statement
Donc pour faire court, il faudrait faire chdrive "E" en plus du chdir...
L'une des 2 solutions de yg_be est donc plus "élégante" pour résoudre le problème.
Ramon1
Messages postés
334
Date d'inscription
samedi 1 octobre 2005
Statut
Membre
Dernière intervention
16 février 2025
12 févr. 2021 à 23:38
12 févr. 2021 à 23:38
Merci à tous les deux pour vos réponses,
Mais je suis désolé, mais vous ne m'aidez pas beaucoup, je vous rappelle que le code n'est pas de moi mais celui généré par l'enregistreur.
Je ne suis donc pas sûr de comprendre vos explications, et vous ne me dîtes pas pourquoi l'enregistrement se fait bien pour le lecteur C:\ et pas pour le lecteur E:\
Si je comprend bien je devrais regrouper le chemin en une seule ligne comme indiqué par yg_be !
Je ne comprends pas l'utilisation de ConflictResolution.
S'il vous plait, pourriez vous être plus explicite et plus clair pour un débutant
Milles excuses, j'ai fait un test avant l'envoi et il semblerait ben que cela fonctionne...
Voila le code modifié :
Mais je suis désolé, mais vous ne m'aidez pas beaucoup, je vous rappelle que le code n'est pas de moi mais celui généré par l'enregistreur.
Je ne suis donc pas sûr de comprendre vos explications, et vous ne me dîtes pas pourquoi l'enregistrement se fait bien pour le lecteur C:\ et pas pour le lecteur E:\
Si je comprend bien je devrais regrouper le chemin en une seule ligne comme indiqué par yg_be !
Je ne comprends pas l'utilisation de ConflictResolution.
S'il vous plait, pourriez vous être plus explicite et plus clair pour un débutant
Milles excuses, j'ai fait un test avant l'envoi et il semblerait ben que cela fonctionne...
Voila le code modifié :
Sub Enregist_C_et_E() ' ' Enregist_C_et_E Macro Sheets("Compta").Select Range("A3").Select Sheets("Echéance").Select ActiveSheet.Unprotect Password:="1447" Range("A1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 13434879 .TintAndShade = 0 .PatternTintAndShade = 0 End With ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="1447" Sheets("Compta").Select Range("A4").Select Range("A4").End(xlDown).Offset(1, 0).Select ActiveWorkbook.Saved = True ChDir "C:\temp" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="Compta_Raymond.xlsm" ' Ecrasement fichier existant.xls' Application.DisplayAlerts = True 'Remettre absolument ensuite 'ChDir "E:\A_Perso_10.09.19\Banque\Compta" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="E:\A_Perso_10.09.19\Banque\Compta\Compta_Raymond.xlsm" 'ActiveWorkbook.SaveAs Filename:="Compta_Raymond.xlsm" ' Ecrasement fichier existant.xls' Application.DisplayAlerts = True 'Remettre absolument ensuite Application.Quit End Sub
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
13 févr. 2021 à 10:47
13 févr. 2021 à 10:47
un exemple d'utilisation de conflictresolution:
cela me semble préférable à la manipulation de Application.DisplayAlerts.
ActiveWorkbook.SaveAs _ Filename:="C:\temp\Compta_Raymond.xlsm", _ ConflictResolution:=xlLocalSessionChanges
cela me semble préférable à la manipulation de Application.DisplayAlerts.
Utilisateur anonyme
Modifié le 13 févr. 2021 à 07:48
Modifié le 13 févr. 2021 à 07:48
Bonjour,
Ca fonctionne donc maintenant parce que l'enregistrement sur "E" indique explicitement le chemin complet vers le fichier. Il n'y a pas d'alerte puisque la ligne "Application.DisplayAlerts = False" désactive la boite de dialogue le temps de l'enregistrement (on remet à true après).
Pourquoi ça ne marchait pas avant ? Parce que par défaut, on est sur le disque "C". quand on fait ChDir "E:\A_Perso_10.09.19\Banque\Compta" on ne change pas de disque ET en réalité, on reste sur "C". donc en faisant ensuite ActiveWorkbook.SaveAs Filename:="Compta_Raymond.xlsm", ça bogue !
Pour mieux comprendre, faites un test dans une console dos et tapez ce qui est en gras ci-dessous avant de valider avec Entrée:
1. chdir -> ChDir sans paramètre affiche le nom du répertoire en cours (dir affiche en plus la liste des fichiers)
2. ChDir "E:\A_Perso_10.09.19\Banque\Compta" -> Rien ne semble se passer
3. chdir -> affiche la même chose qu'en 1
4. E: -> vous amène dans le répertoire tapé en 2 (soit ChDrive "E" en VBA)
Donc dans votre programme c'est comme si vous étiez dans le batiment C et que vous vous contentier de regarder vers le batiment E en face. Pour aller mettre une lettre dans l'immeuble E; il vous faut descendre et traverser la rue ! D'ou la commande ChDrive que j'indiquais.
Il aurait donc fallut écrire dans votre programme un ChDrive en plus:
La solution de yg_be évite de charger de disque sans arrêt et d'envoyer le fichier au bon endroit sans devoir traverser la rue à chaque fois : de la téléportation en quelque sorte !
PS ConflictResolution. permettrait de remplacer les displayAlerts qu'on place à false puis true mais sans modifier votre saveAs, ça n'aurait rien changé au problème de fond pour l'enregistrement en E.
Ca fonctionne donc maintenant parce que l'enregistrement sur "E" indique explicitement le chemin complet vers le fichier. Il n'y a pas d'alerte puisque la ligne "Application.DisplayAlerts = False" désactive la boite de dialogue le temps de l'enregistrement (on remet à true après).
Pourquoi ça ne marchait pas avant ? Parce que par défaut, on est sur le disque "C". quand on fait ChDir "E:\A_Perso_10.09.19\Banque\Compta" on ne change pas de disque ET en réalité, on reste sur "C". donc en faisant ensuite ActiveWorkbook.SaveAs Filename:="Compta_Raymond.xlsm", ça bogue !
Pour mieux comprendre, faites un test dans une console dos et tapez ce qui est en gras ci-dessous avant de valider avec Entrée:
1. chdir -> ChDir sans paramètre affiche le nom du répertoire en cours (dir affiche en plus la liste des fichiers)
2. ChDir "E:\A_Perso_10.09.19\Banque\Compta" -> Rien ne semble se passer
3. chdir -> affiche la même chose qu'en 1
4. E: -> vous amène dans le répertoire tapé en 2 (soit ChDrive "E" en VBA)
Donc dans votre programme c'est comme si vous étiez dans le batiment C et que vous vous contentier de regarder vers le batiment E en face. Pour aller mettre une lettre dans l'immeuble E; il vous faut descendre et traverser la rue ! D'ou la commande ChDrive que j'indiquais.
Il aurait donc fallut écrire dans votre programme un ChDrive en plus:
ChDir "E:\A_Perso_10.09.19\Banque\Compta" ChDrive "E" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="Compta_Raymond.xlsm" ' Ecrasement fichier existant.xls' Application.DisplayAlerts = True 'Remettre absolument ensuite
La solution de yg_be évite de charger de disque sans arrêt et d'envoyer le fichier au bon endroit sans devoir traverser la rue à chaque fois : de la téléportation en quelque sorte !
PS ConflictResolution. permettrait de remplacer les displayAlerts qu'on place à false puis true mais sans modifier votre saveAs, ça n'aurait rien changé au problème de fond pour l'enregistrement en E.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ramon1
Messages postés
334
Date d'inscription
samedi 1 octobre 2005
Statut
Membre
Dernière intervention
16 février 2025
13 févr. 2021 à 09:13
13 févr. 2021 à 09:13
Bonjour Roma,
Merci pour tes explications claires et concises, tes exemples me parlent bien ... maintenant je comprends mon erreur.
Pour terminer je peux donc aussi remplacer le code :
</code>
Merci pour tes explications claires et concises, tes exemples me parlent bien ... maintenant je comprends mon erreur.
Pour terminer je peux donc aussi remplacer le code :
<code basic>ChDir "C:\temp" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="Compta_Raymond.xlsm" ' Ecrasement fichier existant.xls' Application.DisplayAlerts = True 'Remettre absolument ensuite par Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:\temp\Compta_Raymond.xlsm" Application.DisplayAlerts = True
</code>
Ramon1
Messages postés
334
Date d'inscription
samedi 1 octobre 2005
Statut
Membre
Dernière intervention
16 février 2025
>
Utilisateur anonyme
13 févr. 2021 à 12:14
13 févr. 2021 à 12:14
Donc si j'ai bien compris, le code de conflictresolution permet aussi de ne pas afficher la fenêtre de confirmation.
Pour la sauvegarde dans C:\ et E:\ c'est un test, après je vais faire la sauvegarde sur mon disque externe bien sûr..
En fait la pratique de l'enregistreur n'est pas tjs une source sûr, mais pour des débutants comme moi, ça permet de réaliser rapidement et facilement bcp de macros.
Pour la sauvegarde dans C:\ et E:\ c'est un test, après je vais faire la sauvegarde sur mon disque externe bien sûr..
En fait la pratique de l'enregistreur n'est pas tjs une source sûr, mais pour des débutants comme moi, ça permet de réaliser rapidement et facilement bcp de macros.
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
>
Ramon1
Messages postés
334
Date d'inscription
samedi 1 octobre 2005
Statut
Membre
Dernière intervention
16 février 2025
13 févr. 2021 à 14:51
13 févr. 2021 à 14:51
le code de conflictresolution évite l'affichage, et permet de décider que faire en cas de conflit (fichier présent).
Application.DisplayAlerts est plus général, risque souvent de cacher de vrais problèmes.
ce que tu avais ici, puisque tu n'étais pas prévenu que le fichier n'était pas sauvé.
Application.DisplayAlerts est plus général, risque souvent de cacher de vrais problèmes.
ce que tu avais ici, puisque tu n'étais pas prévenu que le fichier n'était pas sauvé.
Ramon1
Messages postés
334
Date d'inscription
samedi 1 octobre 2005
Statut
Membre
Dernière intervention
16 février 2025
>
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
13 févr. 2021 à 18:22
13 févr. 2021 à 18:22
Merci à toi et à Roma pour votre aide, j'ai mis la question en résolu
Ramon1
Messages postés
334
Date d'inscription
samedi 1 octobre 2005
Statut
Membre
Dernière intervention
16 février 2025
>
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
13 févr. 2021 à 23:43
13 févr. 2021 à 23:43
Désolé, je reviens vers vous, j'ai donc remplacé le code comme vous me l'avez conseillé avec ConflictResolution,
l'enregistrement se fait correctement sur les 2 lecteurs, mais la boite de dialogue de demande de confirmation s'ouvre 2 fois...
Qu'est-ce que j'ai oublié ?
l'enregistrement se fait correctement sur les 2 lecteurs, mais la boite de dialogue de demande de confirmation s'ouvre 2 fois...
Qu'est-ce que j'ai oublié ?
Sub Enregist_C_et_E() ' ' Enregist_C_et_E Macro Sheets("Compta").Select Range("A3").Select Sheets("Echéance").Select ActiveSheet.Unprotect Password:="1447" Range("A1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 13434879 .TintAndShade = 0 .PatternTintAndShade = 0 End With ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="1447" Sheets("Compta").Select Range("A4").Select Range("A4").End(xlDown).Offset(1, 0).Select ActiveWorkbook.Saved = True ActiveWorkbook.SaveAs _ Filename:="C:\temp\Compta_Raymond.xlsm", _ ConflictResolution:=xlLocalSessionChanges 'Application.DisplayAlerts = False 'ActiveWorkbook.SaveAs Filename:="C:\temp\Compta_Raymond.xlsm" ' Ecrasement fichier existant.xls' 'Application.DisplayAlerts = True 'Remettre absolument ensuite ActiveWorkbook.SaveAs _ Filename:="E:\A_Perso_10.09.19\Banque\Compta\Compta_Raymond.xlsm", _ ConflictResolution:=xlLocalSessionChanges 'Application.DisplayAlerts = False 'ActiveWorkbook.SaveAs Filename:="E:\A_Perso_10.09.19\Banque\Compta\Compta_Raymond.xlsm" ' Ecrasement fichier existant.xls' 'Application.DisplayAlerts = True 'Remettre absolument ensuite Application.Quit End Sub
Utilisateur anonyme
13 févr. 2021 à 10:08
13 févr. 2021 à 10:08
Je me demande quel est l'intérêt pratique de faire une sauvegarde dans le dossier C:\temp ET dans le dossier sur "E" ? Ces doublons sont volontaires ?
12 févr. 2021 à 19:56