Rechercher dans ce blog

Nombre total de pages vues (en milliers)

RECETTES DE CUISINE gérées sous EXCEL

RECETTES de CUISINE gérées sous EXCEL


J'ai récemment répondu à ce sujet sur un forum, et je trouve très intéressant de vous le faire partager.

Il s'agit tout simplement de pouvoir gérer, consulter, modifier vos propres recettes de cuisine par l’intermédiaire d'Excel et tout ceci à l'aide d'un formulaire dont les principes de base ont été évoqués sur ce blog.

Donc si vous le souhaitez, nous allons créer ce fichier pas à pas.

Créez un dossier sur votre bureau ou dans répertoire de votre ordinateur que vous nommerez comme bon vous semble (Ex. Mes recettes)
Dans ce même dossier créez un sous dossier nommé "IMAGES"

Cliquez sur le lien ci-dessous pour télécharger un fichier excel qui va nous servir de base de travail.

FICHIER DE BASE de travail. (Disponible en cliquant sur ce lien)


Dans ce fichier Excel nous avons deux onglets :
a) "RECETTES" composé d'une liste de recettes qui va dans le temps au fil devenir assez importante en fonction des créations et/ou modifications.

b) "LISTE" composé d'informations qui nous seront utiles plus tard pour la composition de notre formulaire d'accès aux recettes.


CONSTRUCTION DU FORMULAIRE

Pour accéder au projet - VBAProject, cliquez simultanément sur Alt + f11

Cet écran apparaît :


Nous allons maintenant insérer un Userform, via le menu Insertion et ensuite Userform, ce qui vous donneras ceci :


Nommez vos Userform1  respectivement dans Caption  GESTION DES RECETTES



Maintenant insérez (comme expliquez "Créer dans son formulaire" dans le présent blog) :
* Deux ComboBox
* Dix TextBox
* Trois CommandButton
* Treize Label

avec la Boîte à outils :

Nommez vos Label respectivement dans Caption : 
* SELECTION DE LA RECETTE => Label1
*   Label2 => Pas de caption
* Type de plat : => Label3
* Nombre de personne : => Label4
* Coût : => Label5
* Temps de préparation : => Label6
* Temps de cuisson  : => Label7
* Conseil VIN :  => Label8
* INGREDIENTS : => Label9
* PREPARATION : => Label10
* Mes observations :  => Label11
* Remarque(s) : => Label12
* Historique invités :  => Label7


Nommez vos CommandButton respectivement dans Caption : 
* QUITTER => CommandButton1
* Modifier ou insérer des annotations => CommandButton2
* Nouvelle RECETTE => CommandButton3
* Insérer RECETTE => CommandButton4
* Pas de caption => CommandButton5
* Pas de caption => CommandButton6

Puis pour terminer  insérez  2 blocs IMAGES de la manière suivante :
* Image1
* Image2


Et disposez l'ensemble des éléments comme ceci comme ceci, si possible ou suivant votre idée de visualisation de votre formulaire.





Mainteant téléchargez ces six images :
DIFFICILE
MOYEN
FACILE
TIRAMISU
MADELEINE AU MIEL
INEXISTANTE


A ce stade créez un dossier sur votre ordinateur et ajoutez-y votre fichier Excel  et toutes les images.
Ce sera plus facile pour la programmation car tous les éléments seront dans le même dossier donc un chemin identique.

PROGRAMMATION DU FORMULAIRE

Accédez au projet - VBAProject, cliquez simultanément sur Alt + f11
Cliquez deux fois sur le formulaire et ajoutez le code suivant dans un premier temps

Option Explicit

Dim Ws As Worksheet
Dim NbLignes As Integer


Private Sub UserForm_Initialize()
Set Ws = Worksheets("RECETTES")
    NbLignes = Ws.Range("A65536").End(xlUp).Row
   
    With Me.ComboBox2
      .ColumnCount = 2
      .ColumnWidths = "-1;0"
    End With
   
   InitCombo1 'Lance le programme InitCombo1 développé ci-desous

 
 End Sub



PROGRAMATION des listes déroulantes (COMBOBOX)

 

