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

Bonjour,

Le blocage a disparu, j'ai eu un message indiquant qu'il manquait une bibliothèque, sans dire laquelle.

Selon vos indications, dans "Outils/référence" J'ai ça.

2025 06 11 100235

il manquerait le pdf creator dans mon pc.
Cela dit, pdf creator est payant et je n'ai pas l'intention de l'acheter.
Le fichier excel sera communiqué à des membres de mon club. Ils n'auront pas forcément installé PDF Creator sur leur pc. :(

Est-ce obligatoire d'avoir le pdf Creator ?

J'ai le pdf de Microsoft.

Sinon, comment mettre ce qu'il manque ?


svp, reprenez mes modifications de ma version.
J'ai modifié les 2 formulaires.

Les textbox de prix du formulaire Ajouter ont été modifiées.
J'ai ajouté le bouton Dupliquer sur le formulaire ModifierHonda en copier-coller le code VBA du bouton "Modifier".
J'ai ajusté le texte de la msgbox de la fonction Dupliquer

Merci d'avance


edit 10h33

Je viens d'installer PDF Creator gratuit depuis cette adresse, trouvée sur le Net.
https://www.clubic.com/telecharger-fiche11085-pdfcreator.html c'est la version 6.0.1
Même après un redémarrage, la bibliothèque est toujours manquante.
Ce qui est étrange, c'est que je n'avais pas ce bug avant... ??

Bonjour.

Mes camarades qui vont utiliser ce fichier Excel n'ont pas PDF Creator et ne VOUDRONS PAS l'installer.

Le fichier fonctionnait bien sans lui avant. C'est juste qu'il ne reconnaît pas les imprimantes "papier".

Merci de respecter ce choix.

Du fait de ces versions buggées chez moi je ne peux pas mesurer les changements accomplis ni même faire évoluer le projet comme je l'entends. cf ma dernière version.

J'y ai passé la matinée à faire ça.

Bonjour à tous,

@Papicx, Avez-vous essayer de désactiver tout simplement les références manquantes ? Dans le pire des cas l'impression ne se fera plus.

Une commande est intégrée directement dans VBA pour imprimer le formulaire, en ce qui me concerne j'opterais pour créer une feuille avec des zones de texte qui reprendraient les information du formulaire, puis faire un export de la feuille vers un fichier Pdf.

Voici un petit exemple :

'@Description "Imprime une feuille au format Pdf."
Public Function ExportFile(ByVal FileName As String, _
                           ByVal PrintArea As String, _
                           Optional ByVal OpenAfterPublish As Boolean = False, _
                           Optional ByVal oSheet As Object _
                           ) As Variant

    ' // Sauvegarde des propriétés du classeur
    ReDim SaveProperties(1) As Variant
    SaveProperties(0) = Application.EnableEvents
    SaveProperties(1) = Application.ScreenUpdating
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    On Error GoTo Catch

    Dim itemSheet As Object
    Set itemSheet = oSheet
    If itemSheet Is Nothing Then Set itemSheet = ThisWorkbook.Worksheets("sys_ExportModel") ' // Le modèle utiliser pour l'impression

    If Not itemSheet Is Nothing Then

        ' // Référence unique du fichier Pdf.
        Const PATTERN As String = "_yyyymmddhhmmss"

        ' // Nom de fichier temporaire
        FileName = FileName & Format(Now, PATTERN)

        Dim FullName As String
        FullName = Environ$("temp") & "\" & FileName & ".pdf"

        With itemSheet
            ' // Sauvegarde des propriétés de la feuille
            ReDim Preserve SaveProperties(2)
            SaveProperties(2) = .Visible
            If .Visible <> xlSheetVisible Then .Visible = xlSheetVisible

            .PageSetup.PrintArea = PrintArea
            .ExportAsFixedFormat Type:=xlTypePDF, _
                                 FileName:=FullName, _
                                 Quality:=xlQualityStandard, IncludeDocProperties:=False, _
                                 IgnorePrintAreas:=False, From:=1, to:=15, OpenAfterPublish:=OpenAfterPublish
            .Visible = SaveProperties(2)
        End With
        ExportFile = FullName

        If Not OpenAfterPublish Then
            On Error Resume Next
            Kill FileName
            On Error GoTo Catch
        Else
            'Todo "Make something"
        End If
    Else
        ExportFile = CVErr(xlErrRef)
    End If

