Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pour enregistrer dans un nouveau classeur Excel

Bastien43

XLDnaute Occasionnel
Bonjour,

Je souhaite lorsque je clique sur un bouton , extraire la feuille excel et l'enregistrer comme nouveau classeur excel.

Voici la macro :

Sheets("DDP").Select
Sheets("DDP").Copy

Dim chemin As String
chemin = ThisWorkbook.Path & "\Détails de prix"
ActiveWorkbook.SaveAs Filename:=chemin & "\" & [S1].Value & [T1].Value & ".xlsx"

Cela fonctionne.

Par contre si le document existe déjà, ou si il est déjà ouvert. Je ne veux ou ne peux pas le supprimer. Excel me prévient.

Je clique donc sur "non" dans l'invite de commande Excel et une boite de dialogue "débogage" s'affiche.

Comment éviter ce bug et sortir proprement si je clique sur "non"

Je vous remercie pour votre aide

Cordialement
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Bastien43

Bastien43
Il y a de nombreux d'exemples dans les archives du forum de fonction qui teste
1) l'existence d'une feuille
2) l'existence d'un classeur
3) l'existence d'un répertoire
Tout est là à disposition
Voir ici
 

Staple1600

XLDnaute Barbatruc
Re

Tu as mis résolu mais sans poster la solution que tu utilises.
Je me permets donc un petit recyclage (pour les autres lecteurs du fil)
La fonction
VB:
Function FileExiste(F$) as Boolean
FileExiste = Dir(F) <> vbNullString
End Function
Voir exemple d'emploi ci-dessous
'Dans un module standard
VB:
Sub a()
Dim p$, f$
'juste utile pour le test - A SUPPRIMER une fois le test fait
Randomize
f = Application.WorksheetFunction.Rept(Int((Rnd * 123454321) ^ 1.618), 2) & ".xls"
'/////////////////////////////////////////////////////////////
p = Split(Environ(23) & Application.PathSeparator, "=")(1)
If FileExiste(p & f) Then
Workbooks.Open (p & f)
Else
MsgBox "Le fichier " & p & f & " n'existe pas!"
End If
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…