Je souhaite faire quelque chose de simple (enfin je pense ) mais pas moyen d'y arriver.
Je plante le décors :
Pour X ou Y raison j'ai usf sur lequel j'ai 101 textboxes. Ma première textbox correspond à la quantité (nommée ici "quantity). Je remplis alors les 100 autres textboxes en fonction de ma quantité et du contenu de ma première textbox. La suite est simple: Textbox (X).value = Textbox (X-1).value + 1
Mon code ressemble alors à cela:
Code:
For x = 2 To Quantity.Value
Me.Controls("Textbox" & x).Value = TextBox1.Value + x
Next x
Cela marche presque mais j'ai toujours Textbox (X).value = Textbox (X-1).value + 2 et non + 1...
Et dès que ma textbox 1 est vide (j'efface son contenu) j'ai une erreur incompatibilité de type.
L'utilisateur entre une quantité dans la textbox quantité.
Ensuite il entre un chiffre dans la textbox1 et si par exemple la quantité est 5 les 5 premières textbox se remplissent par rapport à la première en suivant cette logique : Textbox (X).value = Textbox (X-1).value + 1
Je vais essayer ta solution mais je ne suis pas sur que cela fasse ce que je souhaite.
Private Sub TextBox1_Change()
For x = 2 To Quantity.Value
Me.Controls("Textbox" & x).Value = IIf(Me.TextBox1.Value = "", "", Me.Controls("TextBox" & (x - 1)).Value + 1)
Next x
End Sub
Merci en effet avec le "-1" ça marche beaucoup mieux
Cependant j'ai toujours le même problème quand j'efface manuellement le contenu de ma textbox1 j'ai une Incompatibilité de type.
L'utilisateur entre une quantité dans la textbox quantité.
Ensuite il entre un chiffre dans la textbox1 et si par exemple la quantité est 5 les 5 premières textbox se remplissent par rapport à la première en suivant cette logique : Textbox (X).value = Textbox (X-1).value + 1
Je vais essayer ta solution mais je ne suis pas sur que cela fasse ce que je souhaite.
C'est bien ce qu'il me semblait, que je n'avais rien compris.
Dans ce cas, je te joins la solution sous forme de copie de ton fichier, pour ne pas t'interrompre dans ta recherche. Si tu n'aboutis pas, tu pourras toujours l'afficher.
Je regarde malheureusement de suite car au boulot je n'ai pas beaucoup de temps pour la recherche
A+
Max
[EDIT] La solution était en faite identique à celle que me proposait Robert. J'avais donc toujours l'erreur d'incompatibilité de type si ma textbox1 = "". J'ai donc ajouté cette ligne :
Code:
If TextBox1.Value = "" Then TextBox1.Value = "0"
Petite bidouille pour forcer le contenu de ma TB1 à 0 si elle est vide ce qui empêche l'erreur d'incompatibilité.
En attendant encore merci pour votre aide et bonne aprem.
Voici donc la réponse à ce que je crois avoir compris :
Code:
Private Sub TextBox1_Change()
If TextBox1 = "" Then Exit Sub
For x = 2 To 100
If x <= CInt(Quantity.Value) Then
Me.Controls("Textbox" & x).Value = Me.Controls("textbox" & x - 1).Value + 1
Else
Me.Controls("Textbox" & x).Value = ""
End If
Next
End Sub
La macro efface toutes les données qui pourraient subsister après modification de la quantité. Si TextBox1="", plus de plantage mais vois si le résultat convient.