Cette petite programmation va initialiser la programmation de recherche via deux listes déroulantes.
A savoir un choix dans la 1ère liste déroulante pour le type de choix de plat et ensuite le nom du plat.



Cela s'appelle un  choix en "Cascade" mais faut-il encore rédiger la programmation.

Donc voici celle de la Combobox1 (A ajouter) :

Sub InitCombo1()
Dim J As Long
Dim Mondico As Object

  Set Mondico = CreateObject("Scripting.dictionary")
  For J = 2 To NbLignes
    Mondico(Ws.Range("A" & J).Value) = ""
  Next J
  With Me.ComboBox1
    .Clear
    If Mondico.Count > 0 Then
      .List = Application.Transpose(Mondico.keys)
    End If
  End With
End Sub



Private Sub ComboBox1_Change()
Dim J As Long

  Nettoyage    'Lance le programme Nettoyage
 
  Me.ComboBox2.Clear   'Efface les données de la combobox2
  If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  With Me.ComboBox2
    For J = 2 To NbLignes
      If Ws.Range("A" & J) = Me.ComboBox1 Then
        .AddItem Ws.Range("B" & J)
        .List(.ListCount - 1, 1) = J
      End If
    Next J
  End With
 
End Sub


Après le choix dans la Combobox1 effectué,  le programme liste toutes les données dans la combobox2 en fonction du critère choisi dans la Combobox1  (Exemple : Liste tous les "entrées froides" dans la Combobox2)

Dès lors que le choix s'effectue dans la Combobox2 (programme suivant : à ajouter), le formulaire se remplie en fonction du choix.


Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim I As Integer

  Nettoyage 'Lance le programme Nettoyage
  If Me.ComboBox2.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
  For I = 1 To 10
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
  Next I

End Sub


 Vous avez peut être remarque dans la programmation Combobox2_Change  la phrase suivante :
 Nettoyage
 
 Ce mot "Nettoyage" va lancer la programmation suivante à savoir effacer toutes les données de toutes les texbox du formulaire.... cela évite d'énumérer ceci : Texbox1 ="" et ainsi de suite, 
Cette programmation englobe  toutes les textbox via le Me.Controls

'Programmation de Nettoyage en effaçant les données de toutes les textbox
Sub Nettoyage()
Dim I As Integer
  For I = 1 To 10
    Me.Controls("TextBox" & I) = ""
  Next I
End Sub


On pourrait aussi programmer toutes les combobox soit Me.Controls("Combobox"&2) = ""  mais là n'est pas le sujet mais simplement l'explication.

Donc déjà à ce stade vous pouvez déjà effectuer un tri entre tous les types de plat et choisir votre plat et les informations remontent dans le formulaire....




PROGRAMATION des boutons de commande (CommandButton)


