Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment gerer des images a afficher dans un repertoire ?

19 réponses
Avatar
Alfred WALLACE
bonsoir,
Guru du soir Espoir !
voici ce que j'aimerai obtenir :
dans un formulaire, j'ai un objet "image".
=E0 cot=E9 de cet onglet "image" j'ai 2 boutons "suivante" et
"precedente".
sous l'image, j'ai un "label" qui contiend le nom de l'image.

grace =E0 ces 2 boutons, je voudrais donc parcourir
un ensemble de s'images (100x100). qui sont stock=E9es
pour le moment dans un repertoire.

comment je dois faire pour pouvoir "balayer" toutes les images
qui se trouve dans le meme dossier que mon classeur.

enfin, une fois que j'ai trouver la bonne image, je souhaite
"enregistrer" ce formulaire, afin qu'a la prochaine ouverture
l'image pr=E9c=E9dament choisie soit =E0 nouveau.

voila, c'est un peu "fouilli" mais, toutes les remarques seront
les biens venues !

Jos=E9

10 réponses

1 2
Avatar
isabelle
bonjour Alfred,

voici un exemple avec un SpinButton :

Private Sub SpinButton1_Change()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim MyArray()
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("c:zzx")
Set Files = Dossier.Files
If Files.Count <> 0 Then
If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count Then
Exit Sub
For Each File In Files
x = x + 1
ReDim Preserve MyArray(x)
MyArray(x) = File
Next
End If
ActiveSheet.Image1.Picture = LoadPicture(MyArray(SpinButton1.Value))
ActiveSheet.TextBox1 = MyArray(SpinButton1.Value)
End Sub


isabelle

Alfred WALLACE a écrit :
bonsoir,
Guru du soir Espoir !
voici ce que j'aimerai obtenir :
dans un formulaire, j'ai un objet "image".
à coté de cet onglet "image" j'ai 2 boutons "suivante" et
"precedente".
sous l'image, j'ai un "label" qui contiend le nom de l'image.

grace à ces 2 boutons, je voudrais donc parcourir
un ensemble de s'images (100x100). qui sont stockées
pour le moment dans un repertoire.

comment je dois faire pour pouvoir "balayer" toutes les images
qui se trouve dans le meme dossier que mon classeur.

enfin, une fois que j'ai trouver la bonne image, je souhaite
"enregistrer" ce formulaire, afin qu'a la prochaine ouverture
l'image précédament choisie soit à nouveau.

voila, c'est un peu "fouilli" mais, toutes les remarques seront
les biens venues !

José



Avatar
Fredo P.
Bz et pardon Isabelle, il manquait un EndIf.
"isabelle" a écrit dans le message de
news:ueY%
bonjour Alfred,

voici un exemple avec un SpinButton :



Private Sub SpinButton1_Change()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim MyArray()
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("c:zzx")
Set Files = Dossier.Files
If Files.Count <> 0 Then
If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count Then
Exit Sub
End If
For Each File In Files
x = x + 1
ReDim Preserve MyArray(x)
MyArray(x) = File
Next
End If
ActiveSheet.Image1.Picture = LoadPicture(MyArray(SpinButton1.Value))
ActiveSheet.TextBox1 = MyArray(SpinButton1.Value)
End Sub


isabelle

Alfred WALLACE a écrit :
> bonsoir,
> Guru du soir Espoir !
> voici ce que j'aimerai obtenir :
> dans un formulaire, j'ai un objet "image".
> à coté de cet onglet "image" j'ai 2 boutons "suivante" et
> "precedente".
> sous l'image, j'ai un "label" qui contiend le nom de l'image.
>
> grace à ces 2 boutons, je voudrais donc parcourir
> un ensemble de s'images (100x100). qui sont stockées
> pour le moment dans un repertoire.
>
> comment je dois faire pour pouvoir "balayer" toutes les images
> qui se trouve dans le meme dossier que mon classeur.
>
> enfin, une fois que j'ai trouver la bonne image, je souhaite
> "enregistrer" ce formulaire, afin qu'a la prochaine ouverture
> l'image précédament choisie soit à nouveau.
>
> voila, c'est un peu "fouilli" mais, toutes les remarques seront
> les biens venues !
>
> José
>


Avatar
isabelle
bonjour Fredo,

je n'ai pas mit de End If
vue que j'avais mit sur une seul ligne,
probablement sur deux lors de la copie..

isabelle

Fredo P. a écrit :
Bz et pardon Isabelle, il manquait un EndIf.
"isabelle" a écrit dans le message de
news:ueY%

bonjour Alfred,

voici un exemple avec un SpinButton :




