Image suivante/précédente

T

Tial

Guest
Bonjour à toutes et tous.

Je rencontre les problèmes suivant :

J'ai deux boutons pour afficher : image précédente et image suivante (voir code ci dessous).

Ces images sont dans un répertoire et nommées 000.JPG, 001.JPG,002.JPG......ainsi de suite.

1)Quand je suis à la dernière image affichée de mon répertoire.....Si je valide image suivante.....

2)Quand je suis à la première image affichée de mon répertoire.....Si je valide image précédente.....

J'ai ce message d'erreur (dans les deux cas):

Erreur d'exécution'-2147024809 (80070057)':
Le fichier spécifié est introuvable.


Serait il possible de mettre un message genre :
1) La dernière image est déja affichée.
2) La première image est déja affichée.
Pour ne plus avoir cette vilaine erreur d'exécution.

Par avance merci à vous.
Tial




Sub SpinButtonChange()
'On Error Resume Next
Dim strImage As String
SpinButtonMax
If SpinButton2.Max < 0 Then
MsgBox 'Pas de photo dans le répertoire !', vbCritical + vbOKOnly
SpinButton2.Value = 0
Else

Do
strImage = String(3 - Len(CStr(SpinButton2.Value)), '0') & SpinButton2.Value & '.JPG'
If strImage = Range('S3').Value Then
SpinButton2.Value = Switch(SpinButton2.Value = SpinButton2.Max, 0, SpinButton2.Value = 0, SpinButton2.Max)
Else
Exit Do
End If
Loop
Feuil1.Shapes('Rectangle 1827').Fill.UserPicture strChemin & strImage
Range('S3').Select
DeProtege
Range('S3').Value = strImage
Protege
End If
End Sub
 

Creepy

XLDnaute Accro
Hello le Forum, Tial,

Plutôt que d’afficher un msgbox qui te dis « dernière image » ou « première image » blablabla, je te propose une solution plus « pro »

Tu fais un test sur ton spinbouton du genre :

if SpinButton.value = SpinButton2.Max then
SpinButton.value = SpinButton.Min

Et tu affiches le première image. Tu fais pareil pour la première, tu affiches la dernière.

Voilà mon idée

@+

Creepy
 
T

Tial

Guest
Salut Creepy

Je ne peut malheureusement joindre de fichier (taille trop importante).
En effet cette fonction fait partie d'une grosse appli.

J'ai évolué un peu, voila ou j'en suis.
Je joint également tout le code pour cette fonction.


Donc, j'ai un bouton 'image précédente' et un bouton 'image suivante'.
De plus, je récupère le nom de l'image en 'S3'.


Niveau problème, j'en suis la:
Tout fonctionne foctionne jusqu'à l'affichage de la dernière image de mon répertoire (dans ce cas, 012.jpg).

Quand j'arrive à la dernière image (012.jpg) et que je clic sur image
suivante j'ai :

Affichage = 012.jpg
'S3' = 013.jpg

et ainsi de suite jusqu'à :

Affichage = 012.jpg
'S3' = 023.jpg

Et la, quelque soit le nombre de clics supplémentaires sur image suivante,
je reste à :

Affichage = 012.jpg
'S3' = 023.jpg

Y' a un truc qui m'échappe.....


Mon code :

Sub SpinButtonMax()
'c'est lui qui dit nombre d'image.
On Error Resume Next
With Application.FileSearch
.NewSearch
.SearchSubFolders = True
.LookIn = 'c:\\MM\\'
.FileName = '0??.JPG'
.Execute
SpinButton2.Max = .FoundFiles.Count - 1
End With
End Sub


Sub SpinButtonChange()
On Error Resume Next
Dim strImage As String
If SpinButton2.Value > SpinButton2.Max Then
SpinButton2.Value = 0
Else
If SpinButton2.Value <= -1 Then
SpinButton2.Value = SpinButton2.Max
End If
End If
strImage = String(3 - Len(CStr(SpinButton2.Value)), '0') & SpinButton2.Value & '.JPG'
Feuil1.Shapes('Rectangle 1827').Fill.UserPicture strChemin & strImage
Range('S3').Select
DeProtege
Range('S3').Value = strImage
Protege
End Sub

Private Sub SpinButton2_SpinDown()
SpinButtonChange
End Sub

Private Sub SpinButton2_SpinUp()
SpinButtonChange
End Sub

Martial
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 959
Membres
103 990
dernier inscrit
lamiadebz