Visionneuse d'images

Baga

XLDnaute Nouveau
Bonjour à tous,
Dans un fil précédent que je ne retrouve pas, Michelxld avait posté la gestion d'un trombinoscope.(04.01.2005)
Pour les images, je voudrais me positionner par défaut sur le repertoire de la feuille excel.
D'autre part, les noms des images comporte la date(xxxMMJJ), j'aimerais donc les trier par ordre décroissant pour avoir les plus récentes en début.
Merci d'avance de votre aide.


B)
 

MichelXld

XLDnaute Barbatruc
bonjour

cette procedure utilise par défaut le repertoire du classeur contenant la macro

Chemin = ThisWorkbook.Path

et trie les images JPG par ordre décroissant (par rapport à leur date de création )


il s'agit d'une adaptation de ce lien :
Lien supprimé
Lien supprimé



Code:
Private Sub UserForm_Initialize()
Dim Fichier As String, S As String, X As String
'----------
'necessite d'activer la reference Microsoft Scripting RunTime
'----------
Dim Fso As Scripting.FileSystemObject
Dim FileItem As Scripting.File
Dim Tableau()
Dim m As Integer, Valeur As Integer, i As Integer
Dim z As Byte
Dim Cible As Variant
   
'-------------------------------------------
'repertoire du classeur contenant cette macro
Chemin = ThisWorkbook.Path
'---------------------------------------------

Fichier = Dir(Chemin & '\\*.jpg') 'liste les images jpg dans ce repertoire
ListBox1.Clear
FormatFich = '.jpg'

'--------------------------------------------------
'recuperation nom fichiers images et infos associées
Do
m = m + 1
ReDim Preserve Tableau(4, m)
Tableau(1, m) = Fichier
Tableau(2, m) = Chemin & '\\' & Fichier
   
S = Chemin & '\\' & Fichier
Set Fso = CreateObject('Scripting.FileSystemObject')
Set FileItem = Fso.GetFile(S)

Tableau(3, m) = FileItem.Name & vbLf & FileItem.DateCreated _
& vbLf & Format(FileItem.Size, '#,##0') & ' octets'

'--------
'gestion des apostrophes dans le nom des fichiers pour la creation
'de la page html
Tableau(2, m) = Application.WorksheetFunction.Substitute(Tableau(2, m), ''', '&#039')
Tableau(3, m) = Application.WorksheetFunction.Substitute(Tableau(3, m), ''', '&#039')
'--------

Tableau(4, m) = Left(FileItem.DateCreated, 10)
   
Fichier = Dir
Loop Until Fichier = ''
'----------------------------------------------------
 
'----------------------------------------------------
'trier les données par ordre décroissant de date
Do
Valeur = 0
For i = 1 To m - 1
If CDate(Tableau(4, i)) < CDate(Tableau(4, i + 1)) Then
For z = 1 To 4
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next z
Valeur = 1
End If
Next i
Loop While Valeur = 1
 
'-----------------------------------------------------------------
'creation de la page html qui s'affichera dans le WebBrowser
Open ThisWorkbook.Path & '\\browserImage.html' For Output As #1
Print #1, '<HTML>'
Print #1, '<HEAD>'
Print #1, '<TITLE>' & Chemin & '</TITLE>'
        
For i = 1 To m
'creation vignette et lien hypertexte pour chaque image
X = '<A href='' & Tableau(2, i) & ''><IMG WIDTH=70 HEIGHT=70 SRC='' & Tableau(2, i) & _
''ALT='' & Tableau(3, i) & ''></IMG></A>'
Print #1, X
            
ListBox1.AddItem Left(Tableau(1, i), Len(Tableau(1, i)) - 4)
Next i
    
Close #1

WebBrowser1.Navigate ThisWorkbook.Path & '\\browserImage.html'
End Sub


bonne journée
MichelXld

Message édité par: michelxld, à: 12/09/2005 09:29
 

Baga

XLDnaute Nouveau
Merci MichelXld de reprendre ce fil.
En fait, c'est au changement de repertoire que je voudrais me placer d'emblée dans le repertoire du classeur.
J'ai repéré de module :
_______________
Private Sub CommandButton2_Click()
'selectionner un repertoire contenant des images JPG
Dim objShell As Object, objFolder As Object
Dim SecuriteSlash As Integer
Dim Fichier As String, S As String, X As String, CheminTemp As String
Dim ProprietesImages As String
'necessite d'activer la reference Microsoft Scripting RunTime
Dim Fso As Scripting.FileSystemObject
Dim FileItem As Scripting.File

Set objShell = CreateObject('Shell.Application') 'recuperer nom repertoire cible
Set objFolder = objShell.BrowseForFolder(&H0&, 'Choisir un répertoire', &H1&)
CheminTemp = Chemin
On Error Resume Next

Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path
If objFolder.Title = '' Then Chemin = ''
SecuriteSlash = InStr(objFolder.Title, ':')
If SecuriteSlash > 0 Then Chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ''

If Chemin = '' Then
WebBrowser1.Navigate ThisWorkbook.Path & '\\browserImage.html'
Chemin = CheminTemp
Exit Sub
End If