Private Sub SpinButton1_Change()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim MyArray()
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("c:zzx")
Set Files = Dossier.Files
If Files.Count <> 0 Then
If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count Then
Exit Sub
End If
For Each File In Files
x = x + 1
ReDim Preserve MyArray(x)
MyArray(x) = File
Next
End If
ActiveSheet.Image1.Picture = LoadPicture(MyArray(SpinButton1.Value))
ActiveSheet.TextBox1 = MyArray(SpinButton1.Value)
End Sub


isabelle

Alfred WALLACE a écrit :

bonsoir,
Guru du soir Espoir !
voici ce que j'aimerai obtenir :
dans un formulaire, j'ai un objet "image".
à coté de cet onglet "image" j'ai 2 boutons "suivante" et
"precedente".
sous l'image, j'ai un "label" qui contiend le nom de l'image.

grace à ces 2 boutons, je voudrais donc parcourir
un ensemble de s'images (100x100). qui sont stockées
pour le moment dans un repertoire.

comment je dois faire pour pouvoir "balayer" toutes les images
qui se trouve dans le meme dossier que mon classeur.

enfin, une fois que j'ai trouver la bonne image, je souhaite
"enregistrer" ce formulaire, afin qu'a la prochaine ouverture
l'image précédament choisie soit à nouveau.

voila, c'est un peu "fouilli" mais, toutes les remarques seront
les biens venues !

José











Avatar
Alfred WALLACE
bonjour Isabelle, et merci pour ton exemple.
te serait il possible, de le commenter un peu ?
je suis loin d'être à l'aise dans tout çà.

je supose que je doit faire un userform dans le vbe ?
par contre je ne vois pas comment créer le spin button.

merci
José



On 20 nov, 05:24, isabelle wrote:
bonjour Alfred,

voici un exemple avec un SpinButton :

Private Sub SpinButton1_Change()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim MyArray()
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Dossier = fso.GetFolder("c:zzx")
    Set Files = Dossier.Files
    If Files.Count <> 0 Then
    If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count The n
Exit Sub
        For Each File In Files
           x = x + 1
           ReDim Preserve MyArray(x)
           MyArray(x) = File
        Next
    End If
    ActiveSheet.Image1.Picture = LoadPicture(MyArray(SpinButton1.Va lue))
    ActiveSheet.TextBox1 = MyArray(SpinButton1.Value)
End Sub

isabelle


Avatar
isabelle
bonjour José ,

voici le fichier, n'oublie pas de changer dans la macro sur la ligne :
Set Dossier = fso.GetFolder("c:zzx")
le chemin d'accès à ton répertoire photo

sur un click sur le SpinButton du haut tu verra apparaitre la photo sur
l'objet image,

http://cjoint.com/?luie7IMqL7

isabelle

Alfred WALLACE a écrit :
bonjour Isabelle, et merci pour ton exemple.
te serait il possible, de le commenter un peu ?
je suis loin d'être à l'aise dans tout çà.

je supose que je doit faire un userform dans le vbe ?
par contre je ne vois pas comment créer le spin button.

merci
José



On 20 nov, 05:24, isabelle wrote:

bonjour Alfred,

voici un exemple avec un SpinButton :

Private Sub SpinButton1_Change()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim MyArray()
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("c:zzx")
Set Files = Dossier.Files
If Files.Count <> 0 Then
If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count Then
Exit Sub
For Each File In Files
x = x + 1
ReDim Preserve MyArray(x)
MyArray(x) = File
Next
End If
ActiveSheet.Image1.Picture = LoadPicture(MyArray(SpinButton1.Value))
ActiveSheet.TextBox1 = MyArray(SpinButton1.Value)
End Sub

isabelle





Avatar
isabelle
ps/

les 3 controls sur la Feuil1 proviennent de la barre d'outils Control
et la macro est sur la page code de la Feuil1
tu y accede en fesant un click droit sur l'onglet Feuil1 et selectionner
Visualiser le code

isabelle

Alfred WALLACE a écrit :
bonjour Isabelle, et merci pour ton exemple.
te serait il possible, de le commenter un peu ?
je suis loin d'être à l'aise dans tout çà.

je supose que je doit faire un userform dans le vbe ?
par contre je ne vois pas comment créer le spin button.

merci
José



On 20 nov, 05:24, isabelle wrote:

bonjour Alfred,

voici un exemple avec un SpinButton :

Private Sub SpinButton1_Change()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim MyArray()
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("c:zzx")
Set Files = Dossier.Files
If Files.Count <> 0 Then
If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count Then
Exit Sub
For Each File In Files
x = x + 1
ReDim Preserve MyArray(x)
MyArray(x) = File
Next
End If
ActiveSheet.Image1.Picture = LoadPicture(MyArray(SpinButton1.Value))
ActiveSheet.TextBox1 = MyArray(SpinButton1.Value)
End Sub

