• Initiateur de la discussion Initiateur de la discussion sarrsouraa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sarrsouraa

XLDnaute Occasionnel
bonjour tout le monde
voici ma question
j'ai besoin quand l'utilisateur fait un saveas de verifier le chemein et le nom du fichier introduits est il possible

merciiiiiiiiiiiiiiii de m aider
 
Re : SaveAS

bonjour sarrsouraa,
oui c'est possible
Code:
Sub Sauve()
    Dim chemin As String, rep%
    chemin = "C:\Essais"
    If Dir(chemin, vbDirectory) <> "" Then
       ActiveWorkbook.SaveAs (chemin) & "\Ton fichier.xls"
    Else
        rep = MsgBox("Le chemin que vous voulez sauvegarder n'existe pas" & vbCrLf & _
                     "Voulez vous le créer?", vbYesNo, "Vérification du chemin Fichier")
        If rep = vbYes Then MkDir (chemin)
        If rep = vbNo Then Exit Sub
    End If
End Sub
enfin à adapter par rapport à ce que tu veux faire, c'est le principe, si tu ne veux pas avoir le message le fichier existe déjà voulez vous le remplacer tu le diras
a+
papou 🙂

EDIT : Bonjour Job
 
Dernière édition:
Re : SaveAS

Bonjour sarrsourra, salut papou,

j'ai besoin quand l'utilisateur fait un saveas de verifier le chemein et le nom du fichier introduits

Il n'est pas possible de savoir ce que l'utilisateur entre dans la boîte de dialogue "Enregistrer sous" avant l'enregistrement effectif.

Par contre après l'enregistrement, c'est évident :

Code:
nom = ThisWorkbook.Name
chemin = ThisWorkbook.Path

Alors on peut les tester, et si ça ne va pas :

- revenir au fichier précédent par un nouveau SaveAs (il faut donc avoir auparavant mémorisé le nom et le chemin d'origine)

- supprimer le "mauvais" fichier par l'instruction Kill

Il y aura tout de même un petit problème : à partir de quel évènement faut-il effectuer ce contrôle ? L'évènement BeforeSave est en effet créé avant l'enregistrement...

A+
 
Re : SaveAS

Re,

Il y aura tout de même un petit problème : à partir de quel évènement faut-il effectuer ce contrôle ? L'évènement BeforeSave est en effet créé avant l'enregistrement...

A la reflexion, je vois [Edit] 3 évènements qui peuvent être utilisés :

- Workbook_Deactivate => à la désactivation (et la fermeture) du classeur

- Workbook_BeforeClose => à la fermeture

- [Edit] Workbook_BeforeSave afin d'éviter les "Enregistrer sous" multiples.

A+
 
Dernière édition:
Re : SaveAS

Bonjour le fil, le forum,

Pour illustrer ce que j'ai dit, voir le fichier joint.

Toutes les macros sont dans ThisWorkbook.

Le contrôle se borne à interdire la modification du chemin d'accès.

La macro ferme ensuite le fichier, sinon chez moi Excel plante...

A+
 

Pièces jointes

Re : SaveAS

Bonjour le fil,

Je n'avais pas pensé à utiliser Application.OnTime.

Cette méthode permet d'exécuter la macro Controle immédiatement après l'enregistrement.

Seul l'évènement Workbook_BeforeSave est créé :

Code:
Dim cheminref 'mémorise la variable

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If cheminref = "" Then cheminref = ThisWorkbook.Path
Application.OnTime Now, "ThisWorkbook.Controle"
End Sub

Private Sub Controle()
Dim nom$, chemin$
nom = ThisWorkbook.Name
chemin = ThisWorkbook.Path
If chemin <> cheminref Then 'un exemple de test de contrôle
  Application.DisplayAlerts = False
  MsgBox "Enregistrement dans '" & cheminref & "'"
  ThisWorkbook.SaveAs cheminref & "\" & nom
  Kill chemin & "\" & nom
End If
End Sub

Fichier (3) joint.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
320
Réponses
7
Affichages
467
Réponses
5
Affichages
693
Réponses
6
Affichages
569
Réponses
18
Affichages
719
Réponses
5
Affichages
427
Retour