Problème affichage résultat de recherche d'un formulaire

Bonjour à tous et toutes. J'ai pas mal avancé dans mon petit programme de gestion de recettes mais je bloque sur un certain point.

Voici la situation: grâce à vous, j'ai pu créer un formulaire de recettes (issu d'un tableau excel) permettant de lister l'ensemble de recettes de mon tableau. Sur ces faits, j'ai créé un deuxième formulaire (pour l'instant non définitif) permettant de faire la recherche d'un ingrédient à partir d'une inputbox qui liste l'ensemble de mes recettes à partir de la méthode find et findnext. Ces résultats sont répertoriés dans un tableau de résultat que j'ai nommé tableau.

(A terme, je voudrais pouvoir sélectionner plusieurs ingrédients dans ma liste d'ingrédients déjà affichée mais je n'arrive pas là non plus mais je n'en suis pas encore là. Il faut déjà que çà fonctionne avec un ingrédient et on verra après pour la sélection multiple)

Ce que je n'arrive pas à faire, c'est à partir de ce deuxième formulaire, afficher mon formulaire principal et afficher les résultats de ce tableau dans les champs de ce formulaire principal (nommé liste_recettes).

Pour vérifier que mon tableau se remplit bien, j'ai mis des msgbox après la recherche et tout est noté correctement.

Pour visualiser mon formulaire principal à partir de mon formulaire de recherche j'utilise l'instruction liste_recettes.show

Je pensais qu'en mettant les instructions Liste_recettes.TextBox1.Text = Cells(tableau(ligne, 1)) et ainsi de suite j'arriverais à afficher les valeurs résultats de mon tableau dans le formulaire principal mais il ne m'affiche que le premier enregistrement de ma liste (puisque je fais une initialisation de mon formulaire avec la première recette de mon fichier excel trouvée) mais rien ne se passe de plus.

Enfin quand je fais quitter sur mon formulaire principal, j'ai le message d'erreur suivant:

"Appel de procédure ou argument incorrect (Erreur 5)"

Voici le code me permettant de faire ma recherche:

Private Sub Rechercher_Click()
Dim FoundCell As Range
Dim LastCell As Range
Dim FirstAddr As String
Dim ingrec As String
Dim ligne As Long
Dim tableau(0 To 3000, 0 To 5) As String
Dim wksht As Worksheet
Set wksht = Worksheets("Recettes")

With wksht.Range("B2:B3000")
    Set LastCell = .Cells(.Cells.Count)
End With
ingrec = InputBox("Ingrédient recherché")
Set FoundCell = Range("B2:B3000").Find(what:=ingrec, after:=LastCell)
MsgBox ("suivant")
ligne = FoundCell.Row

tableau(ligne, 1) = Cells(ligne, 1)
tableau(ligne, 2) = Cells(ligne, 2)
tableau(ligne, 3) = Cells(ligne, 3)
tableau(ligne, 4) = Cells(ligne, 4)
tableau(ligne, 5) = Cells(ligne, 5)
If Not FoundCell Is Nothing Then
    FirstAddr = FoundCell.Address
    End If
Do Until FoundCell Is Nothing

    Set FoundCell = Range("B2:B3000").FindNext(after:=FoundCell)
ligne = FoundCell.Row
tableau(ligne, 1) = Cells(ligne, 1)
tableau(ligne, 2) = Cells(ligne, 2)
tableau(ligne, 3) = Cells(ligne, 3)
tableau(ligne, 4) = Cells(ligne, 4)
tableau(ligne, 5) = Cells(ligne, 5)

MsgBox ("suivant")
'MsgBox (tableau(ligne, 1))
'MsgBox (tableau(ligne, 2))
'MsgBox (tableau(ligne, 3))
'MsgBox (tableau(ligne, 4))
'MsgBox (tableau(ligne, 5))
Liste_recettes.Show
Liste_recettes.TextBox1.Text = Cells(tableau(ligne, 1))
Liste_recettes.TextBox2.Text = Cells(tableau(ligne, 3))
Liste_recettes.TextBox3.Text = Cells(tableau(ligne, 4))
Liste_recettes.TextBox4.Text = Cells(tableau(ligne, 5))

MsgBox ("suivant")
librec.Text = Cells(ligne, 1)
    If FoundCell.Address = FirstAddr Then
    MsgBox ("dernière recette trouvée")
        Exit Do

    End If
Loop
End Sub

Merci de me détailler là où sont mes erreurs car je débute en vba et j'aime bien comprendre pour pouvoir progresser.

Merci de votre compréhension.

Christophe, le galérien du VBA

christrenb a écrit :
Liste_recettes.Show
Liste_recettes.TextBox1.Text = Cells(tableau(ligne, 1))
Liste_recettes.TextBox2.Text = Cells(tableau(ligne, 3))
Liste_recettes.TextBox3.Text = Cells(tableau(ligne, 4))
Liste_recettes.TextBox4.Text = Cells(tableau(ligne, 5))

je pense qu'il voudrai mieux affecter les valeurs ensuite afficher le formulaire principal et non l'inverse

minanse a écrit :

je pense qu'il voudrai mieux affecter les valeurs ensuite afficher le formulaire principal et non l'inverse

Merci de ta réponse minanse mais çà me fait exactement le même message d'erreur quand je mets liste_recettes.show après l'affectation des valeurs. Cela confirme que j'ai bien une erreur de syntaxe sur l'affectation des mes résultats.

Bonjour,

je pense que l'erreur viendrai d'ici

Cells(tableau(ligne, 1))

c'est un tableau de string et tableau(ligne,1) te renvoie qu'une valeur. au final tu aura cells(String) ce qui ne respect pas vraiment la syntaxe d'un cells ( je pense apres je ne suis pas vraiment bon avec les tableau ^^ )

je n'ai plus d'idées. J'ai essayé de changer en type Variant mais çà ne fonctionne pas non plus. Même message d'erreur

Rechercher des sujets similaires à "probleme affichage resultat recherche formulaire"