Userform : Affichage image aléatoire
Résolu/Fermé
Mabelle60
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
-
12 août 2011 à 11:04
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 - 17 août 2011 à 22:54
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 - 17 août 2011 à 22:54
A voir également:
- Userform : Affichage image aléatoire
- Palette couleur vba userform - Forum VB / VBA
- Erreur d'execution 424 objet requis userform ✓ - Forum Programmation
- Afficher une image dans un userform vba - Forum VB / VBA
- Ouvrir un userform avec un bouton ✓ - Forum VB / VBA
- Calendrier userform vba excel - Forum VB / VBA
6 réponses
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
142
12 août 2011 à 11:39
12 août 2011 à 11:39
Bonjour,
Sans votre fichier, je peux vous transmettre une solution qui devrait fonctionner (je ne l'ai pas testé). Celà évitera de passer par un Select Case et ne fonctionnera que si vos images portent un nom du type img1.jpg, le 1 représentant un nombre quelconque.
Sub ChoixImage()
Dim VAL As Integer
VAL = Worksheets("TEST").Cells(1, 1).Value
UF1.obj1.Picture = LoadPicture("G:\Image\img" & VAL & ".jpg")
End Sub
Répétez ensuite l'opération pour chacun des objets de votre formulaire
Il est peut-être possible d'y incorporer une boucle, ce qui faciliterait la mise en place de la procédure. Toutefois, sans le fichier, je ne peux pas vous le confirmer. SI vous le souhaitez, déposez votre fichier (sans données confidentielles) sur http://www.cijoint.fr et indiquez le lien ici.
Bonne journée
Sans votre fichier, je peux vous transmettre une solution qui devrait fonctionner (je ne l'ai pas testé). Celà évitera de passer par un Select Case et ne fonctionnera que si vos images portent un nom du type img1.jpg, le 1 représentant un nombre quelconque.
Sub ChoixImage()
Dim VAL As Integer
VAL = Worksheets("TEST").Cells(1, 1).Value
UF1.obj1.Picture = LoadPicture("G:\Image\img" & VAL & ".jpg")
End Sub
Répétez ensuite l'opération pour chacun des objets de votre formulaire
Il est peut-être possible d'y incorporer une boucle, ce qui faciliterait la mise en place de la procédure. Toutefois, sans le fichier, je ne peux pas vous le confirmer. SI vous le souhaitez, déposez votre fichier (sans données confidentielles) sur http://www.cijoint.fr et indiquez le lien ici.
Bonne journée
Mabelle60
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
130
12 août 2011 à 13:07
12 août 2011 à 13:07
Merci Beaucoup Syzygy
Je place le lien "ci-joint" ce soir car mon entreprise à bloqué l'accés au site...
Voici le code complet modifié, ce qui m'évite de passer par une feuille de calcul
Private Sub Images_Click()
' Affecte les valeur 1 à 6 pour chaque image et affiche les images
Randomize
Dim VAL1 As Integer
VAL1 = Int(6 * Rnd) + 1
Obj1.Picture = LoadPicture("G:\Images\Img (" & VAL1 & ").jpg")
Dim VAL2 As Integer
VAL2 = Int(6 * Rnd) + 1
Obj2.Picture = LoadPicture("G:\Images\Img (" & VAL2 & ").jpg")
Dim VLA3 As Integer
VAL3 = Int(6 * Rnd) + 1
Obj3.Picture = LoadPicture("G:\Images\Img (" & VAL3 & ").jpg")
Dim VAL4 As Integer
VAL4 = Int(6 * Rnd) + 1
Obj4.Picture = LoadPicture("G:\Images\Img (" & VAL4 & ").jpg")
Dim VAL5 As Integer
VAL5 = Int(6 * Rnd) + 1
Obj5.Picture = LoadPicture("G:\Images\Img (" & VAL5 & ").jpg")
Dim VAL6 As Integer
VAL6 = Int(6 * Rnd) + 1
Obj6.Picture = LoadPicture("G:\Images\Img (" & VAL6 & ").jpg")
End Sub
Sur mon Userform, 6 objets Image nommés Obj1 à Obj6 et 1 bouton nommé Images
Ca fonctionne impec. Il faudra juste que je m'attaque au redimenssionnement des images par la suite. Mais chaque chose en son temps et chaque temps à sa chose.
Je place le lien "ci-joint" ce soir car mon entreprise à bloqué l'accés au site...
Voici le code complet modifié, ce qui m'évite de passer par une feuille de calcul
Private Sub Images_Click()
' Affecte les valeur 1 à 6 pour chaque image et affiche les images
Randomize
Dim VAL1 As Integer
VAL1 = Int(6 * Rnd) + 1
Obj1.Picture = LoadPicture("G:\Images\Img (" & VAL1 & ").jpg")
Dim VAL2 As Integer
VAL2 = Int(6 * Rnd) + 1
Obj2.Picture = LoadPicture("G:\Images\Img (" & VAL2 & ").jpg")
Dim VLA3 As Integer
VAL3 = Int(6 * Rnd) + 1
Obj3.Picture = LoadPicture("G:\Images\Img (" & VAL3 & ").jpg")
Dim VAL4 As Integer
VAL4 = Int(6 * Rnd) + 1
Obj4.Picture = LoadPicture("G:\Images\Img (" & VAL4 & ").jpg")
Dim VAL5 As Integer
VAL5 = Int(6 * Rnd) + 1
Obj5.Picture = LoadPicture("G:\Images\Img (" & VAL5 & ").jpg")
Dim VAL6 As Integer
VAL6 = Int(6 * Rnd) + 1
Obj6.Picture = LoadPicture("G:\Images\Img (" & VAL6 & ").jpg")
End Sub
Sur mon Userform, 6 objets Image nommés Obj1 à Obj6 et 1 bouton nommé Images
Ca fonctionne impec. Il faudra juste que je m'attaque au redimenssionnement des images par la suite. Mais chaque chose en son temps et chaque temps à sa chose.
Mabelle60
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
130
16 août 2011 à 09:55
16 août 2011 à 09:55
Bonjour
Désolé de ne pas avoir fait ce que j'avais promis Vendredi, mais requalification de mes priorités ce WE. Je m'occupe de ça ce soir.
Cdlt
Désolé de ne pas avoir fait ce que j'avais promis Vendredi, mais requalification de mes priorités ce WE. Je m'occupe de ça ce soir.
Cdlt
Mabelle60
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
130
16 août 2011 à 13:51
16 août 2011 à 13:51
Re
Bon ben finalement, je ne vais pas avoir besoin de mettre le fichier joint.
J'ai continué mes recherches de mon côté et ai trouvé le moyen de réduire le code que voici
Private Sub Images_Click()
Randomize
Dim VAL As Integer
For i = 1 To 6
VAL = Int(6 * Rnd) + 1
Controls("Obj" & i).Picture = LoadPicture("G:\Images\Img (" & VAL & ").jpg")
Next i
End Sub
Merci
Bon ben finalement, je ne vais pas avoir besoin de mettre le fichier joint.
J'ai continué mes recherches de mon côté et ai trouvé le moyen de réduire le code que voici
Private Sub Images_Click()
Randomize
Dim VAL As Integer
For i = 1 To 6
VAL = Int(6 * Rnd) + 1
Controls("Obj" & i).Picture = LoadPicture("G:\Images\Img (" & VAL & ").jpg")
Next i
End Sub
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mabelle60
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
130
16 août 2011 à 20:49
16 août 2011 à 20:49
Bonsoir
Voici quand même le fichier juste pour le partage.
Ben ouais! On est pas des sauvages quand même...
Juste préciser que pour le bon fonctionnement, il vous faut 6 images numérotées Img1.jpg à Img6.jpg dans le dossier que vous renommerez en lieu et place de "G:\Images\".
http://www.cijoint.fr/cjlink.php?file=cj201108/cijCPgMzhE.xls
Voici quand même le fichier juste pour le partage.
Ben ouais! On est pas des sauvages quand même...
Juste préciser que pour le bon fonctionnement, il vous faut 6 images numérotées Img1.jpg à Img6.jpg dans le dossier que vous renommerez en lieu et place de "G:\Images\".
http://www.cijoint.fr/cjlink.php?file=cj201108/cijCPgMzhE.xls
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
142
Modifié par Syzygy le 17/08/2011 à 22:57
Modifié par Syzygy le 17/08/2011 à 22:57
Bonsoir,
Désolé, j'ai eu quelques empêchements depuis l'autre jour (suractivité au boulot oblige). Je pensais bien qu'il était possible de faire cela avec une boucle (je souhaitais voir votre fichier pour m'assurer que celà fonctionnerait) et vous y êtes parfaitement arrivée (votre code est parfaitement optimisé à présent).
Merci pour votre retour,
A bientôt sur le forum,
Désolé, j'ai eu quelques empêchements depuis l'autre jour (suractivité au boulot oblige). Je pensais bien qu'il était possible de faire cela avec une boucle (je souhaitais voir votre fichier pour m'assurer que celà fonctionnerait) et vous y êtes parfaitement arrivée (votre code est parfaitement optimisé à présent).
Merci pour votre retour,
A bientôt sur le forum,