1) CommandButton1
A ce stade sélectionnez le CommandButton1 et nommez le "QUITTER" (si vous ne l'avez pas effectuer précédemment)

Ensuite Double-cliquez sur ce bouton et ajouter dans la programmation le texte ci-après en vert


Private Sub CommandButton1_Click()

Unload Me

End Sub
 


2) CommandButton2
Sélectionnez le CommandButton2 et nommez le "Modifier ou insérer des annotations" (si vous ne l'avez pas effectuer précédemment)

Ensuite Double-cliquez sur ce bouton et ajouter dans la programmation le texte ci-après en vert


Private Sub CommandButton2_Click()

If MsgBox("Etes-vous certain de vouloir modifier cette recette ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim Ligne As Long
Dim I As Integer
  If Me.ComboBox2.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
  For I = 1 To 10
    If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
    End If
  Next I
    End If

End Sub

PROGRAMATION des intitulés (Label)

Le Label2 ne doit contenir aucun nom dans Caption


Ajoutez le texte suivant dans la programmation Private Sub ComboBox2_Change() :  (Programmé précédemment)

Label2 = Textbox2


ce qui aura pour conséquence de nommer le Label2  avec les informations contenus les texbox2  dès lors que la sélection sera faite dans la Combobox2.


TEXTBOX INVISIBLE

Sélectionnez la Textbox2 et dans propriétés "Visible" mettez sur la même ligne False au lieu de True.

Pour la rendre visible au lancement d'une programmation via un bouton ou autre, il suffira de mettre dans cette programmation :

Textbox2.visible = True


sans pour autant modifier les paramètre des propriétés de la Texbox en question.


AJOUTER UNE IMAGE ou DES IMAGES DANS UN FORMULAIRE


Pour ajouter une image sur votre formulaire, rien de plus simple.


Dans la boite à outils, sélectionnez le bouton image et insérer le bloc sur votre formulaire.



Ensuite pour y ajouter une image : 


* selectionnez votre bloc image  (nommé normalement Image1 si c'est la première image)

* dans le menu propriétés du bloc image, allez à la ligne "Picture" et sélectionnez la case adjacente.

* à la selection un bouton avec 3 petits points apparaît

* cliquez sur ce bouton pour aller chercher l'image que vous souhaitez voir apparaître dans le bloc image.


A ce stade nous avons une image fixe dans le bloc image, mais il y a moyen de changer l'image dans le bloc en fonction du paramètre qui est dans une Combobox, Textbox ou label etc.
 

Donc vous avez déjà inséré dans votre formulaire un bloc image  Image1, Image2


Nous allons effectuer la relation entre Image1 et Image2,   et combobox2 et la Textbox2 


Insérer les lignes suivantes dans la programmation Combobox2_Change()


'programmation pour l'affichage des images dans l'userform : Adresse à modifier si besoin

Dim MyImage As String
Dim MyImage2 As String
Dim Chemin As String


Chemin = ThisWorkbook.Path & "\IMAGES\"

ThisWorkbook.path suivi de &"\IMAGES`" ... renvoie le répertoire où sont stockées vos images.

Pour informations
La propriété ThisWorkbook.FullName retourne le chemin complet du fichier ActiveWorkbook.Name

La propriété ThisWorkbook..Path retourne uniquement le chemin du dossier



   MyImage = ComboBox2.Value

   Image1.Picture = LoadPicture(Chemin & MyImage & ".jpg") 'Modifiez le CHEMIN par le chemin exacte où se trouve l'image  (Ex. :  f:\recettes\   )

  

   MyImage = TextBox2.Value

   Image2.Picture = LoadPicture("CHEMIN" & MyImage & ".jpg") 



Explication :

1) on définit la variable MyImage par  Dim MyImage As String


2) on définit MyImage pour chaque  bloc image

      EX : MyImage = ComboBox2.Value

              MyImage prend la valeur de la Combobox2


3) On va cherche l'image à l'endroit ou celle-ci est stockée

    Ex. :  Chemin


4) Attention le nom de l'image doit être à l'identique que le nom dans la liste de la Combobox2

    TIRAMISU = TIRAMISU.jpg

     DIFFICILE = DIFFICILE.jpg

     

Maintenant dès lors que vous alllez effectuer votre choix dans la Combobox2, les images remonterons dans les blocs images.

1er TEST

 Sélection le formulaire et appuyez sur la touche F5.
Le formulaire s'ouvre, et maintenant faites votre choix exemple  :
1ère liste déroulante =  DESSERT
2ème liste déroulante = MADELEINE AU MIEL

Vous devez obtenir ce résultat.



Pour l'instant tout fonctionne,mais il y encore des imperfections....du style





Nous allons y remédier.

Les textes non visilbles :
Il faut paramétrer les textbox de façon que tout le texte soit visible à l'intérieur, donc :
a) Agrandir la Textbox concernée.
b) Dans propriétés de la Texbox au niveau :
    * de la case Multiline choississez True au lieu de False
    * de la case ScrollBars choisissez  2-fmScrollBarsVertical



Cadrage des visuels dans les images :

En effet les images que vous avez stockées dans le dossier Images n'ont pas forcément le même format en pixel et uniformiser celles-ci avec un logiciel adéquat va vous demander beaucoup de temps. Ce n'est pas nécessaire de passer par cette étape.
Sélectionner votre bloc image et dans la propriété de bloc image à la ligne PictureSizeMode choisir dans la liste déroulante juxtaposé 1-fmPictureSizeModeStretch
Les images seront automatiquement recadrées au format du bloc image.
  
