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,
    Merci, content pour vous.

    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. 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. 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. 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,
            Merci, bon dimanche.
            Réponse lundi !
            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,
                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. 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. mon code marche bien mais je ne maitrise pas comme vous les verifications et les simplifications de code^^
                  0
                  1. Bonjour,

                    Merci.
                    Je dois dire que j'ai réétudié votre code et moyennent quelques corrections cela marcherai aussi.
                    0
                    1. merci Le pingou, c'est parfait
                      Ton code à l'air plus "professionel" ^^
                      0
                      1. 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. 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. 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. Bonjour,
                            Eh ou vous déclenchez votre formulaire.... Pas de bouton de commande.... !

                            1