Fichier = Dir(Chemin & '\\*.jpg') 'ciblage des images gif dans ce repertoire

If Fichier = '' Then
Chemin = CheminTemp
Else
ListBox1.Clear
FormatFich = '.jpg'
'creation page html qui s'affichera dans le WebBrowser
Open ThisWorkbook.Path & '\\browserImage.html' For Output As #1
Print #1, '<HTML>'
Print #1, '<HEAD>'
Print #1, '<TITLE>' & Chemin & '</TITLE>'

Do
S = Chemin & '\\' & Fichier
Set Fso = CreateObject('Scripting.FileSystemObject')
Set FileItem = Fso.GetFile(S)
'creation infobulle
ProprietesImages = FileItem.Name & vbLf & FileItem.DateCreated _
& vbLf & Format(FileItem.Size, '#,##0') & ' octets'

'creation vignette et lien hypertexte pour chaque image
X = '<A href='' & S & ''><IMG WIDTH=70 HEIGHT=70 SRC='' & S & _
''ALT='' & ProprietesImages & ''></IMG></A>'
Print #1, X

ListBox1.AddItem Left(Fichier, Len(Fichier) - 4)

Fichier = Dir
Loop Until Fichier = ''

Close #1
End If

WebBrowser1.Navigate ThisWorkbook.Path & '\\browserImage.html'
End Sub

_______________
et je n'arrive pas à paramétrer :
Set objFolder = objShell.BrowseForFolder(&H0&, 'Choisir un répertoire', &H1&)

si, je mets en dur le repertoire en rajoutant un dernier paramètre,
objShell.BrowseForFolder(&H0&, 'Choisir un répertoire', &H1&, 'c:\\mon repertoire'), ça marche, par contre je n'arrive pas à lui prendre un repertoire par défaut.

Merci pour ton aide.
 

Baga

XLDnaute Nouveau
MichelXld,
J'ai très légèremet modifié ton exemple et cela donne ce qui suit (
en utilisant des images GIF, cela fonctionne, mais je n'ai pas pu paramétrer : objShell.BrowseForFolder
) :

Private Sub CommandButton2_Click()
'selectionner un repertoire contenant des images JPG
Dim objShell As Object, objFolder As Object
Dim SecuriteSlash As Integer
Dim Fichier As String, S As String, X As String, CheminTemp As String
Dim ProprietesImages As String
'necessite d'activer la reference Microsoft Scripting RunTime
Dim Fso As Scripting.FileSystemObject
Dim FileItem As Scripting.File
Dim Tableau()
Dim m As Integer, Valeur As Integer, i As Integer
Dim z As Byte
Dim Cible As Variant

Set objShell = CreateObject('Shell.Application') 'recuperer nom repertoire cible
Set objFolder = objShell.BrowseForFolder(&H0&, 'Choisir un répertoire', &H1&, 'H:\\CP\\PLan 2005\\Suivi\\Report')
CheminTemp = Chemin
On Error Resume Next

Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path
If objFolder.Title = '' Then Chemin = ''
SecuriteSlash = InStr(objFolder.Title, ':')
If SecuriteSlash > 0 Then Chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ''

If Chemin = '' Then
WebBrowser1.Navigate ThisWorkbook.Path & '\\browserImage.html'
Chemin = CheminTemp
Exit Sub
End If

Fichier = Dir(Chemin & '\\*.gif') 'ciblage des images gif dans ce repertoire

If Fichier = '' Then
Chemin = CheminTemp
Else
ListBox1.Clear
FormatFich = '.gif'
'--------------------------------------------------
'recuperation nom fichiers images et infos associées
Do
m = m + 1
ReDim Preserve Tableau(4, m)
Tableau(1, m) = Fichier
Tableau(2, m) = Chemin & '\\' & Fichier

S = Chemin & '\\' & Fichier
Set Fso = CreateObject('Scripting.FileSystemObject')
Set FileItem = Fso.GetFile(S)

Tableau(3, m) = FileItem.Name & vbLf & FileItem.DateCreated _
& vbLf & Format(FileItem.Size, '#,##0') & ' octets'

'--------
'gestion des apostrophes dans le nom des fichiers pour la creation
'de la page html
Tableau(2, m) = Application.WorksheetFunction.Substitute(Tableau(2, m), ''', '&#039')
Tableau(3, m) = Application.WorksheetFunction.Substitute(Tableau(3, m), ''', '&#039')
'--------

Tableau(4, m) = Left(FileItem.DateCreated, 10)

Fichier = Dir
Loop Until Fichier = ''
'----------------------------------------------------

'----------------------------------------------------
'trier les données par ordre décroissant de date - nom fichier comprend la date (xxx_aammjj.gif)
Do
Valeur = 0
For i = 1 To m - 1
'Tri décroissant par date de création
'If CDate(Tableau(4, i)) < CDate(Tableau(4, i + 1)) Then

'Tri décroissant par non de fichier
If (Tableau(1, i)) < Tableau(1, i + 1) Then
For z = 1 To 4
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next z
Valeur = 1
End If
Next i
Loop While Valeur = 1