Et voici le résultat



Pour l'instant le formulaire fonctionne uniquement avec un fichier "pré-rempli", donc insérer des nouvelles recettes et aussi apporter des modifications à celles exisantes.

MODIFICATION d'une RECETTE via le FORMULAIRE

Pour ce faire nous allons ajouter la programmation au bouton  Modifier ou insérer des annotations => CommandButton2 "
Double cliquez sur ce CommandButton et insérer le programme suivant entre :

Private Sub CommandButton2_Click()
End Sub


Ajouter le texte ci-après :
If MsgBox("Etes-vous certain de vouloir modifier cette recette ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim Ligne As Long
Dim I As Integer
  If Me.ComboBox2.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
  For I = 1 To 10
    If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
    End If
  Next I
    End If

   

INSERER une nouvelle RECETTE via le FORMULAIRE

1) Pour ce faire nous allons ajouter la programmation au bouton   Nouvelle RECETTE => CommandButton3 

Double cliquez sur ce CommandButton et insérer le code suivant entre :
Private Sub CommandButton3_Click()
End Sub


Ajouter le texte ci-après :
Sheets("RECETTES").Activate 'Active la la feuille "RECETTES"ComboBox1.Visible = False 'Rend invisible la ComboBox1 =>  .visible = FalseComboBox2.Visible = False
ComboBox3.Visible = True
'Rend visible la ComboBox3  => .visible = TrueTextBox12.Visible = True
TextBox2.Visible = True
CommandButton5.Visible = False
CommandButton6.Visible = True



2) Ajouter une nouvelle Combobox ==> Combobox3

a) Rendre invisible cette Combobox (Même principe que la TexBox ... voire explications ci-dessus)
    Positionnez cette ComboBox sur la ComboBox1

b) Dans le programme Private Sub UserForm_Initialize() ajoutez les lignes de codes suivants correspondant à l'alimentation automatique de la liste déroulante (informations collectées sur la feuille "LISTE" en colonne A)

Dim I As Integer
For I = 2 To Sheets("LISTE").Range("A65536").End(xlUp).Row
ComboBox3 = Sheets("LISTE").Range("A" & I)
If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Sheets("LISTE").Range("A" & I)
Next I


3) Insérer un nouveau CommandButton ==> CommandButton4

a) Nommez Insérer RECETTE => CommandButton4

b) Double cliquez sur ce CommandButton et insérer le programme suivant entre :

Private Sub CommandButton4_Click()
End Sub

Ajouter le texte ci-après :
Dim L As Integer
If MsgBox("Etes-vous certain de vouloir INSERER cette nouvelle recette ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("RECETTES").Range("a65536").End(xlUp).Row + 1
'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("A" & L).Value = ComboBox3
'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox12 '
Insère la donnée de la textbox1 dans la colonne B
'et à suivre....

Range("C" & L).Value = TextBox1.Value
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
Range("G" & L).Value = TextBox5
Range("H" & L).Value = TextBox6
Range("I" & L).Value = TextBox7
Range("J" & L).Value = TextBox8
Range("K" & L).Value = TextBox9
Range("L" & L).Value = TextBox10
Range("M" & L).Value = TextBox11
End If

MsgBox ("La nouvelle recette est insérée")
'Vous informe que le présent contact est insérer dans votre tableau Excel.
Unload Me
'Ferme le formulaire
UserForm1.Show
'Ouvre le formulaire



Donc maintenant votre formulaire peut :
1) Créer une nouvelle recette
2) Modifier une recette
3) Rechercher toutes les recettes une à une.


C'est déjà le TOP..... mais on va encore améliorer ce programme.
Vous avez pu le constater, copier du texte dans les Textbox "INGRÉDIENTS" et "PRÉPARATION" est chose facile mais à la modification c'est pas compliqué mais il faut se servir des ascenseurs pour voire le texte si celui-ci est important.

Donc nous allons y remédier et créer un autre formulaire simple mais qui va nous servir à modifier très simplement le texte mais aussi à autre chose.... Surprise !!!

Donc maintenant insérer un deuxième formulaire (UserForm2)

