Afficher une image différente dans userform selon le texte dans une textbox

Bonsoir Jean-Paul,

le fichier à jour est dans le message du vendredi 11h57 version 2025 H

J'ai fait un copier-coller du code, j'ai bien sûr changer le titre du sub par cb_ajouter_click () et j'ai eu un blocage

2025 05 25 224605

Merci de l'info pour les noms à ne pas attribuer (ne pas mettre d'accent et d'underscore).

Bonsoir à vous deux.

@Alex,

Les boutons Ajouter et supprimer les photos sont sur les formulaires Ajouter et Modifier.
Tu as une bonne idée d'introduire une ComboBox pour sélectionner l'image à faire apparaitre.
J'ai fait un test avec des fichiers .png et .gif, ils n'apparaissent pas. J'avais bien entendu ajouter dans le if la possibilité de les afficher.

@ BsAlv,

Le principe est bon, d'avoir le dossier qui est mémorisé dans le fichier Excel.
Il serait bien que les images soient enregistrées dans un même sous dossier d'où est stocké le fichier Excel pour pouvoir exporter, ou pas, le fichier Excel avec ses images.
L'adresse du dossier source, n'est pas nécessaire. L'image pouvant provenir d'Internet...

Le fichier à bien fonctionné pour mettre une image, le souci est qu'elles ne sont pas redimensionnées ni proposées pour les redimensionner.
Du coup, elles sont au zoom maxi et je ne vois qu'une toute petite partie de l'image.

et, plus gênant, quand je veux revoir la fiche de l'article, j'ai ce message d'erreur. :(

2025 05 25 234814

désolé.

EDIT

L'erreur apparaît sur un article qui n'a pas de référence originale ni de new ref Honda.
C'est cas de la ligne 1309 que je viens de créer pour tester les images.
Le système a de lui-même, donné des valeurs dans ces cellules, ce qu'il ne faut absolument pas car il n'y aura pas toujours les 2 champs renseignés. Ce serait source d'erreur.

En supprimant les lignes dans le tableau TBL_Images et de la cellule dans la colonne BQ (image1), le blocage disparaît.


