Afficher une image différente dans userform selon le texte dans une textbox
@Alex.
Est ce que tu comprends sa question au sujet des cellules vides ?
Les champs vides ?
@BsAlv
Merci pour le lien vers la page des caractères interdits. Il apparaît clairement que le caractère ⌀ ne sera pas correctement interprété.
Je viens de télécharger le fichier du 30 mais (appelé 28-V2 ).
Je constate que les chiffres de la colonne J ( champ CYL, comme "cylindrée" des motos ) sont enregistrés au format nombre avec ,00 .
il ne faut pas qu'il soit enregistré ainsi, mais au format texte.
Je vois aussi que les champs des colonnes M, N, O, P, pour ne citer que ceux là, sont au format monétaire avec des € alors que ce sont des prix en Francs.
Il faut qu'ils restent au format nombre simplement, avec les ,00
Je pense que c'est la suppression des lignes dans le Change, qui empêchaient cette anomalie, responsable de cela.
Je vais voir si j'ai le temps de résoudre ça, mais pas aujourd'hui.
EDIT 10h23
Je viens de voir les commentaires au sujet des messages à afficher pour l'enregistrement des images. (Module 2)
Je vais faire des tests et modifier les messages en conséquence.
Je publierai les lignes de codes.
Bonjour,
Voici la correction au sujet de la question.
Answ = MsgBox("Problèmes avec ce fichier " & Chr(34) & "Image" & Chr(34) & vbLf & "Voulez-vous conserver le lien vers ce fichier dans le tableau de la BDD_Images ?" & Chr(34) & "TBL_Images" & Chr(34) & vbLf & vbLf & "Oui, le lien est conservé" & vbLf & "Non, le lien est supprimé.", vbYesNoCancel, aImages(N°))Serait il possible d'indiquer le nom de l'image dans le MsgBox ?
on le voit dans la barre de titre de la MsgBox, mais ce serait plus clair dans le texte lui-même.
J'ai corrigé les colonnes dans le tableau1 (alignement et suppression des signes "€" dans les colonnes où il y a des Francs comme monnaie).
J'ai fait quelques autres corrections mineures dans les commentaires
Problème : si on clique sur OUI, on tourne en rond, la MsgBox se représente sans cesse.
Au sujet des prix, quand je saisi 10.1 comme prix, (par exemple) j'ai une boite de dialogue qui m'indique "1" .
Même comportement si je saisi dans les prix "Adaptable" .
re,
adaptions pour le dernier message, maintenant je regarderai les messages précédents
Re
Non pas du tout. Comme je ne suis plus trop ce fil je ne connais pas vos avancées à tous les 2 et donc je ne connais pas les difficultés que les solutions que vous avez choisies pourraient engendrer et les contraintes qu'elles pourraient engendrer.
De façon générale dans un tableau (et même plus largement dans n'importe quelle table de base de données) il faut toujours s'assurer que la colonne des identifiants est complétée sinon tu ne peux pas relier les informations de la ligne à une pièce précise. Peut-être as-tu des identifiants non remplis dans un de tes tableaux ? Ensuite, en plus de ces identifiants, tu peux également avoir des colonnes obligatoires. Peut-être là aussi as-tu des cellules dans des colonnes de données obligatoires non remplies.
Je suis moins présent sur ce fil puisque vous avancez mais je passerai de temps à autre. Sinon n'hésitez pas à faire signe en MP comme tu l'as déjà fait pour me demander expressément de venir faire un tour.
Bonsoir à tous.
De passage vite fait, sur ce fil.
Serait il possible d'indiquer le nom de l'image dans le MsgBox ?
Si j'ai bien tout compris, on peux récupérer le nom de l'image avec le tableau aImages(N°) donc cela devrait ressembler à cela :
'...
'...
Dim ShortName As String
ShortName = Left$(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".", , vbTextCompare) - 1)
ShortName = ShortName & " - Erreur de fichier"
Dim ErrorMessage As String
ErrorMessage = "Problème avec le fichier image : ""{file}""" & vbNewLine & _
"Voulez-vous conserver le lien vers ce fichier dans le tableau de la BD Images ? ""{table}""" & vbNewLine & vbNewLine & _
"Oui le lien est conservé." & vbNewLine & _
"Non le lien est supprimé." & vbNewLine & _
"Abandon annule les modifications."
ErrorMessage = Replace(ErrorMessage, "{file}", aImages(N°), 1, -1, vbTextCompare) ' // On récupère le nom du fichier.
ErrorMessage = Replace(ErrorMessage, "{table}", "TBL_Images", 1, -1, vbTextCompare) ' // il faudrait plutôt récupèrer le nom du tableau
Dim Answ As VbMsgBoxResult
Answ = MsgBox(ErrorMessage, vbYesNoCancel Or vbCritical Or vbDefaultButton3, ShortName)
'...
'...
Select Case Answ
Case vbYes
'...
'...
Case vbNo
'...
'...
Case vbCancel
'...
'...
End Select
'...
'...Je n'ai mis que la partie du code qui est modifié...
Petites pensées générales :
- Que va-t-il se passer dans ce bout de code dans l'initialisation du formulaire ? Si Evaluate renvoie une erreur, une seule ligne etc..
X = Evaluate("FILTER(Tabel19[ModificationHonda],(Tabel19[Type]=""N"")*(Tabel19[ModificationHonda]<>""""))")
For i = 1 To UBound(X)Il faut toujours prévoir l'imprévisible, même si cela coute du code.
Et en général :
- Mettre Option Explicit en entête des modules
- Déclarer les variables convenablement.
- Utiliser de petites fonctions qui n'auront qu'une seule tache.
- Éviter les accents et autres typographies françaises pour la portabilité.
- Éviter les underscores dans les noms de variables, ceux-ci étant plutôt réservés aux méthodes des contrôles.
Pour les tableaux :
- Utiliser des index
- Créer des fonctions pour ajouter, supprimer , éditer des lignes
- Créer un Pattern Factory pour initialiser les tableaux et colonnes à un seul endroit
re,
j'ai ajouté un début de fonctionnement de l'autre userform "ajouterHonda" mais ils manquent encore quelque noms de textboxes ou comboboxes dans la 3eme colonne du tableau19, pour bien sauvegarder les nouvelles données de cet userform vers le bdd.
Edit : @Jean-Paul, je lis cela demain, maintenant j'arrête.
Okay : je les ai lu, d'accord avec la philosophie
re,
je ne sais pas comment tout est supposé de fonctionner ?
Bonjour à tous,
Je pense que le projet n'est pas finalisé dans sa tête. Le formulaire ModificationHonda comprends une option nouveau, et sauvegarder donc édition je présume. Si c'est le cas alors le formulaire AjoutHonda n'a pas lieux d'être.
De même je vois beaucoup de contrôles qui pourraient être regroupés, ou être sous forme de cases à cocher.
Il n'y a pas de gestion des contrôles, par exemple à l'ouverture du formulaire un clic sur une des flèche de navigation des photos provoque un plantage ce qui est normal puisqu'aucune fiche n'est chargée.
Est-il vraiment nécessaire d'avoir un pléiades de tableaux (Tab_cyl_400, Tab_cyl_500, ...) pour ne charger que trois valeurs ? Un simple :
ComboBoxtypZ.list = VBA.Array("400", ".", "X")Le tout regrouper dans une procédure IniComboList ou autre...
Private Sub CB_Nouveau_Click()
'********************************
'bouton AJOUTER ouvre le formulaire Ajouter
'********************************
Exit Sub
Unload Me
AjouterHonda.Show
End SubCe type de programmation ne devrait pas exister, préférer ajouter un procédure qui initialise les contrôle du formulaire.
Philippe Tulliez a concocté un petit exemple de gestion CRUD pour un formulaire il date un peu mais vous pouvez vous en inspirer, concernant la gestion de l'ajout, édition et suppression de lignes d'un tableau.
Et pour finir, vous faites de la gestion de données pure, alors pourquoi ne pas utiliser un outil adapté, Microsoft Access ou autre, vous arriverez au même résultat sans pratiquement aucunes lignes de code.
MS Acces, ce n'est plus dans mon "comfortzone", je n'y connais rien. L'userform "AjouterHonda", je voulais l'intégrer dans l'autre, mais apparament, on avait besoin de 2 images là. Bon, c'est pourquoi, je commençais à déplacer des macros des userforms versun module avec de variables. Tout fonctionnait pas encore 100%, c'était le but de le faire maintenant, si je reçois des instructions.
Je pense qu'on est évolué trop loin pour arrêter maintenant, mais on verra ce que papicx dira.
ce lien est inspirant
Bonjour à tous.
Pour répondre à la problématique de BsAlv au sujet des textbox en trop dans AjouterHonda il y a ces 2 là à supprimer dans le tableau19
TextBox_cylindrée ligne 9
TextBox_Modèles ligne 10.
Ok pour regrouper les listes dont parle Jean-Claude.
Si je ne l'ai pas fait c'est
que je ne savais pas le faire, tout simplement. Comme beaucoup de choses d'ailleurs. D'où mes demandes d'aide.
Arf, la photo vient de se mettre après 2 minutes de chargement.
Je suis sur mon phone là. C'est compliqué. + réseau faible du camping. lol
Initialement, quand on ouvre le formulaire Ajouter, ça ferme le ModifierHonda. Svp, conserver cela. Merciiiiiiii
A+ j'ai une visite à faire. Je suis en vacances.
Bonne journée à vous.
une nouvelle version surtout pour les images
PS. je me demandais si le "printout" d'un userform, si cela fonctionne ?
Le bouton "imprimer" déclenche bien le fonctionnement d'impression mais, contrairement à ce qui était dit dans le tutoriel de ce programme, il ne reconnaît pas mon imprimante par défaut. Il imprime bien en pdf.
C'est bien la réponse à ta question ?
oui et non,
j'ai utilisé ce bouton et la macro fait quelque chose, donc crée un pdf, mais je n'ai aucun idée où, dans quel dossier.
Donc, dans modificationHonda, j'ai fait quelque chose pour avoir la même chose, mais je ne sais pas si cela fonctionne (sur un phone) ?
Autrement, disons que ce sont vos vacances et on se tait pendant quelques jours
Quand on clique sur "imprimer" il faut ensuite taper sur le chiffre 0 pour sélectionner l'impimante .pdf
Pour la destination de l'enregistrement, c'est là où tu veux sur ton pc. Il faut donner un nom à ton fichier.
Mis à part le fait qu'il ne détecte pas mon imprimante Canon, pour le pdf ça marche bien.
Pour une impression sur papier je suis donc obligé d'enregistrer d'abord en pdf et ensuite, via Windows, sélectionner le fichier, l'ouvrir et l'imprimer grâce à ma Canon. 🙂
Stp, on en est a faire en sorte que le formulaire AjouterHonda puisse enregistrer les photos.
Ne touche rien aux prix, ce formulaire fonctionne bien ainsi.
remettre le bouton "modifier" à sa fonction initiale (à moins que tu n'ais pas terminé).
À bien y réfléchir, le bouton actuel de "Modifier" pourrait être renommer par "Dupliquer" et j'ajouterai un autre bouton "Modifier" pour y mettre sa fonction initiale qui est de modifier une ligne existante.
Les 2 fonctionnalités étant utiles.
Bonjour la version de vendredi à 10h48 provoque un bug à l'ouverture. On ne peut pas s'en servir du tout.
(elle aurait du s'appeler) honda-2025-c-bsalv-2025-06-06.zip
NB : j'ai bien mis un sous-dossier "Photos" sous ce fichier, mais ça ne change rien.
La version précédente de jeudi ne fonctionne pas non plus. Même bug.
honda-2025-c-bsalv-2025-06-05.zip
La version 4 fonctionne. Elle ne provoque pas de bug à l'ouverture par double-clic.
Je suis donc reparti de cette version, que j'ai nommée : honda-2025-c-bsalv-2025-06-04_V2
Dans cette version, j'ai fait les modifications suivantes :
- suppression des 2 lignes, 9 et 10, dans le tabel19 , du formulaire AjouterHonda
- la colonne "R" du TS a été renommée Lien et dans le tabel19 aussi
- modification du bouton "Sauvegarder" par "Dupliquer" et de son code VBA (nom de la fonction)
- ajout du nouveau bouton "Sauvegarder" et de son code VBA
- réactivation du bouton "Nouveau" dans le formulaire ModifierHonda
- réactivation du bouton "Imprimer"
'*********************************
' bouton SAUVEGARDER
'*********************************
'pour le moment, on ajoute les données comme une nouvelle ligne, raison de précaution
' svp, rétablir la fonction de sauvegarde, sans dupliquer la ligne. Merci
comme je ne sais pas comment ça fonctionne et que je n'ai pas envie de tout planter, je te laisse la main.
stp, si tu peux me mettre les lignes en commentaire et/ou m'expliquer comment ça fonctionne, je suis preneur des informations. Merci d'avance
il faut contrôler les enregistrement du formulaire Ajouter, je vois que qq cellules ne vont pas dans les bonnes colonnes.
Faute de temps à cet instant, je le mets ainsi, non fini.
Bonjour,
J'ai corrigé le bug d'enregistrement sur les bonnes colonnes à présent, c'est ok.
petit bug encore, les prix TTC s'affichent bien sur le formulaire mais pas dans le TS.
Je n'ai pas vérifié mais il me semble que le petit bug du "1" qui s'affichait dans une boite de dialogue quand on saisissait un prix comme " 4.5" doit être présent.
re,
ces choses étaient résolu dans la version avec ce bug. C'est pourquoi je cherche plutôt de trouver le bug, que de recommencer avec quelque versions plus anciennes. Si vous faites ce double-clicque, vous recevez cette message, mais si vous allez voir la liste de références dans le VBA-editeur, Extra>references on vous indique là une référence manquante ? (ici dessous mes références cochés, les vôtres ne sont pas nécessairement tous les mêmes,mais en dessous,il n'y a pas une ligne "MANQUANT ...."
Vous avez lesquelles cochées ?
dernière version (rien modifié depuis mais pour avoir la même version)