Insérer dans ce formulaire  :
* Une TextBox
* Quatre CommandButton

Nommez vos CommandButton respectivement dans Caption : 
* Validation INGREDIENTS => CommandButton1
* Validation PREPARATION => CommandButton2
* AJOUTER à la LISTE DES COURSES => CommandButton3 
* FERMER => CommandButton4
 

Agrandisser un maximum votre formulaire et ajuster votre TextBox1 presque  au format du formulaire pour donner ceci approximativement, avec les CommandButton tout en bas.

Exemple :


Programmation des CommandButton :

a) CommandButton1  =>  Validation INGREDIENTS
    Double cliquez sur ce CommandButton et insérer le programme suivant entre :

Private Sub CommandButton1_Click()
End Sub

Ajouter le texte ci-après :
Unload Me 'Ferme le formulaire
UserForm1.TextBox6 = TextBox1
'Les données de la TextBox6 de l'UserForm1 seront égales à celles de la Textbox1 du présent formulaire (UserForm2)UserForm1.Show 'Ouvre le l'UserForm1

b) CommandButton2  =>  Validation PREPARATION
    Double cliquez sur ce CommandButton et insérer le programme suivant entre :

Private Sub CommandButto21_Click()
End Sub

Ajouter le texte ci-après :
Unload Me 'Ferme le formulaire
UserForm1.TextBox7 = TextBox1
'Les données de la TextBox7 de l'UserForm1 seront égales à celles de la Textbox1 du présent formulaire (UserForm2) 
UserForm1.Show 'Ouvre le l'UserForm1

c) CommandButton4  =>  Validation PREPARATION
    Double cliquez sur ce CommandButton et insérer le programme suivant entre :

Private Sub CommandButto21_Click()
End Sub
Ajouter le texte ci-après :
Unload Me 'Ferme le formulaire
UserForm1.Show 'Ouvre le l'UserForm1


d) Pour le  CommandButton3 =>   AJOUTER à la LISTE DES COURSES nous y reviendrons plus tard



Maintenant retourner dans l'Userform1 et placer deux CommandButton à côté de la TextBox6 et la TextBox7  pour faire en sorte que :
a) CommandButton5 à côté de la TextBox6
b) CommandButton6 à côté de la TextBox7
Comme ceci :  

Programmation des CommandButton :

a) CommandButton5  
    Double cliquez sur ce CommandButton et insérer le programme suivant entre :

Private Sub CommandButton5_Click()
End Sub

Ajouter le texte ci-après :
Me.Hide
UserForm2.TextBox1 = TextBox6
UserForm2.Caption = "INGREDIENTS"
UserForm2.CommandButton2.Visible = False
UserForm2.Show


b) CommandButton6
    Double cliquez sur ce CommandButton et insérer le programme suivant entre :

Private Sub CommandButton6_Click()
End Sub

Ajouter le texte ci-après :
Me.Hide
UserForm2.TextBox1 = TextBox7
UserForm2.Caption = "PREPARATION"
UserForm2.CommandButton1.Visible = False
UserForm2.CommandButton3.Visible = False
UserForm2.Show


Maintenant en cliquant, dans l'UserForm1, sur les CommandButton5 et 6 vous accéderez sur l'UserForm2 avec tout le texte accessible ou pour y ajouter, ou modifier le texte.
Dans l'UserForm2, en cliquant sur les boutons "Validation ..." les informations de cette UserForm seront insérés dans les textbox respectives dans l'Userform1.
Après avoir effectuer ces manipulations n'oubliez pas de cliquer sur le bouton "MODIFIER" dans l'UserForm1.

Maintenant "CERISE sur le GÂTEAU" ==> Programmation du CommandButton3 =>   AJOUTER à la LISTE DES COURSES

1) Insérer un nouvel onglet dans votre fichier Excel et nommez le "LISTE DES COURSES"
   * Insérer en cellule A1 le texte suivant : LISTE DES COURSES : 
   * Insérer en cellule A2 un espace.
   *  Sélectionnez la cellule A3, puis :
       a) "Click Droit" et choisissez "Format Cellule"
       b) Dans l'onglet "Nombre", choisissez "Personnalisée"
       c) Dans "Type" ajoutez  @*. (Point inclu, ceci permettra de remplir les espaces vides par des points dans la totalité de la cellule après le texte)
   * Sélectionnez la cellule B3, puis :
      a) Insérez la formule suivante  =SI(A3="";"";"r")
      b) Choisissez le type de caractère Wingdings taille 14.

Incrémentez les cellules A3 et B3 vers le base de la feuille et arrêtez vous à la ligne que vous souhaitez.

 
Une fois paramétrer de la sorte ceci devrait vous donner le résultat suivant :
 

 
 Sélectionnez maintenant l'UserForm2 et double-cliquez sur le bouton CommandButton3 =>   AJOUTER à la LISTE DES COURSES   et insérer le programme suivant entre :

Private Sub CommandButton3_Click()
End Sub

Ajouter le texte ci-après :
'Copie la valeur de la textbox1 dans le presse papier
With TextBox1
    .SelStart = 0
    .SelLength = Len(TextBox1)
    .Copy
End With

'Sélectionne l'onglet "LISTE DES COURSES"
Sheets("LISTE DES COURSES").Activate
'Selectionne la première cellule du tableau
Range("a1").Select
'Fait jusqu'à ce que la celluleactive soit vide (=true)
'Descend d'une ligne (mais reste dans la même colonne)
'Sinon recommence

Do Until IsEmpty(ActiveCell) = True
   ActiveCell.Offset(1, 0).Activate
Loop
'Copie en conservant uniquement le texte.
ActiveSheet.PasteSpecial FORMAT:="Texte Unicode", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True

Unload Me
'Ferme le formulaire

 Donc quand :
1) vous cliquez sur le CommandButton5 de l'UserForm1 vous listez les ingrédients dans l'UserForm2
2) vous cliquez sur le CommandButton3 de l'UserForm2 vous listez tous les ingrédient dans l'onglet LISTE DES COURSES

Maintenant imprimez cette feuille et vous êtes prêt pour faire vos courses.


Amusez-vous et bon appétit !!