Pour les couleurs des TextBox de cylindrée et de type, je crois qu'on s'est mal compris, je voulais les couleurs dans les TextBox, pas dans les cellules du tableau1. :(

J'ai fait un test avec des fichiers .png et .gif, ils n'apparaissent pas

Je ne connais pas la compatibilité des extensions des fichiers image acceptés (si vraiment bloquant on peut essayer avec un contrôle type Internet Explorer mais ce serait plus chiant car dépend aussi de la version 32 ou 64 bits du poste utilisateur). Je viens de faire un test avec tous les choix de type d'image que j'ai dans "enregistrer sous" de paint (j'ai repris l'une de tes images et fais "enregistrer sous" pour tester ces formats d'image 1 par 1 :

- BMP --> OK

- GIF --> OK

- JPG --> OK

- TIF --> KO

- PNG --> KO

save as compar

As-tu bien ajouté les extensions comme ceci sur la ligne du If ?

fichier_cours = LCase(Dir(repertoire_global & "\" & repertoire_piece & "\", vbDirectory))

Do While fichier_cours <> ""

    'ajoute ici en minuscules les extensions de fichier image souhaitées et surtout supportées (je ne connais pas les extensions supportées autre que jpg)
    If Right(fichier_cours, 4) = ".jpg" Or Right(fichier_cours, 5) = ".jpeg" Or Right(fichier_cours, 4) = ".bmp" Or Right(fichier_cours, 4) = ".gif" Then

        combobox_liste_images.AddItem fichier_cours

    End If

    fichier_cours = Dir()

Loop

Et pour

Les boutons Ajouter et supprimer les photos sont sur les formulaires Ajouter et Modifier.

Je les ai vu oui mais pas la peine que je les fasse si tu retiens la méthode de BsAlv.

Je n'ai fais que l'affichage de modification. A toi de voir si je continue ou si tu prends l'autre méthode.

PI

Il serait bien que les images soient enregistrées dans un même sous dossier d'où est stocké le fichier Excel pour pouvoir exporter, ou pas, le fichier Excel avec ses images.

Est possible aussi en modifiant un peu BsAlv ou en ajoutant toi même ton image dans ce répertoire avant de la sélectionner via le fichier. Ainsi tu pourras garder les noms des images par ligne. Ou on peut aussi modifier mon code pour faire cette distinction par ligne en plus. C'est vraiment à toi de nous dire.

Je suis bien contant que ma solution "sans prise-de-tête ni complications inutiles'' te convienne bien.

Voici une nouvelle version avec les remarques de ce matin.

J'ai besoin du chemin pour savoir quel fichier je dois montrer, si c'est le dossier lui-même, bon, je pouvais supprimer cette partie, mais cela ne change pas grand chose. Si c'est quelque part dans l'internet, vous faites quoi, sauvegarder cette image sur votre disque dûr?

Bonjour à tous,

@Alex,

effectivement, je n'avais pas "ajusté" le chiffre qui indique le nombre de caractère de l'extension.
en mettant 4, ça fonctionne pour les .gif et les bmp.
J'avais, sans le faire exprès, mis un fichier .bmp de 2 Mo, il s'est affiché sans sourciller ! adapté au cadre de l'image, topissime quoi.

@BsAlv

le chemin où est le fichier Excel est D:/C_X_Pieces_Honda

le chemin où sont les images, est D:/C_X_Pieces_Honda/Photos

Si c'est quelque part dans l'internet, vous faites quoi, sauvegarder cette image sur votre disque dur ?

OUI


J'ai mis les couleurs comme je voulais qu'elles se présentent.
Mais je n'ai pas trouvé comment mettre en gras le X.
Ce que je voulais à propos de la saisie, c'est que quand on saisi au clavier le point ou la virgule (pas depuis le menu déroulant), que ce soit le • qui s'affiche.


il y a un petit bug que je n'ai pas réussi à débusquer.
il y a une lettre D qui s'affiche dans la comboBox typB et une lettre B dans la ComboBox typ D.

2025 05 26 135236

Curieusement, c'est le bon menu déroulant qui se présente.
Peut-être est-ce dû aux noms des ComboBox qui ont des undersore dans leur noms ?

on voit ça sur les fiches qui ont les lettres enregistrées dans le TS

2025 05 26 135309

d'ailleurs, en voulant ouvrir ces fiches, on a une messageBox qui s'affiche avec la lettre B, on fait OK, on a la lettre D ensuite, OK à nouveau et là le formulaire s'ouvre.

2025 05 26 133953 2025 05 26 134015

si je veux mettre une image, ça fonctionne très bien, mais quand je veux ouvrir à nouveau cette fiche, ça plante.

2025 05 26 142906

Il faut supprimer la nouvelle ligne du tableau TBL_Images si on veut pouvoir l'ouvrir.


Les prix n'affichent pas les 2 chiffres après la virgule.
Les prix TTC étaient déjà verrouillés et la tabulation ne les prenaient pas en compte.

2025 05 26 141745 2025 05 26 143319

SVP, remettre l'affichage des prix TTC en mode normal. en grisé, la lecture est difficile. Merci
Mais j'aimerai connaitre comment on fait ça d'ailleurs. Merci d'avance

Je viens de me rendre compte que la saisie des virgules et des points est OK dans les types.
j'en ai profité pour y mettre ma touche perso.

Private Sub CB_XXX_Change(CBx, X)
     '*****************************************************************************
     'macro pour modifier le font ou backcolor d'un combobox et éventuellement changer la virgule et le point
     'applique à ces 11 comboboxes ici dessous
     '*****************************************************************************
     If CBx.Text = "," Or CBx.Text = "." Then CBx.Text = Chr(149)
     If CBx.Text = "-" Then CBx.Text = "X"

(dernière ligne)

j'ai supprimé les choix superflus dans les listes des types ( virgule, point et tiret )


Je viens de trouver d'où venait le problème des ComboBoxtypB et D, l'erreur était dans le tableau Tabel19

Je suis content comme un gosse qui vient de retrouver un jouet oublié ! :))

re,

supér que vous avez trouvé vous-même l'échange des textboxes "B" et "D", c'est ce genre d'erreurs qu'il faut voir avant de mettre en place le total.

Les textboxes "TVA inclu" sont maintenant "locked" au lieu de "disabled", comme ça, ils ne sont plus grisés.

Vous avez trouvez cette macro paramétrisée "CB_XXX_Change avec 2 paramètres, le combobox et la valeur qu'on veut mettre en vert. J'avais le choix oubien ajouter un 3eme classemodule pour ces 12 comboboxes, système Steelson oubien la méthode "old school" que j'ai choisi avec 12 macros,une macro par combobox (par exemple Private Sub ComboBox650_change() avec 2 paramètres) et puis une macro commune qui utilise ces 2 paramètres pour faire 12 fois la même chose. Je suppose que vous comprenez mieux cette méthode "old school" que la méthode "Steelson". Disons que Steelson est plus facile pour les développeurs avancés.

Pour les images, quand vous utilisez le bouton "ajouter" vous avez le choix entre plusiuers types d'images (jpg,jpeg, etc) mais je constate que les PNGs et les BMPs causent des problèmes, surprenant ... .

Bonsoir,

Je vais regarder tout ça. Mais il est tard et je me suis levé très tôt ce matin.

Les textboxes "TVA inclu" sont maintenant "locked" au lieu de "disabled", comme ça, ils ne sont plus grisés.

Merci.
Dans mon message précédent, je demandais COMMENT on fait pour afficher uneTextBox en grisé.
Est-ce la propriété Dragbehavior de la cellule qui fait cela ? ou bien une ligne de code ?


Je n'ai pas pu résister à la curiosité de savoir si ça fonctionnait.
J'ai un peu modifié les couleurs et les tailles et ajouté la possibilité de supprimer l'information si elle est erronée et inconnue.

Select Case UCase(CBx.Text)
          Case " ": CBx.BackColor = RGB(255, 255, 255)    ' case blanche si vide (espace)
          Case "": CBx.BackColor = RGB(255, 255, 255)    ' case blanche si vide (si supprimé via la touche "sup")
          Case "X": CBx.ForeColor = RGB(0, 0, 0): CBx.BackColor = RGB(251, 97, 64): CBx.Font.Bold = True: CBx.Font.Size = 14     ' en gras svp et pour s'amuser un font plus grand.

L'enregistrement des images se fait bien dans le fichier Excel. Bravo !
Dans une version précédente, les images .bmp s'affichaient correctement. quel est le problème rencontré ?
Les images .png ne sont pas supportées. On ne va pas tenter le diable.
est-ce que les image peuvent être sauvegardées dans un sous dossier /Photos ?


quid de l'affichage des 2 chiffres après la virgule ?
Il semble que ce soit un problème d'initialisation à l'ouverture du formulaire puisque les prix s'affichent bien et s'enregistrent correctement.

re,

grisé = la propriété "Enabled" =false, comme ça, le textbox/combobox n'est pas accèssible. Avec la propriété "Locked" false et "Enabled" true, vous avez accès mais vous ne pouvez pas modifier. Dragbehavior, je ne l'ai pas encore utilisé, si je lis l'explication, c'est pour déplacer des choses entre 2 textboxes/comboboxes. Je ne pense pas que vous voulez faire cela ici.

image

avec Select case, si plusieurs valeurs seront traitées de la même manière, vous pouvez les mettre dans une ligne, voir votre exemple

Case " " , "" , "autre", "encore un autre" , "X1" , "X2" ,"X3" : CBx.BackColor = RGB(255, 255, 255)

J'avais essayé une ou plusieurs "BMPs" et "PNGs", si cela fonctionne chez vous, tant mieux. Au début de la macro "" vouv voyez ceci, 2 méthodes du "finfo" (1 des 2 est en commentaire). Le premier vous montrera toutes les images en même temps, pour le 2eme vous choississez l'image par catégorie. A vous le choix, quelle méthode préférez-vous ? Et si les PNGs et/ou BMPs causent des problèmes, vous pouvez les supprimer dans cette liste.

Private Sub CommandButton_AjouterPhoto_Click()
     Dim FileToOpen
     finfo = "Images (*.jpg; *.jpeg; *.gif; *.png; *.bmp), *.jpg; *.jpeg; *.gif; *.png; *.bmp"     'toutes les images ensemble
     'finfo = "Images (*.jpg), *.jpg,(*.jpeg), *.jpeg ,(*.gif), *.gif,(*.png), *.png,(*.bmp), *.bmp"     'catégorie par catégorie
     FileToOpen = Application.GetOpenFilename(finfo)
....

Créer un backup dans un sous dossier "Photo" n'est pas si difficile, juste si ce nom existe déjà, faut-il pousser une question avant de l'écraser ou simplement ajouter un chiffre entre parenthèses ?

Les chiffres, donc si vous ouvrez l'userform avec un nouveau article, le format n'est pas toujours bien mais so on le change, alors il s'adapte bien, c'est ça ?

Parfait !

Merci pour les explications, je verrai ça ce soir.
quand j'ai fais des tests, il y a plusieurs jour, les png ne s'affichaient pas du tout. Je ferai de nouveau l'essai.

Quel genre de problèmes avais tu ? affichage oui/non , dimensions non conformes ? autres ?


avec cette proposition,

Case " " , "" , "autre", "encore un autre" , "X1" , "X2" ,"X3" : CBx.BackColor = RGB(255, 255, 255)

ça me donne l'idée que je devrais pouvoir concaténer le fait que la case soit vide (suppression de la valeur affichée) ou remplacée par une espace pour qu'elle soit sur fond blanc.

Je ferai l'essai ce soir.

re,

si je désactive le "on error resume next" (autrement gestion d'erreur et vous recevez un msgbox avec "problèmes avec ce fichier !!! (png ou bmp ????)"), je vois ceci en essayant d'ouvrir un "PNG" = "image invalide" en néerlandais sans explication

Le "BMP" que j'ai essayé maintenant ne causait pas des problèmes, tant mieux ...

image

Nouveau fichier avec une copie de l'image dans le sousdossier "photo" eventuellement avec un index increment.

Je pense qu'on est au moment où les problèmes majeurs sont résolus et qu'on peut changer dans la ligne elle-même au lieu d'ajouter une nouvelle ligne en dessous le tableau. Ou on fera cela à partir du weekend prochain et on fait encore quelque essais supplémentaires en attendant ?

La dernière colonne "Image1" du "tableau1" vous dit le nombre d'images pour cette ligne. La colonne "Priorité" du "tbl_Images" sert pour créer une séquence ascendant pour monter vos images dans l'userform. Vous pouvez voir cette séquence dans les colonnes M:N de cette feuille.

Bonjour

Effectivement, on arrive à la fin des soucis majeurs.

Il reste le souci d'affichage des prix sans les 2 décimales à l'ouverture du formulaire.

2025 05 26 141745

Pour le formulaire AjouterHonda, étant donné que les noms des TextBox et ComboBox qui comportent un ou des underscore(s) peuvent poser des problèmes inattendus, je suggère de les modifier et de leur donner le même nom que celles du formulaire ModifierHonda. et de mettre le table19 à jour en conséquence, bien entendu.


J'ai modifié cette ligne comme suit (suppression de l'extension .png), car les fichiers .png ne s'affichent pas, donc on va suggérer de choisir un autre format via la MsgBox d'erreur

Finfo = "Images (*.jpg; *.jpeg; *.gif; *.png; *.bmp), *.jpg; *.jpeg; *.gif; *.bmp"     'tutes les images ensemble (les fichiers .png ne sont pas prévus car ils ne s'affichent pas)
.Tag = "erreur"
                    MsgBox "Désolé, le format de l'image n'est pas acceptable.& vbCrLf & Veuillez choisir un fichier avec l'extension .jpg .jpeg .gif ou bien .bmp", vbCritical

J'ai aussi ajouté une ligne qui supprimera, après avoir cliqué sur OK, une mauvaise saisie dans les comboBox

          Case Else: MsgBox CBx.Text, vbInformation, "choix inattendu"
            CBx.Text = ""   ' suppression de la mauvaise saisie dans la ComboBox

Je viens de voir une correction à faire, ou plutôt une correction et une modification.
Modification
: indiquer le nom du fichier image dans le texte et non pas dans la barre de titre de la MgsBox.

Correction : quand je clique sur un article sur lequel tu as mis une image, donc dans ton pc et pas le mien.
Évidemment, le fichier est manquant, on est d'accord.
La MgsBox affiche ça :

2025 05 28 152039

Il serait plus exact d'indiquer que le fichier est manquant. Ce sera parfois le cas quand des utilisateurs auront chargé le fichier Excel sans les photos...

Le fichier image est manquant.
ou bien " le fichier image est manquant dans le sous dossier ' Photos ' ce qui est plus précis encore. "

"Voulez-vous supprimer le lien vers ce fichier image ?" (les utilisateurs lambda seront rares à comprendre la relation entre le fichier Excel et le tableau TB_Images... )

" En enregistrant l'image dans le sous-dossier Photos, ce message d'avertissement ne se présentera plus. "

Enfin, il faudrait que ce soit le bouton Non qui soit activé par défaut, les gens ayant tendance à cliquer trop vite.

Là où c'est plus gênant, c'est qu'après avoir conservé le lien (j'ai donc cliqué sur NON) dans la fiche, si je clique sur le bouton "photo suivante" ou "photo précédente", j'ai ce même message qui se présente. C'est normal mais c'est là toute l'importance de l'affichage par défaut du bouton "NON" . ou alors, il faudrait désactiver ces boutons dans ce cas ? ça risque d'être compliqué.

