Mon code ne s'effectue pas tout le temps

Résolu
Bonjour tout le monde,

Je suis en train de me faire un petit fichier excel sous forme de livre de recette.

J'ai 3 combobox (Entrée, Plat, Dessert) contenant les recettes
Quand je sélectionne une recette elle s'affiche dans divers textbox
Tout marche pour l affichage

J'ai néanmoins un soucis avec les combobox.

exemple:
- je sélectionne un dessert
- la recette s'affiche
-je sélectionne ensuite un plat
- tout s'efface mais rien ne s'affiche
-si je sélectionne une deuxième fois le plat, tout s'affiche correctement

voici le code pour la combobox Entree ( les combobox Dessert et Plat sont identiques)


Private Sub CB_Entree_Change()
Worksheets("Entree").Activate
CB_Plat.Value = "Plat"
CB_Dessert.Value = "Dessert"
With Sheets("Entree")
Dim a As Integer
Dim Fichier As String
For a = 1 To 9999
If CB_Entree.Value = Range("A" & a).Value Then
TB_ingredient.Value = Range("E" & a).Value
TB_Recette.Value = Range("F" & a).Value
TB_Nombre.Value = Range("B" & a).Value
TB_Preparation.Value = Range("C" & a).Value
TB_Cuisson.Value = Range("D" & a).Value

Fichier = "C:\Users\Cedric\Desktop\image\" & Range("A" & a).Value & ".jpg"
'Vérifie si le fichier existe.
If Dir(Fichier) <> "" Then
'si le fichier existe, il est chargé pour visualisation.
Image1.Picture = LoadPicture(Fichier)
Else
'Sinon, affiche aucune image.
Image1.Picture = LoadPicture("")
End If

GoTo fin:
End If
Next
fin:
End With
End Sub

