Enregistrement fichier par une macro quand le nom est déjà utilisé

CD51

XLDnaute Nouveau
Bonjour Le forum,
Premièrement je vous remercie tous car depuis le début de mon stage où je dois faire principalement des macros sous excel, vous m'avez déjà été d'un énorme secours.

Si aujourd'hui je vous pose une question directement, c'est que je n'ai pas trouvé (mais je n'ai peut-être pas assez bien cherché) de réponse à ma question qui suit :

J'ai une macro qui me permet de récupérer différentes informations d'un fichier à un autre, et qui ensuite enregistre-sous le fichier où sont apparu les informations.

voici la macro d'enregistrement :

VB:
'''''''''''''''''''''''''''''Enregistrement du fichier''''''''''''''''''''''''''''''
    

'ecriture du chemin d'accés: celui-ci est dissimulé en case A1 du fichier

Dim NomFichier As String, Chemin As String, Chemin2 As String
 Chemin = CStr(ThisWorkbook.ActiveSheet.Range("A1").Value) 


'vérification qu'il n'y a pas de renvoie à la ligne dans le nom de l'Article qui me sert ensuite de nom du fichier, pour éviter un bug d'enregistrement

Dim MonCaracAChercher As String
 MonCaracAChercher = Chr(10)
 If InStr(1, Article, MonCaracAChercher, vbTextCompare) = 0 Then

'                          attention si le nom du fichier est déjà utilisé (mais ça marche pas)
                           If Dir(ThisWorkbook.Path & "\" & Article, vbDirectory) = "" Then

'enregistrement

Application.DisplayAlerts = False
 NomFichier = Format(Article)
 ActiveWorkbook.SaveAs (Chemin & NomFichier)
 Application.DisplayAlerts = True

'                         message d'érreur si le nom est déjà pris (mais ça marche pas)
                           Else
                          MsgBox ("Impossible d'enregistrer automatiquement car ce nom est déjà utilisé" &                           Chr(10) & "Veuillez enregistrer-sous, manuellement")
                          End If


'message d'erreur s'il y a un renvoie à la ligne dans le nom du ficher

  Else
  MsgBox ("Impossible d'enregistrer automatiquement" & Chr(10) & "Veuillez enregistrer-sous, manuellement")
  End If

Pouvais vous m'aider s'il vous plait ?
Pour le moment toute ma macro fonctionne normalement, comme si c'était la première fois que le nom du fichier apparaissait, et l'enregistre par dessus le fichier précédent sans même m'en avertir...

Merci Beaucoup.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Enregistrement fichier par une macro quand le nom est déjà utilisé

Bonjour et bienvenue sur le forum

Regardes si cette function de Ken Puls peut t'aider
J'ai laisser les deux macros de test
VB:
Option Explicit 
 
Function FileOrDirExists(PathName As String) As Boolean
 'source:vbaexpress -auteur: Ken Puls
     'Macro Purpose: Function returns TRUE if the specified file
     '               or folder exists, false if not.
     'PathName     : Supports Windows mapped drives or UNC
     '             : Supports Macintosh paths
     'File usage   : Provide full file path and extension
     'Folder usage : Provide full folder path
     '               Accepts with/without trailing "\" (Windows)
     '               Accepts with/without trailing ":" (Macintosh)
    Dim iTemp As Integer 
     'Ignore errors to allow for error evaluation
    On Error Resume Next 
    iTemp = GetAttr(PathName) 
     'Check if error exists and set response appropriately
    Select Case Err.Number 
    Case Is = 0 
        FileOrDirExists = True 
    Case Else 
        FileOrDirExists = False 
    End Select 
     'Resume error checking
    On Error Goto 0 
End Function

Code:
Sub TestItWithWindows() 
     'Macro Purpose: To test the FileOrDirExists function with Windows
     'Only included to demonstrate the function.  NOT required for normal use!
     
    Dim sPath As String 
     
     'Change your directory here
    sPath = "C:\Test.xls" 
     
     'Test if directory or file exists
    If FileOrDirExists(sPath) Then 
        MsgBox sPath & " exists!" 
    Else 
        MsgBox sPath & " does not exist." 
    End If 
End Sub

Code:
Sub TestItWithMacintosh() 
     'Macro Purpose: To test the FileOrDirExists function with a Macintosh
     'Only included to demonstrate the function.  NOT required for normal use!
     
    Dim sPath As String 
     
     'Change your directory here
    sPath = "HardDriveName:Documents:Test.doc" 
     
     'Test if directory or file exists
    If FileOrDirExists(sPath) Then 
        MsgBox sPath & " exists!" 
    Else 
        MsgBox sPath & " does not exist." 
    End If 
End Sub
 
Dernière édition:

CD51

XLDnaute Nouveau
Re : Enregistrement fichier par une macro quand le nom est déjà utilisé

Merci Staple1600 pour ta rapidité.
J'ai changé ma macro pour y inclure cette function ainsi que le code de test. Mais cela n'as rien changé et la macro croit toujours que le fichier n'existe pas, alors que je répète l'opérateur deux fois d'affilé, avec exactement le même nom....

Cela dit ... le nom qui m'est indiqué comme n'éxistant pas n'as pas le format *.xlsm rajouté derrière... Le nom est du type : "C:\document 1 \fichier 1" alors que j'imagine le fichier enregistré juste avant devrait être : "C:\document 1 \fichier 1.xlsm" et dans ce case peut-être que éffectivement, sans le nom du format, le fichier n'existe pas... ...

Je fais un test et je reviens ^^
 

CD51

XLDnaute Nouveau
Re : Enregistrement fichier par une macro quand le nom est déjà utilisé

Bon... c'est un nouvel echec a mon actif...

que je mette & ".xlsm" ou & ".xls" ... il ne reconnait toujours pas le nom du fichier... Une autre idée ?
 

Staple1600

XLDnaute Barbatruc
Re : Enregistrement fichier par une macro quand le nom est déjà utilisé

Bonjour

Chez moi la première fonction (celle de K. Puls) fonctionne correctement
Pour vérifier j'ai aussi testé avec cette autre fonction, et cela fonctionne tout pareil ;)
Code:
Sub TestItWithWindowsII()
Dim sPath As String
sPath = "C:\Temp\Teste.xlsm"
MsgBox sPath & " est " & IIf(Existe(sPath), "existant.", " inexistant.")
End Sub
Code:
Function Existe(fic$) As Boolean
Existe = (Dir(fic) > vbNullString)
End Function

PS: J'ai créé un fichier Teste.xlsm dans C:\Temp avant de faire le test
 

CD51

XLDnaute Nouveau
Re : Enregistrement fichier par une macro quand le nom est déjà utilisé

:'( :( :'( Merci mais dsl Staple1600, t'as fonction aussi me dit que mon fichier est inéxistant, or, il existe...

mais le chemin d'accés est du style : "X:\Document1\doc2\doc3\test1", sur le réseau de l'entreprise... est-ce que cela est suffisant pour perturber la macro, ou est-ce vraiment moi qui est un problème sur mon ordinateur ?
 

CD51

XLDnaute Nouveau
Re : Enregistrement fichier par une macro quand le nom est déjà utilisé

Attention : dernière nouvelle.. après quelques éssais, en reprenant la première macro (celle de Ken Puls) j'ai réussis à voir que le doc3 éxiste... mais pas le fichier xls à l'intérieur --" ...
En revanche Staple1600, avec t'as macros, je ne vois ni le fichier, ni le document... :confused: ...
 

Discussions similaires

Réponses
2
Affichages
237

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc