Microsoft 365 VBA - Lister les photos sélectées dans l'Explorateur Windows

danielco

XLDnaute Accro
Bonjour,

Je cherche une procédure me permettant de lister et de recopier les phots sélectionnées dans l'Explorateur de fichiers.

Merci d'avance.

Daniel
 

jurassic pork

XLDnaute Occasionnel
Quand je clique sur le bouton "Macro", j'ai une erreur 1004 : "la méthode de l'objet '_WorkSheet' a échoué" sur la ligne :
VB:
Tests.CopyPictures sys_Settings.Range("doMovePictures").Value
Daniel
Hello,
Valtrase n'a pas mis le bon nom de plage c'est sysr_doMovePictures
VB:
Tests.CopyPictures sys_Settings.Range("sysr_doMovePictures").Value

Ami calmant, J.P
 
Dernière édition:

crocrocro

XLDnaute Occasionnel
Cependant, s'il était possible, dans les deux cas d'avoir une boîte de dialogue de choix des fichiers en plein écran, ça serait la cerise sur le gâteau.
Daniel
Cerise non dénoyautée ...
Il suffit d'amener la souris dans l'angle de la boite de dialogue pour avoir une double-flèche en diagonale et d'étirer vers le bas.
1731604379653.png
 

danielco

XLDnaute Accro
Ceci dit, le système est mal foutu, en ce sens qu'on ne peut indiquer deux "solutions". Désolé pour crocrocro, victime du hasard, que je remercie encore une fois
La Boîte de dialogue fichier permet aussi de visualiser les images, si je ne me trompe.



Peut-être qu'une simple sélection des fichiers dans l'Explorateur de fichiers ne suffit pas et qu'il faudrait aussi faire un "Copier" pour les mettre dans le presse-papiers.

Mais franchement, passer par la Boîte de dialogue fichier me paraît plus simple, aussi bien à programmer qu'à utiliser.

Et du coup ça m'amène à te poser une autre question : puisque tu passes par l'Explorateur de fichiers, pourquoi aller passer par Excel pour copier/coller (ou déplacer) les fichiers, plutôt que de le faire naturellement dans l'Explorateur de fichiers ??? 🤔
Oui, bien sûr, c'est ce que fait le classeur de Valtrase. Je l' ajouté dans celui de crocrocro. Mon problème était de récupérer, le nom des fichiers. Le copier coller par macro, je sais faire.

Daniel
 

danielco

XLDnaute Accro
Cerise non dénoyautée ...
Il suffit d'amener la souris dans l'angle de la boite de dialogue pour avoir une double-flèche en diagonale et d'étirer vers le bas.
Regarde la pièce jointe 1207153
Exact, mais ch.... D'autant que le carré en haut à droite de la fenêtre a disparu. Je brasse des dizaines de dossiers. Merci quand même. C'est un point accessoire.

Daniel
 

crocrocro

XLDnaute Occasionnel
Je complète :
Dès lors qu'on a agrandi une première fois la boite de dialogue, aux fois suivantes, la boite conserve la taille précédente.
avec le code ci-dessous on a
- un titre dédié pour la fenêtre "Sélectionner vos fichiers images"
- un texte dédié pour le bouton (dès qu'on a sélectionné au moins 1 fichier) "Sélectionner"

Je ne vois pas comment le carré à droite peut disparaitre (une copie d'écran svp)

VB:
Sub SelectionnerRepertoireImage()
' Sélection du répertoire
' Copie du nom de TOUS les fichiers images du répertoire dans le tableau
Dim Repertoire
Dim i As Integer
Dim n As Integer
Dim Ligne As Integer
Dim FichierImage As Object
Dim NomCourtImage As String

    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogOpen)
    ' Indiquer le chemin complet du Repertoire par défaut
        .InitialFileName = "C:\Users\" & Environ("username") & "\Documents\"
        .Title = "Sélectionner vos fichiers images"
        .AllowMultiSelect = True
        .InitialView = msoFileDialogViewLargeIcons
        .Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1
        .ButtonName = "Sélectionner"
        .Show
        If .SelectedItems.Count > 0 Then
            Repertoire = .InitialFileName
            Range("NOM_REP_IMG") = Repertoire
            ActiveSheet.Range(TAB_IMAGES).ClearContents
            i = 0
            ActiveSheet.Range(TAB_IMAGES).Resize(ActiveSheet.Range(TAB_IMAGES).Rows.Count, ActiveSheet.Range(TAB_IMAGES).Columns.Count).Name = TAB_IMAGES
            For i = 1 To .SelectedItems.Count
                NomCourtImage = Mid(CStr(.SelectedItems(i)), InStrRev(CStr(.SelectedItems(i)), "\") + 1)
                ActiveSheet.Range(TAB_IMAGES).Cells(i, 1) = NomCourtImage
            Next i
            ActiveSheet.Range(TAB_IMAGES).Resize(i, ActiveSheet.Range(TAB_IMAGES).Columns.Count).Name = TAB_IMAGES
            
            ' Tri du tableau par nom image croissant
            ActiveSheet.Sort.SortFields.Clear
            ActiveSheet.Sort.SortFields.Add _
                Key:=Range(TAB_IMAGES).Columns(1), _
                SortOn:=xlSortOnValues, _
                Order:=xlAscending, _
                DataOption:=xlSortNormal
            With ActiveSheet.Sort
                .SetRange Range(TAB_IMAGES)
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
            MsgBox .SelectedItems.Count & " images dans le répertoire sélectionné" & vbCrLf & "Le tableau est trié sur le nom", vbInformation
        Else
            RepertoireAvecImages = False
        End If
    End With
    Application.ScreenUpdating = True
End Sub
 

crocrocro

XLDnaute Occasionnel
je ne comprends pas, la capture ne montre que le haut de la boite de dialogue.
Faites l'essai suivant :
Après avoir ouvert la boite de dialogue,
en haut à droite, clic successivement les 2 icones de gauche sélectionner Grandes icones - ne pas afficher le volet de visualisation

1731607696241.png

Normalement la boite de dialogue présente un ascenseur vertical à droite et tout en bas, quelquesoit la taille de la fenêtre son angle bas droit. Avec la souris positionnée correctement sur cet angle (double flèche diagonale) on peut étirer la boite.
1731607963942.png

Dans mon exemple, sur le répertoire, il y a plus de 400 phtotos que bien sûr je ne peux afficher sur la 1ère page mais seulement une 60 aines selon le format paysage ou portrait.
Pour la sélection, pas évidente bien sûr si vous avez 1000 photos dans le répertoire, en jouant avec les touches CTRL maintenu (sélections individuelles),
MAJ maintenu (sélection depuis la dernière sélection jusqu'à l'image sélectionnée)
vous devez vous en sortir
 

Pièces jointes

  • 1731607768449.png
    1731607768449.png
    1.4 KB · Affichages: 1

Discussions similaires

Réponses
10
Affichages
596

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 333
Membres
111 103
dernier inscrit
Maxime@mar