Finally:
    If Not IsEmpty(SaveProperties) Then
        Application.EnableEvents = SaveProperties(0)
        Application.ScreenUpdating = SaveProperties(1)
    End If
    Exit Function

Catch:
    ExportFile = CVErr(xlErrRef)
    Resume Finally
End Function

Et pour l'appel :

Public Sub ExportTest()
    ' // Remplacez PrintModel par le nom de la feuille à exporter. _
    Préférez travailler avec le nom de code de la feuille exemple : sys_PrintModel.CurrentRegion.Address
    Exports.ExportFile "TestExport", _
                       Worksheets("PrintModel").CurrentRegion.Address, _
                       False, _
                       Worksheets("PrintModel")
End Sub

Bonne programmation.

ps. Je n'ai pas testé dans l'ensemble. Faites moi un retour. Please faites le ménage dans votre code...

Bonjour Jean-Paul.

Merci de vouloir m'aider. Je verrai si votre code colle pour ce que je veux.

L'essentiel du code n'est pas de mon cru, et j'ai bien du mal à le comprendre. De là à faire du ménage... je risque de tout foutre en vrac et de ne pas pouvoir réparer.

Concernant l'impression je demandais juste à modifier le code existant pour reconnaître les imprimantes "papier" présentes sur le pc de l'utilisateur, rien de plus.

Ce fichier, une fois terminé, sera mis dans les mains de novices en programmation. Donc de la à leur demander de désactiver une bibliothèque dans le VBA, autant essayer de leur apprendre le chinois. Déjà, pour moi, heureusement que BsAlv m'a indiqué où c'était car je n'aurais jamais trouvé.

Ce sont des utilisateurs de motos, parfois novice en mécanique et encore plus en informatique. Donc vous voyez la hauteur de la marche ?

re et salut Jean Paul,

ces 3 références "PDF..." (2+manquant) n'ont aucune importance ici. Vous pouvez les décocher tout les 3. Il doit y avoir une autre raison. Comme je l'avais dit, mes sélections ne sont pas nécessairement les vôtres, J'ai besoin de certains dans des autres projets. Vous les a ajouté manuellement ou c'était coché automatiquement dans le fichier que j'ai envoyé (pas possible je crois) ?

Bon, même version sans ces références PDF chez moi.

En cas d'erreur, vérifier si l'imprimante active sur vos 3 feuilles et une imprimante active de vous et même mieux, une "vraie" imprimante (HP, Epson, Xerox, Canon, Brother, ...).

@Jean Paul, j'ai lu votre macro et j'ai cherché les endroits avec un "ExportAsFixedFormat" dans le fichier, c'était 1 et je l'ai désactivé. Papicx utilise "ImpressionForm(usf)" dans ModificationHonda pour imprimer son userform vers un pdf, sans ce "ExportAsFixedFormat" avecune imprimante virtuelle. C'est mieux d'oublier tout ce qui concerne "pdf" pour le moment.

Re moi

Alors je n'ai pas tout relu donc ma réponse sera peut-être à côté de la plaque.

Pas besoin de PDF créator pour créer un PDF à partir des données d'une feuille Excel.

1 seule ligne de code suffit (après on peut toujours définir la mise en page, la zone à imprimer, ...) par défaut.

Ce fichier exemple créera un PDF des données de la feuille active dans le même répertoire que celui du fichier initial.

Attention : de manière générale pense à désactiver toutes tes références "manquantes" avant de lancer un quelconque code.

Teste et dis nous.

9creer-pdf.xlsm (17.71 Ko)

@Alex020181, je ne connais pas l'origin de ce référence manquant "PDFCreater".

Moi, je l'ai utilisé (et coché) dans un autre projet, mais ici ce référence, si on fait une recherche pour "pdfcreater",il n'y a rien, il y avait un endroit avec "ExportAsFixedFormat" qui est désactivé maintenant. "PDFCreator" est une de mes imprimantes, mais si je passe ce fichier à un autre, il n'y a pas de tranfert de mon imprimante, je crois. Donc je pense quand on fait un double-clique dans les colonnes C:H le tableau de la feuille "Honda" qu'un userform apparaîtra sans erreur de référence. Cela est pour le moment l'objectif à atteindre.

