Créer une boucle avec une condition
Bonjour à tous, je suis coincé :
Je chercher à rendre ludique un énorme tableau d'excel en plusieurs pages de formulaire (userform). Dans un premier temps, on sélectionne dans une combobox un code particulier (la clé d'entrée pour chaque ligne différente). Ensuite, je voudrais que toutes mes textbox se remplissent automatiquement selon le code (la clé) choisi. Rien de compliqué c'est juste une condition, mais si je sais le faire pour une textbox, je ne sais pas le faire avec une boucle.
Aussi ma structure de tableau est simple.
- Textbox1 = colone 1
- textbox2 = colone 2
- jusqu'a 33.
Quelqu'un de gentil m'avait aider sur ce même sujet mais je bloque
voici mon code, je ne sais pas où est l'erreur. les textbox se remplissent mais pas correctement.
Merci de votre aide
--
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Private Sub CommandButton1_Click()
Dim c As Range
Dim Code As String
'Code: le contenu de TextBox1 qu'on va chercher sur la colonne A
Code = Recherche.ComboBox1.Value
'Si Code est non vide
If Code <> "" Then
'F1 sur la méthode Find (on cherche la valeur de Code dans la colonne A de notre feuille)
'c est la cellule de la colonne A contenant éventuellement la valeur du Code
Set c = Worksheets("bdouvrages").Range("A:A").Find(Code, LookIn:=xlValues, lookat:=xlWhole)
'Si une cellule est trouvé (contenant la valeur de Code) c sera différente de rien
If Not c Is Nothing Then
'On appelle la procédure de remplissage Remp des TextBox de Fiche en fonction de la ligne de la cellule trouvé (c.Row)
Call Report(c.Row)
'On vide notre variable objet (Range) c
Set c = Nothing
End If
End If
End Sub
'Procédure de remplissage des TextBox de Fiche en fonction de (Lig)ne
Private Sub Report(ByVal Lig As Long)
Dim i As Byte
With Worksheets("bdouvrages")
FIO.TextBox1.Value = .Cells(Lig, 1).Value
FIO.TextBox2.Value = .Cells(Lig, 2).Value
'On boucle sur les textbox de 3 à 33
'on remarque que le textbox d'index j est rempli par la contenu de la cellule Cells(Lig,j+2)
For i = 3 To 33
FIO.Controls("TextBox" & i).Value = .Cells(Lig, i + 2)
Next i
End With
'pour montrer la fiche
FIO.Show
End Sub |