28 commentaires :

  1. Bonsoir, j'ai essayer de refaire comme vous et j'ai pas réussis.
    Comment faire

    RépondreSupprimer
  2. Bonjour,

    Si vous avez suivi scrupuleusement les étapes cela devrait fonctionner.
    Envoyez moi votre fichier à l'adresse suivante : blog.cellulexcel@gmail.com
    je vous communiquerai votre erreur éventuelle.
    A bientôt
    Emile

    RépondreSupprimer
  3. Olala c'est magnifique tout ça.
    Je vais voir si j'y arrive.
    Mon but est de faire un userform dans mon tableur D'inventaire pour créer une recette l'utilisateur aura des étapes pas à pas et le prix des matières premières j'espère que ça va marcher

    RépondreSupprimer
  4. premier problème:

    Private Sub ComboBox1_Change()
    Sub InitCombo1()
    Dim J As Long
    Dim Mondico As Object

    Set Mondico = CreateObject("Scripting.dictionary")
    For J = 2 To NbLignes
    Mondico(Ws.Range("A" & J).Value) = ""
    Next J
    With Me.ComboBox1
    .Clear
    If Mondico.Count > 0 Then
    .List = Application.Transpose(Mondico.keys)
    End If
    End With

    End Sub


    erreur end sub attendu

    RépondreSupprimer
  5. variable non définie pour ce code

    Private Sub CommandButton3_Click()
    Sheets("RECETTES").Activate 'Active la la feuille "RECETTES"ComboBox1.Visible = False 'Rend invisible la ComboBox1 => .visible = FalseComboBox2.Visible = False
    ComboBox3.Visible = True 'Rend visible la ComboBox3 => .visible = TrueTextBox12.Visible = True
    TextBox2.Visible = True
    CommandButton5.Visible = False
    CommandButton6.Visible = True
    End Sub

    RépondreSupprimer
    Réponses
    1. Bonsoir Julien,
      Aie je ne vous suis pas dans votre progammation qui je pense est basée sur la mienne mais les données et les objets doivent être différents.
      Vous pouvez m'envoyer votre fichier via l'adresse indiquée dans l'onglet CONTACT

      Supprimer
  6. Excusez moi mais je n'y arrive pas ! Ceci ne fonctionne pas avec Windows 10 ! excusez moi !
    Merci quand même.
    Tatiana

    RépondreSupprimer
    Réponses
    1. Cela n'a rien à voir avec Window10 bien au contraire. Il doit y avoir un problème dans votre programmation.
      Faites moi parvenir votre fichier via la page CONTACT sur le présent blog

      Supprimer
  7. Bonsoir, dans votre tuto, vous avez omis d'indiquer comment gérer le cas d'une recette sans image alors que l'image inexistante fait partie des images à télécharger. Pouvez-vous compléter votre tutoriel ?
    Merci d'avance pour votre aide

    RépondreSupprimer
    Réponses
    1. Bonjour,
      Super travail d'Emile
      Je n'ai fait que rajouter quelques lignes dans le cas d'une recette sans image.

      Le chemin est à adapter

      MyImage = ComboBox2.Value

      If Dir("F:\Mes recettes\IMAGES\" & ComboBox2.Value & ".jpg") = "" Then
      Image1.Picture = LoadPicture("F:\Mes recettes\IMAGES\inexistante.jpg")
      Else
      Image1.Picture = LoadPicture("F:\RECETTES\Mes recettes\IMAGES\" & MyImage & ".jpg")
      End If

      Qu'en pensez-vous?


      Cordialement,
      Guy

      Supprimer
    2. C'est bon car dès lors que le chemin est ciblé et que l'image ou les images s'y trouvent.

      Pour ma part je préfère mettre les images dans le même dossier que le fichier Excel d'où le code ThisWorkbook.path

      Exemple :

      Chemin = ThisWorkbook.Path & "\" 'ThisWorkbook.path ... renvoi le répertoire ou est stocké le classeur contenant ton code.
      'La propriété .FullName retourne le chemin complet du fichier ActiveWorkbook.Name
      'La propriété .Path retourne uniquement le chemin du dossier
      'Chemin2 = ThisWorkbook.FullName


      MyImage = ComboBox2.Value
      If Dir(Chemin & MyImage & ".jpg") = "" Then 'Si une erreur (image non présente)
      Image1.Picture = LoadPicture(Chemin & "inexistante.jpg")
      Me.Repaint
      Else
      Image1.Picture = LoadPicture(Chemin & MyImage & ".jpg")
      Me.Repaint
      End If

      Supprimer
    3. Merci pour ces précisions.
      Encore bravo pour ton blog !!!

      Supprimer
  8. Bonjour Emile, super travail ! ...en tant que cuisinier c'est ce que je rechercher depuis longtemps ! ... petite question tout de même : pourquoi ne pas partager le fruit de ton travail en y joignant le fichier avec tous les codes ? cdlt

    RépondreSupprimer
    Réponses
    1. Bonjour Géraldine,

      Pour bénéficier du fichier, contactez moi via l'onglet contact. Merci

      Supprimer
    2. Bonjour Géraldine
      Si tu relis cette page, saches que le fichier est cours d'évolution vers approche professionnelle.
      J'ai un internaute qui m'aide à comprendre votre métier (et qui est le sien) et les subtilités des recettes, semainier des menus, coures et cacule autotmatique des denrées suivant le nombre de personne prévue et etc....

      Supprimer
  9. Bonjour,
    Merci pour ce jolie VBA ! Jolie travail !!

    N'y aurait-il pas un problème dans votre tuto ? Je ne trouve pas à quoi correspond "Private Sub CommandButto21_Click()" idem pour "Range("B" & L).Value = TextBox12 '" et "Range("M" & L).Value = TextBox11".

    Sachant que dans votre tuto il n'y a que 10 Textbox ?

    Merci d'avance :)

    RépondreSupprimer
  10. Salut Emile,
    Je viens d'avoir une nouvelle idée, toujours aussi Dé..le. Et pourquoi pas insérer nos vidéo dans nos recettes?
    Mais la question pour moi est toujours la même:
    -"Comment faire?"
    Et bien si tu l'acceptes, voilà, pour toi une nouvelle mission.

    Bonne soirée en attendant
    Salut

    Jean-Marie

    RépondreSupprimer
  11. bonjour,
    je n'arrive pas à programmer correctement les données. le premier problème vient du "nettoyage". il m'indique que "l'objet spécifié est introuvable" et quand je clique sur débogage, il me surligne " Me.Controls("TextBox" & I) = "" ". j'ai pourtant bien copié et collé toutes les informations que vous avez transmises...
    Merci pour votre réponse

    RépondreSupprimer
  12. Bonjour Emile,

    Bravo et merci pour ce blog et cette idée de livre de recette numérique, que j'adore :D
    Cela fait quelques semaines que j'avance petit à petit sur le tuto, je n'ai pas une grande maitrise de VBA, mais je me suis lancée dans vos indications car je rêve de mettre en place cet outil, je suis à présent arrêtée à "Textbox invisible" où j'ai voulu effectuer un test sans succès.

    J'ai une Erreur de compilation : membre de méthode ou de données introuvable.
    Pourriez vous m'aider à débloquer ce problème ?

    Merci !
    Clem

    RépondreSupprimer
  13. Bonjour,
    Je n'ai pu finir le programme étant stoppé par l'insertion des images !
    Merci si vous pouvez m'envoyer votre programme qui est bien fait !
    Cordialement !

    RépondreSupprimer
    Réponses
    1. Bonjour
      Vous pouvez me contacter via l'onglet CONTACT
      A vous relire

      Supprimer
  14. Bonjour, je rencontre un souci au niveau des images qui ne s'affiche pas pour la bonne recettes , de plus quand les ComboBox son vide l'image reste. Cordialement,

    RépondreSupprimer
  15. Bonjour
    Vous pouvez m'envoyer votre fichier (adresse mail dans onglet CONTACT) et je vous ferai un retour sur les éventuelles erreurs dans votre programmation
    Cordialement

    RépondreSupprimer
  16. Bonjour , et t'il possible d'avoir le fichier que vous avez créer , je n'y comprend rien … Cordialement

    RépondreSupprimer
    Réponses
    1. Bonjour Envoyez-moi un mail à l'adresse mentionnée dans l'onglet CONTACT... Merci

      Supprimer
  17. Bonjour,

    Je profite du confinement pour organiser mon bureau.

    Votre blog tombe à pic pour la gestion de mes recettes et je vos remercie pour le partage de vos connaissances.

    Après enregistrement à la lettre de a procédure, lors du premier test, rien ne s'affiche dans la combobox 2.

    Pouvez-vous me venir en aide ? SVP

    RépondreSupprimer
    Réponses
    1. Re :-)
      J'ai résolu le problème précédent :-)
      Mais je rencontre un autre problème.
      Après voir introduis le commandButton4 et le texte de programmation un message d'erreur apparaît :
      [erreur de compilation / Variable non définie] et le me met TextBox12 en surbrillance.
      Merci de bien vouloir me venir en aide. SVP

      Supprimer
  18. bonsoir,
    Beau travail, mais ça ne marche pas. trop d'erreurs dans le tuto? exemple : la textbox 11 n'exsiste pas. Donc ça bug ! et ce n'est pas le seul bug
    Dès le départ, l'ordre des textbox ne correspond pas à ce qui s'affiche. Il faut les déplacer manuellement.
    Pas de remise à blanc du formulaire quand on veut créer une recette après avoir consulté des recettes existantes.
    Dommage. j'aimerais bien recevoir un fichier qui fonctionne SVP


    RépondreSupprimer

Pour vous aider à publier votre commentaire, voici la marche à suivre :
1) Ecrivez votre texte dans le formulaire de saisie ci-dessus
2) Si vous avez un compte, vous pouvez vous identifier dans la liste déroulante Commentaire
Sinon, vous pouvez saisir votre nom ou pseudo par Nom/URL
3) Vous pouvez, en cliquant sur le lien S'abonner par e-mail, être assuré d'être avisé en cas d'une réponse
4) Cliquer sur Publier enfin.

Le message sera publié après modération.
Merci