test existence fichier

  • Initiateur de la discussion titus
  • Date de début
T

titus

Guest
Bonjour


Quelle macro pour savoir si un fichier excel existe?

Voila ou j'en suis et c'est pas top
Sub Enregis()
pn = Worksheets("JANVIER").Range("C5").Value
ChDrive "C"
ChDir "C:\dossiers"
On Error GoTo gError
ThisWorkbook.Sheets.Copy
ActiveWorkbook.SaveAs Filename:=pn & ".xls"
ActiveWorkbook.Close
MsgBox "Le classeur ""Planning de :" & pn & " a été enregistré." & Chr(13) & "Vous pouvez quitter Excel.", vbInformation, "INFORMATION"
gError:
Application.DisplayAlerts = False
'ActiveWorkbook.Close
Exit Sub
End Sub

Si quelqu'un a une idée, merci
 
Y

Yeahou

Guest
Bonjour Titus, le forum

Il y a plus simple

Dir$(chemin&nomfichier, vbNormal) renvoie une chaine vide si le fichier n'existe pas et le nom complet si celui ci existe.
Tu peux également utiliser
Dir$(chemin&nomdossier, vbDirectory)
pour tester l'existence d'un répertoire

Cordialement, A+
 
Y

Yeahou

Guest
Re bonjour Titus, le forum

Et voila ta macro modifiée, j'ai ajouté une incrémentation automatique du nom.

Cordialement, A+

Sub Enregis()
pn = Worksheets("JANVIER").Range("C5").Value
ChDrive "C"
ChDir "C:\dossiers"
ThisWorkbook.Sheets.Copy

for compteur=1 to 999
if Dir$(chemin & "\" & pn & right("00" & compteur,3) & ".xls", vbNormal)="" then
ActiveWorkbook.SaveAs Filename:=pn & right("00" & compteur,3) & ".xls"
ActiveWorkbook.Close
MsgBox "Le classeur ""Planning de :" & pn & right("00" & compteur,3) & " a été enregistré." & Chr(13) & "Vous pouvez quitter Excel.", vbInformation, "INFORMATION"
exit for
end if
next compteur
End Sub
 
T

titus

Guest
Merci pour votre aide
Mais lorsque que j'éxécute votre code
Message d'erreur suivant
Erreur d'éxécution '1004'
La méthode 'SaveAs' de l'objet' _Workbook' a échoué

(Cela se produit si un fichier existe déja et que je réponds
Non au message d'Excel "Un ficher nommé xxxx.xls existe déja à cet emplacement.Voulez le remplacer)

L'incrémentation ne se fait pas.
Le fichier est ecrasé si je réponds oui

Ce que j'essaye de demander à VBA
si xxxx.xls existe alors message d'excel "un fichier nommé...."
si réponse oui, fichier écrasé
si réponse non sortie de la procédure.

Je ne vois pas le pourquoi de l'erreur 1004
 
Y

Yeahou

Guest
Salut Titus, le Forum

il fallait remplacer chemin par "c:\dossiers" pour que le test fonctionne. Du coup, j'ai récrit la macro en enlevant l'inutile, en déclarant les variables et en ajoutant un test s'il n'y a plus d'incrémentation possible pour le fichier

désolé, j'essaierai d'être plus clair dorénavant

Cordialement, A+

Sub Enregis()
Dim PN As String, Chemin As String
Dim Compteur As Integer, Test As Boolean
Chemin = "C:\dossiers"
PN = Worksheets("JANVIER").Range("C5").FormulaR1C1
ThisWorkbook.Sheets.Copy
For Compteur = 1 To 999
If Dir$(Chemin & "\" & PN & Right("00" & Compteur, 3) & ".xls", vbNormal) = "" Then
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & PN & Right("00" & Compteur, 3) & ".xls"
ActiveWorkbook.Close
MsgBox "Le classeur Planning de :" & PN & Right("00" & Compteur, 3) & " a été enregistré." & Chr(10) & "Vous pouvez quitter Excel.", vbInformation, "INFORMATION"
Test = True
Exit For
End If
Next Compteur
If Test = False Then MsgBox "Le classeur Planning de :" & PN & " n'a pu être enregistré." & Chr(10) & "Vérifier le dossier " & Chemin & Chr(10) & "Vérifiez qu'il reste une incrémentation possible de 001 à 999", vbInformation, "INFORMATION"
End Sub
 

solonath

XLDnaute Nouveau
Re : Re: test existence fichier

Salut Titus, le Forum

il fallait remplacer chemin par "c:\dossiers" pour que le test fonctionne. Du coup, j'ai récrit la macro en enlevant l'inutile, en déclarant les variables et en ajoutant un test s'il n'y a plus d'incrémentation possible pour le fichier

désolé, j'essaierai d'être plus clair dorénavant

Cordialement, A+

Sub Enregis()
Dim PN As String, Chemin As String
Dim Compteur As Integer, Test As Boolean
Chemin = "C:\dossiers"
PN = Worksheets("JANVIER").Range("C5").FormulaR1C1
ThisWorkbook.Sheets.Copy
For Compteur = 1 To 999
If Dir$(Chemin & "\" & PN & Right("00" & Compteur, 3) & ".xls", vbNormal) = "" Then
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & PN & Right("00" & Compteur, 3) & ".xls"
ActiveWorkbook.Close
MsgBox "Le classeur Planning de :" & PN & Right("00" & Compteur, 3) & " a été enregistré." & Chr(10) & "Vous pouvez quitter Excel.", vbInformation, "INFORMATION"
Test = True
Exit For
End If
Next Compteur
If Test = False Then MsgBox "Le classeur Planning de :" & PN & " n'a pu être enregistré." & Chr(10) & "Vérifier le dossier " & Chemin & Chr(10) & "Vérifiez qu'il reste une incrémentation possible de 001 à 999", vbInformation, "INFORMATION"
End Sub

Merci !
C'est exactement ce que je cherchais, à quelques adaptations près...

Nathalie
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re : test existence fichier

Bonjour Solonath

Cela fait plaisir de se faire remercier pour des codes qui datent de neuf ans, comme quoi rien ne se perd sur XLD et tout le monde peut y trouver son bonheur en cherchant un peu.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 096
Membres
104 030
dernier inscrit
Angy