Cela se fait (normallement) sans problèmes chez vous avec vos références habituelles (et sans PDFcreator) ????

J'ai téléchargé le fichier de la réponse de 10h48.

Le formulaire "modificationhonda" s'ouvre sans souci et les références par défaut (je n'ai rien coché ou décoché) sont

image

Je vous joins le même fichier avec des boutons supplémentaires sur le formulaire "modificationhonda" (sur la droite). Faites votre marché.

A remettre bien sûr à vos besoins avec vos propres zone d'impression et mise en page si besoin.

Teste et dis nous.

Bonjour Alex,

Tu es juste "GÉNIALISSIME" !
C'est pile je que j'avais rêvé !

Bon, là je ne suis pas encore rentré, je verrai ça lundi chez moi, mais déjà ta version est sans blocage.
Seul le premier bouton qui fait que si on annule au moment de l'impression, mais ce n'est pas grave. Je pense que je ne l'utiliserai pas.

je pense que je vais opter pour faire en sorte que presque tous ces choix soient proposés dans une boite de dialogue au moment d'imprimer.
Je verrai ensuite si j'en supprime quelques autres. Mais ta proposition est épatante ! MERCI MERCI

Je vais déjà commencer par introduire les changements que j'avais fais dans ma dernière proposition, du 04 juin version 3, qui a été balayée d'un revers de main.

re, Ça a l'air bien, mais il faut le mettre en pause un instant. Papicx est un peu impatient/irritant tant que ce fichier ne démarre pas correctement.

Edit: salut papicx, je n'avais pas vu votre réaction

Bonjour BsAlv,

C'est toujours un peu décevant d'avoir un fichier bloqué totalement et les propositions faites ignorées.
Maintenant, je sais que ce travail est fastidieux et je vous prie d'accepter mes excuses pour ce moment de mauvaise humeur.

Celui corrigé par Alex fonctionne. Je peux voir à présent les GROS progrès accompli par toi concernant les photos. Je n'ai pas encore pu tout tester, mais je vais le faire.
Là, je m'attache à remettre mes propositions.
Il faudra ensuite rétablir la fonction de sauvegarde, sans dupliquer la ligne dans le bouton SAUVEGARDER. Merci

'*********************************
' 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

Je devrai avoir terminé dans quelques minutes. Le temps de contrôler que ma version fonctionne correctement.

edit 10h50

à première vue, tout fonctionne.
Je n'ai pas tester pour les images.

J'ai fait un test du formulaire AjouterHonda.
J'ai oublié de cliquer sur la date.
Serait il possible que la date, si elle n'est pas renseignée, que ce soit la date du jour qui s'enregistre dans ce cas ?

Dans le formulaire ModifierHonda, plutôt que d'afficher

2025 06 13 102139

"Problème avec" de mettre "fichier manquant"

Merci d'avance.

Content que cela convienne.

J'ai créé plein de boutons pour te laisser la possibilité de choisir puis de reprendre le code de celui qui t'intéresse.

je pense que je vais opter pour faire en sorte que presque tous ces choix soient proposés dans une boite de dialogue au moment d'imprimer.

Je ne vois pas l'utilité de tous les reprendre. Mais bon. C'est toi le demandeur ... De mon point de vue je ne reprendrai que

image

qui te permet rapidement de sélectionner une imprimante puis, si besoin, d'avoir accès à ses paramètres et enfin de lancer l'impression papier ou, si PDF voulu,

image