Les images s'enregistrent bien dans le sous-dossier Photos, BRAVO !

Serait il possible que le nom des fichiers image s'enregistre par le nom concaténé que l'on voit dans le TBL_Image ?

On peut passer au formulaire ajouter et cesser d'ajouter des lignes avec le formulaire Modifier.
stp, dis moi ce que tu changes pour faire cela. Merci (c'est pour comprendre et apprendre).

re,

le système "Steelson" me semble un peu trop rigide pour ces circonstances, j'ai supprimé la partie "change" pour les textboxes numériques. Il avait peut-être un objectif noble, mais je ne l'ai pas compris. Le problème des ",00" à l'initialisation est maintenant résolu dans la macro. J'y ai ajouté des commentaire pourque vous pouvez mieux comprendre ce qui se passe.

Concernant AjouterHonda, j'y vois 2 images au lieu d'un, mais ne serait-il pas plus facile d'utiliser seulement 1 userform "ModificationHonda" et de désactiver/cacher/griser certains éléments s'ils ne sont pas utile quand on ajoute un article. Ajouter une 2eme image a "ModificationHonda" est possible, il me semble. Alors la colonne 3 (ajouterhonda) du tabel19 sert à dire si ce control est active ou pas (donc Oui ou non, eventuellement encore option 3,4,...)

Finfo = "Images (*.jpg; *.jpeg; *.gif; *.png; bmp), *.jpg; *.jpeg; *.gif; *.bmp" 'toutes les images ensemble (les fichiers .png ne sont pas prévus car ils ne s'affichent pas) dans cette ligne, on avait 2 fois ce "png", la partie entre les parenthèses, c'est ce que vous voyez dans le dialogbox qu'excel vous présente, donc vous verrez là encore ce "png" en trop. Puis le 2eme "png" que vous avez bien supprimé, c'est le filtre pour les fichiers qu'on veut comme résultat.

okay pour cette "mauvaise saisie dans les comboBox"

Bon, ce problème avec la réponse avec un fichier qui n'est plus là, pour la formulation de la question, c'est à vous, mon vocabulaire ne suffit pas ici . Avec un "No" le fichier sera supprimé, avec un "oui" le fichier sera déplacé vers le queue duf filtre en ajoutant un "X" à sa priorité (colonne 5) et en commençant de nouveau avec la première image, autrement on est bloqué comme vous l'avez constaté. Il y a encore une 3eme option, mais elle n'est pas encore fonctionnelle. Je ne sais pas si vous voyez une autre/meilleur solution ?

concernant renommer les images avec la concaténé des 3 colonnes, oui, cela est possible sauf ... je pense limité à une trentaine de charactères avec certains charactères interdits (comme : ; , # \ / @ etc) et je suppose ces charactères spéciaux que j'ai vu comme "⌀", je ne suis pas ce qu'excel fera avec ça. Donc ma réponse, à la limite sera oui après supprimation de tous ces charactères speciaux et limité à 30. C'est encore lisible dans ce cas ??? Okay ?

https://www.mtu.edu/umc/services/websites/writing/characters-avoid/

Bonsoir BsAlv.

Là je suis sur mon smartphone, je verrai le fichier plus tard. Dimanche matin probablement. Je suis en route pour qq jours de vacances. Mais j'ai mon pc. ;)

MERCI pour les corrections.

Il faut s'assurer que les prix sont bien enregistrés au format nombre dans le TS.

-------------

Concernant ModifierHonda pour ajouter des articles, je ne suis pas pour l'utiliser dans cette fonction.

Il n'y a pas assez de place pour mettre un deuxième cadre.

On utilisera donc le formulaire AjouterHonda. Même s'il faut que je modifie les noms des textbox. Je n'ai pas eu de réponses concernant les caractères à éviter ou interdits.

J'avais mis 2 cadres pour les images, au cas où nous aurions besoin des 2.

L'idée était que l'utilisateur puisse s'assurer que les 2 images sont bien prise en compte.

Si 1 seul est suffisant, on supprime le 2eme sans hésiter.

Je referai la présentation, si nécessaire.

‐‐-‐--------

Concernant les noms des fichiers, oui, bien sûr on supprime tous les caractères gênants et on limite à 30 caractères.

Seules la NewRefHonda est nécessaire, pas l'originale. Ce sera très bien ainsi.

MERCI d'avance

Le formulaire AjouterHonda est ok pour tous les champs.

Il faut seulement lui ajouter la fonction pour ajouter les images.

je n'ai pas des problèmes avec des autres noms dans la colonne "AjouterHonda" du tableau "Tabel19" mais ces cellules vides sont embêtantes. Avez-vous une version plus récente ou mieux remplie ?

De quelles cellules est il question ?

Je vois que tout avance. Bonne continuation.

Rechercher des sujets similaires à "afficher image differente userform texte textbox"