isabelle





Avatar
Fredo P.
"isabelle" a écrit dans le message de
news:
bonjour Fredo,

je n'ai pas mit de End If
vue que j'avais mit sur une seul ligne,
probablement sur deux lors de la copie..


Milles excuses, je suis impardonnable d'avoir pu douté de toi.!
Avatar
isabelle
allez c'est bon pour un tour en IV65536
dit donc, y'a longtemps que je n'avais un client ;-)
isabelle

Fredo P. a écrit :
"isabelle" a écrit dans le message de
news:

bonjour Fredo,

je n'ai pas mit de End If
vue que j'avais mit sur une seul ligne,
probablement sur deux lors de la copie..



Milles excuses, je suis impardonnable d'avoir pu douté de toi.!





Avatar
Alfred WALLACE
bonjour Isabelle,
merci pour ton aide précieuse !
je me suis permis de "commenter" ton code pour être certain de bien
avoir capté tout çà,
et pour (ofcourse !! lol) peut être exprimer quelques questions :

Private Sub SpinButton1_Change()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim MyArray()


Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("mondossier-qui-va-bien")

'est-ce que je pourrais utiliser ici : chemin = ActiveWorkbook.Path
'pour être dans le dossier du classeur.


Set Files = Dossier.Files

Range("A1").Value = Files.Count ' çà c'est moi qui l'ai rajouter

If Files.Count <> 0 Then ' si il y a des fichiers.

' la je ne comprend pas exactement ce que tu as voulu faire ici
car on sort de la proc
If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count Then
Exit Sub


' ici on charge dans le tableau le nom des images ainsi que leur
chemin
For Each File In Files
x = x + 1
ReDim Preserve MyArray(x) ' ici tu redimentionne le tableau
en gardant ses valeurs
MyArray(x) = File ' tu rajoutes l'entrée chemin et nom du
fichier.
Next
End If

ActiveSheet.Image2.Picture = LoadPicture(MyArray
(SpinButton1.Value)) ' rien de spécial à dire ici
ActiveSheet.TextBox1 = MyArray(SpinButton1.Value) ' rien de
spécial à dire ici
End Sub


Parcontre, je me demande pourquoi tu recharge le tableau à chaque fois
que
le click sur le spin ?

Merci encore pour tes conseils !!!

José (heu voui, alfred c un pseudo)






On 20 nov, 08:26, isabelle wrote:
ps/

les 3 controls sur la Feuil1 proviennent de la barre d'outils Control
et la macro est sur la page code de la Feuil1
tu y accede en fesant un click droit sur l'onglet Feuil1 et selectionner
Visualiser le code

isabelle


Avatar
isabelle
bonjour José,

Alfred WALLACE a écrit :
Set Dossier = fso.GetFolder("mondossier-qui-va-bien")

'est-ce que je pourrais utiliser ici : chemin = ActiveWorkbook.Path
'pour être dans le dossier du classeur.




oui, mais alors il faudra ajouter un test lors de la boucle sur les
fichiers pour vérifier si le file a une extention xls

For Each File In Files

If not Right(File, 3) = "xls" then

' la je ne comprend pas exactement ce que tu as voulu faire ici
car on sort de la proc
If SpinButton1.Value = 0 Or SpinButton1.Value > Files.Count Then
Exit Sub




c'ést une facon de limité l'action Min et Max du SpinButton, j'ai
modifié cette approche dans l'exemple plus bas

Parcontre, je me demande pourquoi tu recharge le tableau à chaque fois
que
le click sur le spin ?



une autre facon de faire serait de charger le tableau à l'ouverture du
fichier et le stoker dans une autre feuille
ceci nous donnerais toutes le adresse des images

Private Sub Workbook_Open()
Dim fso As Object, Dossier As Object
Dim Files As Object, File As Object, x As Integer
Dim MyArray()
Sheets("Feuil2").Range("A:A").ClearContents
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("c:zzx")
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
If Not Right(File, 3) = "xls" Then
x = x + 1
Sheets("Feuil2").Range("A" & x) = File
End If
Next
End If
Sheets("Feuil1").Range("A1").Value =
Sheets("Feuil2").Range("A65536").End(xlUp).Row
Sheets("Feuil1").SpinButton1.Min = 1
Sheets("Feuil1").SpinButton1.Max =
Sheets("Feuil2").Range("A65536").End(xlUp).Row
End Sub


Private Sub SpinButton1_Change()
ActiveSheet.Image2.Picture = LoadPicture(Sheets("Feuil2").Range("A"
& SpinButton1.Value))
ActiveSheet.TextBox1 = Sheets("Feuil2").Range("A" & SpinButton1.Value)
End Sub


isabelle
1 2