(Oups j'ai oublié de remplacer le texte par défaut par "GO").

Comme je l'ai précisé il s'agissait de vous montrer ce qui est possible. Après, bien entendu, à vous d'adapter le code pour imprimer exactement ce que vous voulez. J'ai mis une zone à imprimer pour ne pas imprimer des cellules vides mais à vous de définir tout ça (zone d'impression, mise en page, ...). Mon code n'est qu'un début, une direction.

Bonne continuation à vous 2.

Bonjour à vous deux.

J'ai essayé de faire en sorte que le bouton "sauvegarder" du formulaire ModifierHonda fasse une sauvegarde et pas une copie de la ligne, mais je n'y parviens pas.
Si Bart peux me rétablir cela, ça me permettra entre 2 tests de fonctions nouvelles de mettre à jour ma base de données.
Merci d'avance
Là, je suis obligé d'aller supprimer la ligne originale pour ne pas avoir de doublon.

Après avoir dupliqué la ligne, si je supprime la nouvelle ligne, le lien vers la photo est perdu.
Je dis ça car sur le tableau1, dans la colonne image, les nombres d'image se dupliquent. (ça m'arrangeait )
donc les première fois, j'ai supprimé la nouvelle ligne, et j'ai constaté ça. Je dis ça, c'est pour la suite de la programmation, au cas où ce soit utile.

Private Sub CB_Sauvegarder_Click()

     '*********************************
     ' 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

     Dim i, j, Ligne, c, c1, s, L
     aMaster = Range("tabel19").Value2       'mettre en mémoire les données du tableau "tabel19", donc les liens entre l'UF et le tableau "tableau1" de Honda

     With Range("tableau1").ListObject
          If .ListRows.Count = 0 Then Set c = .InsertRowRange Else Set c = .ListRows.Add.Range     'une nouvelle ligne en dessous le tableau "tableau1"
        '  If .ListRows.Count <> 0 Then Set c = .InsertRowRange Else Set c = .ListRows.Add.Range     'met à jour les informations modifiées "tableau1"  BAD
        '  If .ListRows.Count <> 0 Then Set c = .InsertRowRange Else Set c = .ListRows.Add.Range     'met à jour les informations modifiées "tableau1"  BAD
       '   If .ListRows.Count <> 0 Then Set c = .ListRows.Range      'met à jour les informations modifiées "tableau1"  BAD
       '   If .ListRows.Count = 0 Then Set c = .ListRows.Range     ' met à jour les informations modifiées "tableau1" BAD
          For i = 1 To UBound(aMaster)

NB : j'ai ajouté la TextBoxLien dans les 2 formulaires et dans le Tabel19, ligne 19 (il remplace Colonne10 qui était vide).


Je viens de faire quelques test pour les images. Ça fonctionne bien.
Le fichier image s'enregistre dans le sous-dossier prévu (Photos) , c'est top !
En cas de doublon, le fichier est renommé avec un suffixe et on est avisé, c'est top x 2 !
J'ai modifié un peu l'espace prévu pour les images, celles-ci sont plutôt au format paysage. du coup, j'ai déplacé les boutons dessous et élargi les cadres images.

Bonjour,
après qq heures de tests divers, c'est très positif tout ça.
Je vais faire des test pour l'impression et voir ce qu'on garde et ce qu'on met de coté.

Je me suis aperçu que le nom du fichier en première ligne dans le TBL_Images qu'il prenait un préfixe X à chaque fois que je tentais d'ouvrir la ligne.
Il serait judicieux de mettre une limite, je pense.

D'ailleurs, le message box avec les 3 boutons n'a plus de raison d'être puisqu'il est possible à présent de faire la suppression, ou la conservation, du lien depuis le formulaire, ce qui est plus parlant/efficace.


il n'y aurait pas une erreur là ?

Module 2, macro M_AjouterHonda il est question d'ajouter et il est demandé d'afficher le module Modifier ?

À moins que ce soit un job en cours de construction.

Sub M_AjouterHonda(Dummy)                    'Ligne = le numéro de la ligne dans le tableau
     '***************************************************************************
     ' cette macro donne les valeurs sauvegardées dans le tableau1 aux textboxes etc de l'userform
     ' elle reçoit la ligne dans le tableau comme référence
     '***************************************************************************
     Dim TBL19, aHonda, i, j, temp, L
     Unload ModificationHonda
12photos.zip (1.84 Mo)

Voici les 2 fichiers et le dossier Photos avec les quelques photos test réel et les formulaires modifiés.
svp, ne pas détruire les dernières lignes du tableau, ce sont des enregistrements mis à jour.

Merci d'avance

NB : il y a un message d'avertissement à l'ouverture à cause des liens Internet que j'ai mis dans le champs Lien.
répondre par oui ou par non n'a aucune conséquence. il faut l'ignorer tout simplement.

Bonjour,

J'ai fait une batterie de tests pour les impressions.
Voici les résultats :

Le bouton 1 imprime direct le formulaire avec l'imprimante par défaut et ses paramètres par défaut. il est inclus dans le formulaire ModifierHonda, enImprimer direct

Le bouton 2 m'a permet de me rassurer en voyant les toutes les imprimantes installées sur mon pc et de voir celle qui est par défaut. il est inclus dans le formulaire ModifierHonda, Imp.

À priori, le bouton 8 qui permet d'imprimer le formulaire et de choisir l'imprimante était ce qui convenait.
PROBLÈME : le choix de l'imprimante n'est pas pris en compte et c'est l'imprimante par défaut qui prend le job.
C"est dommage car la boite de dialogue est minionette, juste comme il faut.
Pour cette raison, en attendant la correction de ce bug, le bout 8 (Go 8) est au milieu du formulaire et remplacerait le bouton imprimer original (bleu foncé).

J'ai trouvé l'option de l'impression (sur le bouton "IMPRIMER") par capture d'écran géniale. Un peu trop lourde à gérer si on doit en faire une tripotée.
Mais c'est génial, je le répète.

Les boutons 5, 7 et 9 impriment le TABLEAU.
Cette option est intéressante et sera sûrement utile pour imprimer un devis
Le bouton 5 prend bien en compte l'imprimante sélectionnée, et surtout les lignes présentes dans le tableau (qui ne sont pas nécessairement les premières lignes du tableau (cas d'une sélection de pièces par exemple).