'creation page html qui s'affichera dans le WebBrowser
Open ThisWorkbook.Path & '\\browserImage.html' For Output As #1
Print #1, '<HTML>'
Print #1, '<HEAD>'
Print #1, '<TITLE>' & Chemin & '</TITLE>'

For i = 1 To m
'creation vignette et lien hypertexte pour chaque image
X = '<A href='' & Tableau(2, i) & ''><IMG WIDTH=70 HEIGHT=70 SRC='' & Tableau(2, i) & _
''ALT='' & Tableau(3, i) & ''></IMG></A>'
Print #1, X

ListBox1.AddItem Left(Tableau(1, i), Len(Tableau(1, i)) - 4)
Next i

Close #1
End If

WebBrowser1.Navigate ThisWorkbook.Path & '\\browserImage.html'
End Sub
 

Baga

XLDnaute Nouveau
MichelXld,
J'ai très légèremet modifié ton exemple et cela donne ce qui suit (
en utilisant des images GIF, cela fonctionne, mais je n'ai pas pu paramétrer : objShell.BrowseForFolder
) :

Private Sub CommandButton2_Click()
'selectionner un repertoire contenant des images JPG
Dim objShell As Object, objFolder As Object
Dim SecuriteSlash As Integer
Dim Fichier As String, S As String, X As String, CheminTemp As String
Dim ProprietesImages As String
'necessite d'activer la reference Microsoft Scripting RunTime
Dim Fso As Scripting.FileSystemObject
Dim FileItem As Scripting.File
Dim Tableau()
Dim m As Integer, Valeur As Integer, i As Integer
Dim z As Byte
Dim Cible As Variant

Set objShell = CreateObject('Shell.Application') 'recuperer nom repertoire cible
Set objFolder = objShell.BrowseForFolder(&H0&, 'Choisir un répertoire', &H1&, 'H:\\CP\\PLan 2005\\Suivi\\Report')
CheminTemp = Chemin
On Error Resume Next

Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path
If objFolder.Title = '' Then Chemin = ''
SecuriteSlash = InStr(objFolder.Title, ':')
If SecuriteSlash > 0 Then Chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ''

If Chemin = '' Then
WebBrowser1.Navigate ThisWorkbook.Path & '\\browserImage.html'
Chemin = CheminTemp
Exit Sub
End If

Fichier = Dir(Chemin & '\\*.gif') 'ciblage des images gif dans ce repertoire

If Fichier = '' Then
Chemin = CheminTemp
Else
ListBox1.Clear
FormatFich = '.gif'
'--------------------------------------------------
'recuperation nom fichiers images et infos associées
Do
m = m + 1
ReDim Preserve Tableau(4, m)
Tableau(1, m) = Fichier
Tableau(2, m) = Chemin & '\\' & Fichier

S = Chemin & '\\' & Fichier
Set Fso = CreateObject('Scripting.FileSystemObject')
Set FileItem = Fso.GetFile(S)

Tableau(3, m) = FileItem.Name & vbLf & FileItem.DateCreated _
& vbLf & Format(FileItem.Size, '#,##0') & ' octets'

'--------
'gestion des apostrophes dans le nom des fichiers pour la creation
'de la page html
Tableau(2, m) = Application.WorksheetFunction.Substitute(Tableau(2, m), ''', '&#039')
Tableau(3, m) = Application.WorksheetFunction.Substitute(Tableau(3, m), ''', '&#039')
'--------

Tableau(4, m) = Left(FileItem.DateCreated, 10)

Fichier = Dir
Loop Until Fichier = ''
'----------------------------------------------------

'----------------------------------------------------
'trier les données par ordre décroissant de date - nom fichier comprend la date (xxx_aammjj.gif)
Do
Valeur = 0
For i = 1 To m - 1
'Tri décroissant par date de création
'If CDate(Tableau(4, i)) < CDate(Tableau(4, i + 1)) Then

'Tri décroissant par non de fichier
If (Tableau(1, i)) < Tableau(1, i + 1) Then
For z = 1 To 4
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next z
Valeur = 1
End If
Next i
Loop While Valeur = 1


'creation page html qui s'affichera dans le WebBrowser
Open ThisWorkbook.Path & '\\browserImage.html' For Output As #1
Print #1, '<HTML>'
Print #1, '<HEAD>'
Print #1, '<TITLE>' & Chemin & '</TITLE>'

For i = 1 To m
'creation vignette et lien hypertexte pour chaque image
X = '<A href='' & Tableau(2, i) & ''><IMG WIDTH=70 HEIGHT=70 SRC='' & Tableau(2, i) & _
''ALT='' & Tableau(3, i) & ''></IMG></A>'
Print #1, X

ListBox1.AddItem Left(Tableau(1, i), Len(Tableau(1, i)) - 4)
Next i

Close #1
End If

WebBrowser1.Navigate ThisWorkbook.Path & '\\browserImage.html'
End Sub
 

Statistiques des forums

Discussions
312 697
Messages
2 091 074
Membres
104 752
dernier inscrit
Black_Bovary_