Sélectionner et copier plusieurs fichiers

Chris57

XLDnaute Occasionnel
Bonsoir à tous,

j'ai créé un petit classeur qui me permet de sélectionner un fichier (peu importe l'extension), d'afficher son nom et son chemin.
Puis avec une autre macro je copie ce fichier sur un emplacement précis sur C:\ en recréant les mêmes dossiers et sous dossier qu'à l'origine (c'est pour cloner des fichiers et en faire une sauvegarde sous C:\)

Mais ma procédure ne me permet que de sélectionner un fichier à la fois.

J'aimerai qu'en ouvrant la boite de dialogue de sélection, que je puisse sélectionner plusieurs fichiers au choix (pas forcément tous), et qu'en cliquant sur OK, qu'ils s'affichent tous dans la feuille.

Est-ce possible ??

J'utilise cette boîte de dialogue :
Code:
        With Application.FileDialog(msoFileDialogFilePicker)
            .Filters.Clear                  'suppression des filtres pré existants
            .InitialFileName = [C3].Value   '"L:\UP78"    'Chemin initial de l'explorateur
            .AllowMultiSelect = True        'FALSE = interdiction des selections multiple
            .Show                           'Affichage de l'explorateur
            If .SelectedItems.Count > 0 Then
                CHEMINetFICHIER = .SelectedItems(1)
            End If
        End With

Il y a bien une option pour sélectionner plusieurs fichiers, mais seul le 1er est affiché dans ma feuille...
 

Pièces jointes

  • Clonage Sur Disque C.zip
    26.2 KB · Affichages: 16
  • Clonage Sur Disque C.zip
    26.2 KB · Affichages: 43
  • Clonage Sur Disque C.zip
    26.2 KB · Affichages: 19
Dernière édition:

Chris57

XLDnaute Occasionnel
Re : Sélectionner et copier plusieurs fichiers

En faisant un nombre incalculable de test j'ai trouvé une solution :
Code:
        With Application.FileDialog(msoFileDialogFilePicker)
            .Filters.Clear                  'suppression des filtres pré existants
            .InitialFileName = [D3].Value   '"L:\UP78"    'Chemin initial de l'explorateur
            .AllowMultiSelect = True        'FALSE = interdiction des selections multiple
            .Show                           'Affichage de l'explorateur
            
            ' Enregistre le nbre de fichiers sélectionnés dans une variable
                NBRselect = .SelectedItems.Count
            
            ' Inscrit les nom+chemins dans la feuille en colonne K
                For k = 1 To NBRselect
                    [K09].Offset(nbreFICHIERS + k, 0) = .SelectedItems(k)
                Next k
        End With


ça marche très bien sauf qu'il mémorise la sélection précédente : si par exemple j'ouvre la boîte de dialogue ci-dessus et que je sélectionne des fichiers, il les inscrit correctement.
Par contre si je re-sélectionne il remet les 1er fichiers + les nouveaux !!

je cherche un moyen de faire une RAZ
 

JNP

XLDnaute Barbatruc
Re : Sélectionner et copier plusieurs fichiers

Bonjour Chris57 :(,
En faisant un nombre incalculable de test j'ai trouvé une solution :
Tu aurais consulté l'aide de VBA, tu aurais trouvé en moins de 2 mn :p... Et en plus, la syntaxe serait meilleure et en stockant dans une variable, tu pourrais effacer cette variable :rolleyes:...
Voici l'exemple de l'aide à réadapter à ton cas
Code:
Sub Main()

    'Declare a variable as a FileDialog object.
    Dim fd As FileDialog

    'Create a FileDialog object as a File Picker dialog box.
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    'Declare a variable to contain the path
    'of each selected item. Even though the path is aString,
    'the variable must be a Variant because For Each...Next
    'routines only work with Variants and Objects.
    Dim vrtSelectedItem As Variant

    'Use a With...End With block to reference the FileDialog object.
    With fd

        'Allow the user to select multiple files.
        .AllowMultiSelect = True 

        'Use the Show method to display the File Picker dialog box and return the user's action.
        'If the user presses the button...
        If .Show = -1 Then
            'Step through each string in the FileDialogSelectedItems collection.
            For Each vrtSelectedItem In .SelectedItems

                'vrtSelectedItem is aString that contains the path of each selected item.
                'You can use any file I/O functions that you want to work with this path.
                'This example displays the path in a message box.
                MsgBox "Selected item's path: " & vrtSelectedItem

            Next
        'If the user presses Cancel...
        Else
        End If
    End With

    'Set the object variable to Nothing.
    Set fd = Nothing

End Sub
Bon courage :cool:
 

Discussions similaires

Réponses
1
Affichages
333
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 493
Messages
2 088 959
Membres
103 990
dernier inscrit
lamiadebz