Le problème, c'est que ça m'oblige à les regarder l'une après l'autre, alors que je les sélectionne d'après l'icône, sans les ouvrir. Je traite des centaines de photos.Bonjour à tous,
Je ne vois pas où est le problème avec Application.FileDialog(msoDialogFilePicker)
Vous pouvez voir les photos.
Exemple :
Regarde la pièce jointe 1207119
Quand je clique sur le bouton "Macro", j'ai une erreur 1004 : "la méthode de l'objet '_WorkSheet' a échoué" sur la ligne :Re,
Petit classeur exemple avec possibilité soit de déplacer, soit de copier les fichiers d'un répertoire à un autre
Tests.CopyPictures sys_Settings.Range("doMovePictures").Value
Finalement, tu as raison !Le problème, c'est que ça m'oblige à les regarder l'une après l'autre, alors que je les sélectionne d'après l'icône, sans les ouvrir. Je traite des centaines de photos.
Daniel
Hello,Quand je clique sur le bouton "Macro", j'ai une erreur 1004 : "la méthode de l'objet '_WorkSheet' a échoué" sur la ligne :
DanielVB:Tests.CopyPictures sys_Settings.Range("doMovePictures").Value
Tests.CopyPictures sys_Settings.Range("sysr_doMovePictures").Value
Cerise non dénoyautée ...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
Si tu utilises la Boîte de dialogue fichier il te suffit, comme pour toute fenêtre Windows, de faire un double-clic dans la barre de titre.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.
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.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 ???
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.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
D'où ma proposition de laisser tomber l'Explorateur de fichiers et de plutôt passer par la Boîte de dialogue fichier.Mon problème était de récupérer, le nom des fichiers.
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
Effectivement. J'ai mis du temps à comprendre que la boîte de dialogue n'est que légèrement différente de l'explorateur de fichiers.D'où ma proposition de laisser tomber l'Explorateur de fichiers et de plutôt passer par la Boîte de dialogue fichier.
Je crois comprendre que c'est ce que tu as choisi de faire au final.
Explorateur :Je ne vois pas comment le carré à droite peut disparaitre (une copie d'écran svp)