Le fichier excel si besoin(images dans un dossier a part qui n'est pas joint)
https://www.cjoint.com/?0JfkMiZfkP5

Merci d'avance pour votre aide

19 réponses

  1. Bonjour,
    Eh ou vous déclenchez votre formulaire.... Pas de bouton de commande.... !

    1
    1. Bonjour,
      En principe votre formulaire est prévu pour afficher une recette. Donc vous devriez avoir une liste déroulante pour choisir entre Entrée, Plat, Dessert et une deuxième qui affiche la liste de choix selon la première....Oui Non.... !

      0
      1. Cela serais peut être mieux en effet.

        Je travaille la dessus

        Merci Le Pingou
        0
        1. Bonjour,
          Merci.
          Réponse dans l'après-midi.
          Salutations.
          Le Pingou
          0
      2. En effet c'est nettement mieux et bien plus visible au niveau du code.
        Qui plus est, le code est générique pour le choix du menu.
        Si cela peut aider voici le code:


        Private Sub Choix_Menu_Click()
        CB_Recette.RowSource = ""
        If Choix_Menu.Value = "Entrée" Then
        CB_Recette.RowSource = "Entrée!A2:A" & Sheets("Entrée").Cells(1, 1).End(xlDown).Row
        ElseIf Choix_Menu.Value = "Plat" Then
        CB_Recette.RowSource = "Plat!A2:A" & Sheets("Plat").Cells(1, 1).End(xlDown).Row
        ElseIf Choix_Menu.Value = "Dessert" Then
        CB_Recette.RowSource = "Dessert!A2:A" & Sheets("Dessert").Cells(1, 1).End(xlDown).Row
        End If
        End Sub

        Private Sub CB_Recette_Change()
        Worksheets(Choix_Menu.Value).Activate
        Dim a As Integer
        Dim Fichier As String
        For a = 1 To 9999
        If CB_Recette.Value = Range("A" & a).Value Then
        TB_ingredient.Value = Range("E" & a).Value
        TB_Recette.Value = Range("F" & a).Value
        TB_Nombre.Value = Range("B" & a).Value
        TB_Preparation.Value = Range("C" & a).Value
        TB_Cuisson.Value = Range("D" & a).Value

        Fichier = "C:\Users\Cedric\Desktop\image\" & Range("A" & a).Value & ".jpg"
        'Vérifie si le fichier existe.
        If Dir(Fichier) <> "" Then
        'si le fichier existe, il est chargé pour visualisation.
        Image1.Picture = LoadPicture(Fichier)
        Else
        'Sinon, affiche aucune image.
        Image1.Picture = LoadPicture("")
        End If
        GoTo fin:
        End If
        Next
        fin:
        End Sub


        Encore merci Le Pingou ;)
        0
        1. merci Le pingou, c'est parfait
          Ton code à l'air plus "professionel" ^^
          0
          1. Bonjour,

            Merci.
            Je dois dire que j'ai réétudié votre code et moyennent quelques corrections cela marcherai aussi.
            0
            1. mon code marche bien mais je ne maitrise pas comme vous les verifications et les simplifications de code^^
              0
              1. j aurai juste une autre question si cela ne vous derange pas.

                J aimerai créé un autre userform pour ajouter des recettes.
                Ce serais un formulaire simple d'ajout.
                Je devrais y arriver mais je ne sais pas comment inclure les images.

                J'aimerai une solution pour importer une photo de recette du web et l enregistrer dans un dossier. Je ne sais pas si il existerai une solution et je ne sais pas par ou commencer.

                Auriez vous une piste svp ?
                0
                1. Bonjour,
                  J'aimerai créer un autre userform pour ajouter des recettes.

                  Le principe est le même que le formulaire existant. Vous pouvez reprendre une partie du formulaire [Userform1], le copier et changer de nom puis supprimer les champs non utilisés.
                  Vous ajoutez 2 boutons de commande (Valider et Annuler). Le [Valider] sera relier à la procédure [Bouton_Valider_Click] dans laquelle vous insérer les instructions pour écrire les données des champs dans les cellules de la feuille adéquates.

                  Je devrais y arriver mais je ne sais pas comment inclure les images.
                  Pour l'image il faut passer par une macro qui permet de choisir l'image dans votre dossier (celui qui contient toutes les images de recette) à insérer. Je me renseigne car je ne connais pas bien.

                  J'aimerai une solution pour importer une photo de recette du web et l'enregistrer dans un dossier. Je ne sais pas s'il existera une solution et je ne sais pas par où commencer.
                  Vous devez le faire manuellement quand c'est possible via enregistre l'image sous ou avec l'outil [Capture] (fourni dans Windows 7, XP ... !) et ensuite l'enregistre dans votre dossier.
                  Salutations.
                  Le Pingou
                  0
              2. Bonjour,
                J'ai corrigé votre code dans le but que vous puissiez voir que tout marche aussi.
                Je vous laisse découvrir les modifications.... !
                Votre fichier : https://www.cjoint.com/?3JfsUVDzjM4
                Concernant votre dernière demande je vous donne une réponse dans la soirée !
                Question, les mêmes champs que le formulaire existant Oui/Non ?

                Salutations.
                Le Pingou
                0
                1. Je viens d'adapter votre code (j'ai juste changer les noms de combobox).
                  Tout est parfait

                  Je link le nouveau fichier avec le squelette du Userform d'enregistrement

                  https://www.cjoint.com/?3JftrfqXMlE

                  Merci pour votre aide et votre temps
                  0
                  1. Bonjour,
                    Merci, bon dimanche.
                    Réponse lundi !
                    0
                    1. Bonjour :)
                      Juste une autre question svp si vous suivez toujours ce fil.

                      Peut on afficher une image dans un userform à partir de son lien internet ?

                      Si c'est possible je pourrais juste me sauvegarder les liens et non les images et les appeler automatiquement dans un code vba.

                      Edit

                      J'ai trouver ce bout de code qui d'apres la personne marcherait

                      ActiveSheet.Pictures.Insert("http://s.tf1.fr/mmdia/i/70/7/2763707tvyhu.png")

                      Je ne sais pas trop comment l'utiliser et si il marche vraiment
                      il est issu de ce fil de discussion
                      https://forums.commentcamarche.net/forum/affich-16179990-macro-excel-pour-afficher-une-image-du-web

                      Reedit ^^

                      Je viens de me rendre compte que cela afficher l'image dans la feuille active du classeur
                      0
                      1. Je fais mon petit chemin.
                        A l 'heure actuelle j'arrive à récupérer l'image sur le net et l'inclure dans une feuille

                        Il me manque plus qu'à copier l'image de la feuille dans le controle image du userform

                        J'avais aussi trouver un code qui apparement était niquel mais cela me demande de le basculer en 64 bits, je ne comprends pas du tout comment y arriver

                        'http://www.ex-designz.net/apidetail.asp?api_id=498
                        Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

                        Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
                        Dim lngRetVal As Long
                        lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
                        If lngRetVal = 0 Then DownloadFile = True
                        End Function

                        Sub essai()
                        DownloadFile "http://www.google.fr/images/srpr/logo3w.png", "c:\mesdoc\google.png"
                        End Sub
                        0
                      2. Bonjour,
                        Juste au passage, que ferai vous lorsque que lien sera supprimer/modifier par le propriétaire....!
                        Plus rien pour vous....!
                        Salutations
                        Le Pingou
                        0
                    2. Bonjour,
                      Très intéressent la lecture de vos messages.
                      Personnellement pour les images je procéderais de cette manière :
                      1.- ajouter un contrôle [Image] dans le formulaire (pour ajouter)
                      2.-ajouter un bouton de commande pour insérer l'image
                      3.-le code déclencher par le bouton vous permet de choisir l'image sur votre PC ou le Web
                      4.-L'immage est insérer sur le formulaire y compris son nom (avec possibilité de modification
                      5.- via le bouton [Valider] enregistrer les données dans la feuille adéquate (entree, plat, dessert) y compris le nom de l'image. Cette dernière sera enregistrée dans votre dossier [Image_recette]

                      0
                      1. Décidément je vous accapare tout votre temps :)
                        C'est rassurant d'avoir un superviseur pour réaliser son projet qui ne donne pas directement les réponses mais donne des possibilitées à suivre. Je peux progresser un peu comme cela :)

                        J'ai bien analyser ce que vous m'avez dit
                        Voici ce que j'ai fais pour l'enregistrement des recettes à l'heure actuelle :

                        - Création du controle image (Image1)
                        - Création d'un bouton de commande (CmdB_Import)
                        -CmdB_Import ouvre l'explorateur de document au dossier ou j'enregistre mes images
                        - Je fais glisser l'image du site internet dans l'explorateur (cela l'enregistre donc dans le dossier sur mon pc)
                        - Je renomme l'image avant de valider l'explorateur (même nom que titre recette)
                        - Je valide l'explorateur en sélectionnant l'image qui s'importe dans mon controle image (Image1)

                        Il ne me manque plus qu'à faire mon code pour enregistrer ma recette (Je ne l'ai pas encore fais mais c'est la prochaine étape)

                        Dans l'idéal j'aimerais automatiser le renommage de mon image en lui donnant le même nom que mon titre recette mais je ne sais pas trop comment faire

                        Voici le fichier actuel
                        https://www.cjoint.com/?3Jgu62oAvCx

                        Merci beaucoup
                        0
                        1. Je viens de regarder votre fichier.
                          Je vous remercie beaucoup, c'est exactement ce que je souhaitais :)

                          Je viens de regarder votre code. C'est bien au de la de mes petites capacités. Je n'y serais pas arriver tout seul.
                          Cela m'aidera un peu à progresser d'analyser votre code.

                          Encore un grand merci Le Pingou :)
                          0
                          1. Bonjour,
                            Merci, content pour vous.

                            0