Un plantage se produit si, au moment de saisir un nom de fichier, on clique sur "annuler"

il faudra prévoir ce cas pour éviter les plantages.

Private Sub CommandButton5_Click()  ' provoque un plantage si, au moment de saisir un nom de fichier on clique sur "annuler".
    ' Afficher la boite de dialogue d'impression, en précisant le nombre de copies
    ' ce sont les lignes du TABLEAU qui sera imprimé, pas le formulaire.
    ' on peut aussi sélectionner l'imprimante de son choix
Application.Dialogs(xlDialogPrint).Show , , , 1     '  le chiffre "1" est le nombre d'exemplaires

End Sub

Le bouton 9, serait il possible de paramétrer le nom du fichier généré sous la forme "date-heure-.pdf" ?
En combinant les fonctionnalités des 2 boutons, (impression du tableau affiché et du nom en pdf), ça le rendrait intéressant.
Les 2 boutons auront toute leur place au dessus du tableau, tout comme le bouton "Nouveau". Il faut que je retrouve comment faire, mais je devrais retrouver ça.

Le bouton 6, pour une impression en N&B provoque un plantage. L'option ne m'intéresse pas.

Les formulaires ont été redimensionnés, et réorganisés, pour pouvoir être entièrement et correctement imprimés.
Merci de votre aide.

LE point sur lequel j'aimerai que ce soit résolu, est le fait de pouvoir modifier une ligne du tableau via le formulaire sans qu'il me duplique la ligne, comme le nom du bouton l'indique.
Merci d'avance

J'ai retrouvé comment mettre des boutons sur le tableau.
le bouton "Nouvelle ligne" affiche bien le formulaire AjouterHonda, mais pour le bouton "imprimer" là, je manque de connaissances pour qu'il déclenche l'impression que des lignes sélectionnées et des colonnes B5 à L(fin de tableau) .

Merci de votre aide.

NB : sur le formulaire AjouterHonda, j'ai créé un bouton Ajouter BsAlv et remis le mien en service que j'ai titré du coup Ajouter papicx pour que les 2 codes soient bien distincts. ça me permettra de pouvoir ajouter qq références en attendant que l'enregistrement des images fonctionne.

Le sous dossier Photos est le même.

edit 17h32, mon fichier 2025-06-18 comportait un bug.

Hey

De nouveau (un peu) disponible.

Où en êtes-vous ? Besoin de quoi ?

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