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

Chemin & 'formule magique' & ".jpg" : je bloque ...

6 réponses
Avatar
Alain
Bonjour,

Je me trouve confronté à un problème que je n'arrive pas à résoudre :

J'ai un formulaire avec une image (MyImg) que je voudrais changer à partir
d'un groupe d'otions. J'ai donc créé ce groupe (MyOption) avec des boutons
bascules (Bascule21 à 29) qui ont respectivement les valeurs de 1 à 9 et un
libellé correspondant à un nom de fichier graphique (sans l'extention).

Schématiquement : si je clique sur le premier bouton bascule (Bascule21)
dont le libellé est "Chaton", je voudrais que l'image (MyImg) soit
E:\Graphics\Chaton.jpg

J'avais imaginé une procédure comme :

Private Sub MyOption_AfterUpdate()
MyImg.Picture="E:\Graphics\" & QuelqueChose & ".jpg"
End Sub

Mais je plante lamentablement !

Je génère bien le nom du contôle cliqué et j'intègre la propriété dans une
chaine
"Bascule2" & Right(Str(MyOption), 1) & ".Caption"
mais ne parviens pas à en générer la valeur.
Pour le reste, je ne vous dis pas.

Ce ne me semble pourtant pas sorcier. Je laisse donc décanter en espérant
qu'une bonne âme me donnera la soluce.

Merci d'avance

6 réponses

Avatar
Fabien
Peut - être ?

çà dans un module
Public Function DisplayImage(ctlImageControl As Control, strImagePath As
Variant) As String
On Error GoTo Err_DisplayImage

Dim strResult As String
Dim strDatabasePath As String
Dim intSlashLocation As Integer

With ctlImageControl
If IsNull(strImagePath) Then
.Visible = False
strResult = "No image name specified."
Else
If InStr(1, strImagePath, "") = 0 Then
' Path is relative
strDatabasePath = CurrentProject.FullName
intSlashLocation = InStrRev(strDatabasePath, "",
Len(strDatabasePath))
strDatabasePath = Left(strDatabasePath, intSlashLocation)
strImagePath = strDatabasePath & strImagePath
End If
.Visible = True
.Picture = strImagePath
strResult = "Image found and displayed."
End If
End With

Exit_DisplayImage:
DisplayImage = strResult
Exit Function

Err_DisplayImage:
Select Case Err.Number
Case 2220 ' Can't find the picture.
ctlImageControl.Visible = False
strResult = "Can't find image in the specified name."
Resume Exit_DisplayImage:
Case Else ' Some other error.
MsgBox Err.Number & " " & Err.Description
strResult = "An error occurred displaying image."
Resume Exit_DisplayImage:
End Select
End Function
Public Function DisplayImageWeb(ctlBrowserControl As Control, _
strImagePath As Variant)

On Error GoTo Err_DisplayImage

Dim strDatabasePath As String
Dim intSlashLocation As Integer

With ctlBrowserControl
If IsNull(strImagePath) Then
ElseIf Left(strImagePath, 4) = "http" Then
.Navigate (strImagePath)
Else
If InStr(1, strImagePath, "") = 0 Then
' Path is relative
strDatabasePath = CurrentProject.FullName
intSlashLocation = InStrRev(strDatabasePath, "",
Len(strDatabasePath))
strDatabasePath = Left(strDatabasePath, intSlashLocation)
strImagePath = strDatabasePath & strImagePath
End If
.Navigate (strImagePath)
End If
End With

Exit_DisplayImage:
Exit Function

Err_DisplayImage:
Select Case Err.Number
Case Else
MsgBox Err.Number & " " & Err.Description
Resume Exit_DisplayImage:
End Select
End Function

-------------------------------------------- Fin du
module ---------------------------------
Dans le formulaire
Le formulaire contient un
Champ Fichier : dans lequel on saisie le nom du fichier
Champ Chemin : Chemin d'accés au fichier
Champ ImageFrame de type Image : pour la previsualisation du fichier
Champ TxtImageNote invisible qui peut permettre d'afficher un message suite
a l'affichage.

Private Sub Fichier_AfterUpdate()
CallDisplayImage
End Sub

Private Sub Form_AfterUpdate()
CallDisplayImage
End Sub

Private Sub Form_Current()
CallDisplayImage
End Sub

Private Sub txtImageName_AfterUpdate()
CallDisplayImage
End Sub

Private Sub CallDisplayImage()
Me!TxtImageNote = DisplayImage(Me!ImageFrame, Me!Chemin & Me!Fichier)
End Sub


"Alain" a écrit dans le message de news:

Bonjour,

Je me trouve confronté à un problème que je n'arrive pas à résoudre :

J'ai un formulaire avec une image (MyImg) que je voudrais changer à partir
d'un groupe d'otions. J'ai donc créé ce groupe (MyOption) avec des boutons
bascules (Bascule21 à 29) qui ont respectivement les valeurs de 1 à 9 et
un
libellé correspondant à un nom de fichier graphique (sans l'extention).

Schématiquement : si je clique sur le premier bouton bascule (Bascule21)
dont le libellé est "Chaton", je voudrais que l'image (MyImg) soit
E:GraphicsChaton.jpg

J'avais imaginé une procédure comme :

Private Sub MyOption_AfterUpdate()
MyImg.Picture="E:Graphics" & QuelqueChose & ".jpg"
End Sub

Mais je plante lamentablement !

Je génère bien le nom du contôle cliqué et j'intègre la propriété dans une
chaine
"Bascule2" & Right(Str(MyOption), 1) & ".Caption"
mais ne parviens pas à en générer la valeur.
Pour le reste, je ne vous dis pas.

Ce ne me semble pourtant pas sorcier. Je laisse donc décanter en espérant
qu'une bonne âme me donnera la soluce.

Merci d'avance



Avatar
Alain
Merci Fabien,

La solution que vous me proposez ne me semble pas correspondre à ma
recherche, au delà du fait qu'elle va extremement loin.

Après une pause (j'en avais bien besoin), je suis allé 'farfouiller' sur le
site de M. SENEQUE. J'y ai trouvé quelque chose d'approchant mais à partir
d'étiquettes (http://officesystem.access.free.fr/ex_fonction_unique.htm) ...
J'ai testé et cela marche à merveille ... sauf que, en 'triturant' ce joli
code pour l'adapter à 'mes' boutons bascules, je ne suis pas parvenu au
résultat espéré.

Serais-je plus nul que prévu ? Ah ... j'espère que non ... MAIS j'ai encore
beaucoup à apprendre à l'évidence ... ALORS encore MERCI à Vous et à ce forum
de qualité !

Et peut-être d'autres participants voudront-ils bien se pencher sur mon
'cas' ...

Bien Cordialement
Avatar
Eric
Bonjour Alain,

Le plus simple aurait été de nommer tes fichiers .jpg de 1 à 9
puisqu'ils sont stockés dans un répertoire spécifique.
La ligne devenait :
MyImg.Picture="E:Graphics" & MyOption.Value & ".jpg"

Mais bon, sur ton principe, tu peux faire:
Le controle Image MyImg a pour propriétés, dans l'onglet Format,
Type image : Attaché
Mode affichage : zoom

En adaptant :
Private Sub MyOption_AfterUpdate()
Dim NomFich As String, Chemin As String
' Adapter le nom du chemin et les noms des images
Chemin = "C:Documents and SettingsEricBureauImages"
Select Case MyOption.Value
Case 1
NomFich = "Ste Victoire.jpg"
Case 2
NomFich = "Albertas.jpg"
Case 3
NomFich = "Rotonde.jpg"
Case 4
NomFich = "Vendome.jpg"
End Select
MyImg.Picture = Chemin & NomFich
End Sub



Bonjour,

Je me trouve confronté à un problème que je n'arrive pas à résoudre :

J'ai un formulaire avec une image (MyImg) que je voudrais changer à partir
d'un groupe d'otions. J'ai donc créé ce groupe (MyOption) avec des boutons
bascules (Bascule21 à 29) qui ont respectivement les valeurs de 1 à 9 et un
libellé correspondant à un nom de fichier graphique (sans l'extention).

Schématiquement : si je clique sur le premier bouton bascule (Bascule21)
dont le libellé est "Chaton", je voudrais que l'image (MyImg) soit
E:GraphicsChaton.jpg

J'avais imaginé une procédure comme :

Private Sub MyOption_AfterUpdate()
MyImg.Picture="E:Graphics" & QuelqueChose & ".jpg"
End Sub

Mais je plante lamentablement !

Je génère bien le nom du contôle cliqué et j'intègre la propriété dans une
chaine
"Bascule2" & Right(Str(MyOption), 1) & ".Caption"
mais ne parviens pas à en générer la valeur.
Pour le reste, je ne vous dis pas.

Ce ne me semble pourtant pas sorcier. Je laisse donc décanter en espérant
qu'une bonne âme me donnera la soluce.

Merci d'avance



--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...
Remplacer NomFich = "Ste Victoire.jpg" par NomFich = "Ste Victoire"
(idem pour les autres) et
Remplacer MyImg.Picture = Chemin & NomFich par MyImg.Picture = Chemin &
NomFich & ".jpg"

Ca sert à rien de répeter, dans ton cas, 10 fois la chaine .jpg dans les
noms de fichier ;-)

Bonjour Alain,

Le plus simple aurait été de nommer tes fichiers .jpg de 1 à 9
puisqu'ils sont stockés dans un répertoire spécifique.
La ligne devenait :
MyImg.Picture="E:Graphics" & MyOption.Value & ".jpg"

Mais bon, sur ton principe, tu peux faire:
Le controle Image MyImg a pour propriétés, dans l'onglet Format,
Type image : Attaché
Mode affichage : zoom

En adaptant :
Private Sub MyOption_AfterUpdate()
Dim NomFich As String, Chemin As String
' Adapter le nom du chemin et les noms des images
Chemin = "C:Documents and SettingsEricBureauImages"
Select Case MyOption.Value
Case 1
NomFich = "Ste Victoire.jpg"
Case 2
NomFich = "Albertas.jpg"
Case 3
NomFich = "Rotonde.jpg"
Case 4
NomFich = "Vendome.jpg"
End Select
MyImg.Picture = Chemin & NomFich
End Sub




Bonjour,

Je me trouve confronté à un problème que je n'arrive pas à résoudre :

J'ai un formulaire avec une image (MyImg) que je voudrais changer à
partir d'un groupe d'otions. J'ai donc créé ce groupe (MyOption) avec
des boutons bascules (Bascule21 à 29) qui ont respectivement les
valeurs de 1 à 9 et un libellé correspondant à un nom de fichier
graphique (sans l'extention).

Schématiquement : si je clique sur le premier bouton bascule
(Bascule21) dont le libellé est "Chaton", je voudrais que l'image
(MyImg) soit E:GraphicsChaton.jpg

J'avais imaginé une procédure comme :

Private Sub MyOption_AfterUpdate()
MyImg.Picture="E:Graphics" & QuelqueChose & ".jpg"
End Sub

Mais je plante lamentablement !

Je génère bien le nom du contôle cliqué et j'intègre la propriété dans
une chaine
"Bascule2" & Right(Str(MyOption), 1) & ".Caption"
mais ne parviens pas à en générer la valeur.
Pour le reste, je ne vous dis pas.

Ce ne me semble pourtant pas sorcier. Je laisse donc décanter en
espérant qu'une bonne âme me donnera la soluce.

Merci d'avance





--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Alain
Merci Eric,

Eh oui ! J'avais bien pensé au départ à cette solution bien plus aisée à
mettre en oeuvre. Mais je persiste ... ne serait-ce que pour l'excercice de
style, qui marche avec des étiquettes (cf. précédent post et Bravo à M.
Raymond). Pour la forme, je pourrais certes 'simuler' l'effet d'options avec
les étiquettes (avec en plus la possibilité de 'donner dans le graphique' -
Encore Bravo au site de M. Raymond) mais cela resterait encore assez lourd.

Le problème reste donc encore entier et peut ouvrir d'autres possibilités
(une fois le principe assimilé).

Aussi, j'invite d'autres passionnés et fous-furieux à relever le défi !

Merci encore pour votre réponse si rapide. A bientôt ?

POUR RAPPEL

J'ai un formulaire avec une image (MyImg) que je voudrais changer à partir
d'un groupe d'otions. J'ai donc créé ce groupe (MyOption) avec des boutons
bascules (Bascule21 à 29) qui ont respectivement les valeurs de 1 à 9 et un
libellé correspondant à un nom de fichier graphique (sans l'extention).

Schématiquement : si je clique sur le premier bouton bascule (Bascule21)
dont le libellé est "Chaton", je voudrais que l'image (MyImg) soit
E:GraphicsChaton.jpg

J'avais imaginé une procédure comme :

Private Sub MyOption_AfterUpdate()
MyImg.Picture="E:Graphics" & QuelqueChose & ".jpg"
End Sub

Mais je plante lamentablement !

Je génère bien le nom du contôle cliqué et j'intègre la propriété dans une
chaine
"Bascule2" & Right(Str(MyOption), 1) & ".Caption"
mais ne parviens pas à en générer la valeur.
Pour le reste, je ne vous dis pas.




Avatar
Eric
Bonsoir Alain,

Merci Eric,

Eh oui ! J'avais bien pensé au départ à cette solution bien plus aisée à
mettre en oeuvre.


Je vous proposai 2 solutions et aucune ne semble convenir,
why not !!! mais j'avais lu : "je plante lamentablement"

Mais je persiste ... ne serait-ce que pour l'excercice de
style, qui marche avec des étiquettes (cf. précédent post et Bravo à M.
Raymond). ...


Au delà d'un bel exercice de style, je ne vois pas l'intérêt de
passer par la fonction de Raymond. Qui plus est, cette fonction
ne marche pas, si j'ai bonne mémoire, mais je peux me tromper,
pour les étiquettes associées à des controles (par exemple lors
de l'insertion d'un controle TextBox, une étiquette "associée"
ou "attachée" est créée automatiquement).
D'autre part, vos boutons Radios sont inscrits dans un groupe et
ils ne possèdent pas la propriété Click (ou me trompe-je ?)
alors que c'est le cas si les mêmes boutons sont *indépendants*.

Dans la procédure de Raymond, il s'agit de controles
indépendants contenus dans un container : le formulaire.
Dans votre cas, il s'agit d'un groupe d'options, ce qui n'est
pas traité de la même manière sous Access.
Donc, voir la proposition suivante.

Aussi, j'invite d'autres passionnés et fous-furieux à relever le défi !


Je me lance !
Alors, peut-être cette solution là : ;-)
Elle est beaucoup plus courte !

Private Sub MyOption_AfterUpdate()
Dim NomFich As String, Chemin As String
' Adapter le nom du chemin du repertoire Images
Chemin = "C:Documents and SettingsEricBureauImages"
NomFich = MyOption.Controls.Item(MyOption).Caption & ".jpg"
MyImg.Picture = Chemin & NomFich
End Sub


Amicalement
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr