Remplir des textbox

bonjour,

Je viens vers vous car j'ai un souci pour remplir des textbox. j'ai une combox avec des valeurs (part exemple FRUIT, LEGUMES, viande)

je souhaite remplir la textbox1 avec la valeur trouvée dans la colonne B dans la 1ere ligne qui trouve la valeur du combobox selectionné. Dans la 2me textbox la valeur dans la meme colonne (B) de la ,prochaine ligne ou se trouve la valeur du combobx.

donc pour resumer :

En A1 = FRUIT, A2 = LEGUME, A3= VIANDE A4 = LEGUME , A5= FRUIT

EN B1 = POMME B2= CAROTTE B3= BOUEF B4 = HARICOT B5= POIRE

COMBOBOX = FRUIT, LEGUME, VIANDE

si je selectionne FRUIT , alors texbox1 = B1 TEXBOX2 = B5

je pense qu'il faut faire une boucle mais je ne sais pas la faire. si quelqu'un peut m'aiguiller svp

anna

Bonjour,

Une proposition

170annarol.xlsm (20.83 Ko)

A+

bonjour,

merci de ton aide, pourrais tu m'envoyer ton fichier au format excel 2003 (.xls) car je suis au boulot sur un poste qui n'a que cet excel.

en te remerciant à l'avance

anna

Voici, voila,

62annarol.zip (15.41 Ko)

A+

merci super c'est ce que je souhaitais en termes de résultats.

Par contre pour ma culture personnelle, peut tu me traduire (en langage franco français) les lignes de commande a partir de IF NOT C....

afin que je puisse les comprendre pleinement.

en tout cas merci beaucoup

anna

Voici le code commenté

Private Sub ComboBox1_Change()
Dim C As Range
Dim i As Byte
Dim FirstAddress As String
    Me.TextBox1 = ""
    Me.TextBox2 = ""
    With Worksheets("Feuil1")
        'Cherche la première cellule dans la colonne A qui contient une valeur égale à celle de ComboBox1
        Set C = .Columns("A").Find(Me.ComboBox1.Value, .Range("A1").End(xlDown), xlValues, xlWhole)
        'Si cette cellule existe, alors ...
        If Not C Is Nothing Then
            'On note l'adresse de cette première cellule
            FirstAddress = C.Address
            'On entre dans une boucle
            Do
                'On utilise la variable i pour noter le nombre d'incréments.
                'Ce nombre est utilisé pour limiter le nombre d'itération à 2 (nombre de TextBox)
                i = i + 1
                'On affecte la valeur associée (colonne B) à la TextBox qui correspond à l'indice i
                Me.Controls("Textbox" & i).Value = C.Offset(0, 1)
                'On poursuit la recherche
                Set C = Columns("A").FindNext(C)
                'On reprend le traitement à condition que :
                '- il existe une autre cellule qui contient une valeur égale à celle de ComboBox1
                '- le nombre d'itération est inférieur à 2
                '- la cellule trouvée est différente de la première
            Loop While Not C Is Nothing And i < 2 And C.Address <> FirstAddress
        End If
    End With
End Sub

A+

je comprends mieux mais si je veux passer a trois textbox (supposons qu'il y ait des raisins en + des pommes et des poires) et que je veux que cela s’affiche dans une 3me textbox.

en vrai j'ai posté ce midi un fichier sous un autre titre si tu peux y jeter un coup d'oeil cela explique la finalité de mon travail.

merci

anna

Les modifications du code sont minimes.

Voici l'exemple avec 3 TextBox.

88annarol-1.zip (15.70 Ko)

A+

merci encore,

quand je selection Fruit j'ai bien effectivement les 3

quand je selection Legumes dans le textbox3 apparait carottes ce qui semble dire qu'il refait une boucle

quand je selection Viande juste boeuf apparait normal c'est le 1er et seul item...

donc peut on bloquer la boucle pour eviter qu'il remplisse un textbox si on revient au point de depart ?

ceci étant je comprends le code que tu m'as transmis sauf le i = i+ 1 !!!!

anne

Je ne comprends pas que "CAROTTE" apparaisse dans la TextBox3 quand tu sélectionnes LEGUME.

Lorsque je fais le test, j'obtiens "CAROTTE" dans la TextBox1, "HARICOT" dans dans la TextBox2 et rien dans la TextBox3.

La variable i permet d'indiquer quelle est la TextBox qui doit être renseignée.

A la première incrémentation, i vaut 1.

La TextBox renseignée sera Me.Controls("Textbox" & i), soit TextBox1.

A la deuxième incrémentation, i vaut 2.

La TextBox renseignée sera Me.Controls("Textbox" & i), soit TextBox2.

Etc.

A+

merci beaucoup je vais creuser cette affaire. J'ai du faire une boulette quelque part.

en tout cas merci d'avoir passer du temps pour moi

bisous

anna

bonjour,

je suis désolée du retard de réponse mais j'étais en déplacement. En fait tout va bien et ta solution est impeccable (j'avais mal réecrit le code car je ne fait jamais de copier/coller pour comprendre ce que je fais !).

en tout cas merci beaucoup,

anna

Rechercher des sujets similaires à "remplir textbox"