IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comparer des extentions, et supprimer le fichier [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Par défaut Comparer des extentions, et supprimer le fichier
    Bonjour,

    Je me retourne vers vous pour axée ma recherche pour une macro.

    Actuellement, j'ai des fichier .xls, pour faciliter la migration sur des fichiers en .xlsx j'ai recupéré et adapté une macro déjà existante.
    Seul probléme, c'est que cette macro garde l'ancien fichier. Je voudrais le supprimer une fois qu'il a enregistré ma feuille dans le nouveau format.

    J'ai essayer de faire une comparaison entre les deux extensions, mais quand la macro arrive sur le xlsx, il le considére comme un fixhier xls.

    Si quelqu'un a une idé pour gerer les conditions je prend.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    Dim Nb As Long
    Const sExtension As String = "xls"
    Const sNewExtension As String = "xlsx"
    Const TypeFichier = "xls"
     
    Public Sub ChangerExtensionFichiers(ByVal sDossier As String, bSousDossier As Boolean)
     
     
    Dim FSO As Object
    Dim Dossier As Object
    Dim sFichier As String, F As String
    Dim Pos As Long, i As Long, sExt As String
    Dim TFichier() As String
    Dim sNom As String
     
        Application.ScreenUpdating = False
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Dossier = FSO.GetFolder(sDossier)
     
        TFichier = Split(TypeFichier, ";")
     
        sFichier = Dir$(sDossier & "\*.*")
     
        Do While Len(sFichier) > 0
            F = FSO.GetFileName(sFichier)
            For i = LBound(TFichier) To UBound(TFichier)
                If UCase(sFichier) <> UCase(ThisWorkbook.Name) Then
                    Pos = InStr(F, TFichier(i))
                    sExt = FSO.GetExtensionName(F)
                    If Pos > 0 And UCase(sExt) = UCase(sExtension) Then
                        sNom = Left$(F, Len(F) - Len(sExt))
     
                        Workbooks.Open Filename:=sDossier & "\" & sFichier
                        Application.DisplayAlerts = False
                        ActiveWorkbook.SaveAs Filename:=sDossier & "\" & sNom & "xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                        ActiveWorkbook.Close
                        Application.DisplayAlerts = True
     
                        Nb = Nb + 1
                    End If
     
     
    Set FSO1 = CreateObject("Scripting.FileSystemObject")
        Set fi = FSO1.GetFolder(Dossier)
        Set fc = FS01.GetFileName(sFichier)
     
     
       For Each fi In fc
           If (fc.GetExtensionName = sExtension) Then
            Set FS = CreateObject("Scripting.FileSystemObject")
            FS.DeleteFile fi, True
     
           If (fc.GetExtensionName = sNewExtension) Then
           End
           End If
     
           End If
        Next
     
     
     
     
     
                End If
            Next i
            sFichier = Dir$()
            Application.StatusBar = Nb
        Loop
     
     
     
     
     
     
     
     
    End Sub
     
    Sub SelDossier()
    Dim sStr As String
        sStr = Replace(TypeFichier, ";", "   ")
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = ThisWorkbook.Path & "\"
            .Title = "Changement Extension fichiers ( " & sStr & " ) de " & UCase(sExtension) & " en " & UCase(sNewExtension)
            .AllowMultiSelect = False
            .InitialView = msoFileDialogViewDetails
            .ButtonName = "Sélection Dossier"
            .Show
            Nb = 0
            If .SelectedItems.Count > 0 Then
                DoEvents
                ChangerExtensionFichiers .SelectedItems(1), True
     
            End If
     
     
        End With
     
     
     
    End Sub
    merci d'avance doc'

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Par défaut
    Je viens de trouver comment faire, je post donc la macro si quelqu'un a besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    Dim Nb As Long
    Const sExtension As String = "xls"
    Const sNewExtension As String = "xlsx"
    Const TypeFichier = "xls"
     
    Public Sub ChangerExtensionFichiers(ByVal sDossier As String, bSousDossier As Boolean)
     
     
    Dim FSO As Object
    Dim Dossier As Object
    Dim sFichier As String, F As String
    Dim Pos As Long, i As Long, sExt As String
    Dim TFichier() As String
    Dim sNom As String
     
        Application.ScreenUpdating = False
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Dossier = FSO.GetFolder(sDossier)
     
        TFichier = Split(TypeFichier, ";")
     
        sFichier = Dir$(sDossier & "\*.*")
     
        Do While Len(sFichier) > 0
            F = FSO.getfileName(sFichier)
            For i = LBound(TFichier) To UBound(TFichier)
                If UCase(sFichier) <> UCase(ThisWorkbook.Name) Then
                    Pos = InStr(F, TFichier(i))
                    sExt = FSO.GetExtensionName(F)
                    If Pos > 0 And UCase(sExt) = UCase(sExtension) Then
                        sNom = Left$(F, Len(F) - Len(sExt))
     
                        Workbooks.Open Filename:=sDossier & "\" & sFichier
                        Application.DisplayAlerts = False
                        ActiveWorkbook.SaveAs Filename:=sDossier & "\" & sNom & "xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                        ActiveWorkbook.Close
                        Application.DisplayAlerts = True
     
                        Nb = Nb + 1
     
     
     
     
     
        Set fs01 = CreateObject("Scripting.FileSystemObject")
        Set Fi = fs01.GetFolder(Dossier)
        Set Fc = fs01.getfile(Dossier & "\" & sNom & sExtension)
     
        If fs01.FileExists(Fc) Then
            Set FS = CreateObject("Scripting.FileSystemObject")
           FS.DeleteFile Fc, True
        End If
     
           End If
     
     
     
                End If
            Next i
            sFichier = Dir$()
            Application.StatusBar = Nb
        Loop
     
     
     
     
     
     
     
     
    End Sub
     
    Sub SelDossier()
    Dim sStr As String
        sStr = Replace(TypeFichier, ";", "   ")
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = ThisWorkbook.Path & "\"
            .Title = "Changement Extension fichiers ( " & sStr & " ) de " & UCase(sExtension) & " en " & UCase(sNewExtension)
            .AllowMultiSelect = False
            .InitialView = msoFileDialogViewDetails
            .ButtonName = "Sélection Dossier"
            .Show
            Nb = 0
            If .SelectedItems.Count > 0 Then
                DoEvents
                ChangerExtensionFichiers .SelectedItems(1), True
     
            End If
     
     
        End With
     
     
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. supprimer les fichiers qui ont des mêmes noms
    Par manaboko dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2006, 09h09
  2. Comment comparer des fichiers sur Windows?
    Par programmerPhil dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 22/02/2006, 20h47
  3. Supprimer un fichier dans un des repertoires du site?
    Par Death83 dans le forum Langage
    Réponses: 5
    Dernier message: 03/12/2005, 18h21
  4. [LG][FAQ]comparer des fichiers
    Par lucke dans le forum Langage
    Réponses: 11
    Dernier message: 01/06/2003, 18h02
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo