Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:

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
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
 

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


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.

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
    1.4 KB · Affichages: 1

Discussions similaires

Réponses
10
Affichages
597
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…