XL 2016 pb macro xl2016 vers excel 365

dereck

XLDnaute Nouveau
Bonjour a tous, voici mon problème , j'ai une macro ecrite sous excel 2016 et elle ne fonctionne pas sous excel 365.
Voici le code :

VB:
Sub RenommeCSV()

    Dim sRepSource As String
    Dim sRepDest As String
    Dim oFSO As FileSystemObject

    Dim oFile As File
    
    'sRepSource = ChoixDossier
    
    'If sRepSource = "" Then
       ' Exit Sub
   ' End If
    
    sRepDest = "D:\Documents\STATS\"
    
    If sRepDest = "" Then
        Exit Sub
    End If
    
    Set oFSO = New FileSystemObject
    
    For Each oFile In oFSO.GetFolder(sRepDest).Files
        oFile.Copy sRepDest & "\" & Replace(oFile.Name, ".XLS", ".csv")
    Next oFile
    
    Set oFSO = Nothing
    
    Kill "D:\Documents\STATS\*.XLS"
    
End Sub

et ca bloque ici Dim oFSO As FileSystemObject (erreur : type defini non defini). tout en sachant que la référence microsoft scripting runtime est cochée sur les 2 versions

merci par avance de votre aide
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, dereck

=>dereck
Essaies comme ceci
VB:
Sub RenommeCSV_II()
Dim sRepSource$, sRepDest$, oFSO, oFile
sRepDest = "D:\Documents\STATS\"
If sRepDest = "" Then
Exit Sub
End If
Set oFSO = CreateObject("Scripting.FileSystemObject")
For Each oFile In oFSO.GetFolder(sRepDest).Files
If LCase(oFSO.GetExtensionName(oFile.Name)) = "xls" Then
oFile.Copy sRepDest & Replace(oFile.Name, ".xls", ".csv")
End If
Next oFile
Set oFSO = Nothing
'Kill "D:\Documents\STATS\*.XLS"
End Sub
NB: Test OK sur Excel 2013
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir a moins que vbscript soit inhibé dans ton pc ou que la référence ne soit pas cochée ou la bonne version
il ne devrait y avoir aucunes raison
perso pour les object que je connais bien je préfère le late binding


déclaration et set en early binding(déclaration avec reference de la librairie cochée)
VB:
Dim oFSO As FileSystemObject
Set oFSO = New FileSystemObject'creation avec la reference

déclaration en late binding (déclaration tardive) 'pas de référence a activer fonctionne sur tout pc possédant la librairie
VB:
Dim oFSO As object
Set oFSO = CreateObject("Scripting.FileSystemObject")'creation avec la librairie

avantage late binding :avec la déclaration tardive vb se charge tout seul d'utiliser la bonne version de la librairie
avantage early binding il offre l'autocompletion pendant l’édition du code c'est un avantage non négligeable

en tapant dans l'aide "filesystemobject'" tu a une panoplie de démo
 

Discussions similaires

Réponses
2
Affichages
203
Réponses
19
Affichages
2 K
Réponses
1
Affichages
160
Réponses
6
Affichages
192

Statistiques des forums

Discussions
312 109
Messages
2 085 384
Membres
102 878
dernier inscrit
asmaa