Création du boucle pour incrementation textbox

Création du boucle pour incrementation textbox - VB/VBA/VBS - Programmation

Marsh Posté le 18-10-2015 à 23:04:16    

Bonjour
J'ai lu des sujets sur l incrémentation des TextBox mais aprés avoir recopier le code ça ne fonctionne toujours pas
Je voudrais remplacer ça  
L.Offset(-1, 5) = Trim(UCase(TextPar1.Text))
L.Offset(-1, 6) = Trim(UCase(TextPar2.Text))
L.Offset(-1, 7) = Trim(UCase(TextPar3.Text))
L.Offset(-1, 8) = Trim(UCase(TextPar4.Text))
L.Offset(-1, 9) = Trim(UCase(TextPar5.Text))
L.Offset(-1, 10) = Trim(UCase(TextPar6.Text))
L.Offset(-1, 11) = Trim(UCase(TextPar7.Text))
L.Offset(-1, 12) = Trim(UCase(TextPar8.Text))
L.Offset(-1, 13) = Trim(UCase(TextPar9.Text))
L.Offset(-1, 14) = Trim(UCase(TextPar10.Text))
L.Offset(-1, 15) = Trim(UCase(TextPar11.Text))
L.Offset(-1, 16) = Trim(UCase(TextPar12.Text))
L.Offset(-1, 17) = Trim(UCase(TextPar13.Text))
L.Offset(-1, 18) = Trim(UCase(TextPar14.Text))
L.Offset(-1, 19) = Trim(UCase(TextPar15.Text))
L.Offset(-1, 20) = Trim(UCase(TextPar16.Text))
L.Offset(-1, 21) = Trim(UCase(TextPar17.Text))
L.Offset(-1, 22) = Trim(UCase(TextPar18.Text))
 
 
Par
 
Dim L As Range
Dim i As Integer
Dim j As Integer
j = 4
For i = 0 To 18 Step 1
i = 1                    
i = i + 1
j = j + 1
L.Offset(-1, j) = Trim(TextPar & i).Text
Next i
 
Par avance merci pour votre aide


Message édité par thor76 le 18-10-2015 à 23:04:56
Reply

Marsh Posté le 18-10-2015 à 23:04:16   

Reply

Marsh Posté le 18-10-2015 à 23:19:40    

C'est parce que l'accès une textbox par une variable string ne fonctionne pas comme ca.
 
Voila la bonne version:

Code :
  1. Me.Controls("TextBox" & i)


 
Permet de récupérer la textbox se nommant "TextBox4" (en supposant que i=4).
 
 
Voila (de tête), ce qui devrait fonctionner:

Code :
  1. Dim L as Range
  2. Dim i as Integer
  3. for i = 0 to 17 Step 1
  4.   L.Offset(-1, i + 5) = Trim(Me.Controls("TextBox" & (i + 1)).Text)
  5. Next i


 
Les erreurs/améliorations:
- La variable j n'est pas nécessaire
- i=1 dans le for (ca va créer une boucle infinie)
- la parenthèse du trim mal placée
- L'utilisation de Me.Controls pour récupérer la textbox
- le i = i + 1 n'est pas nécessaire (Step 1 est déjà définit)
- La boucle doit certainement s'arrêter à 17 et non 18 (ou alors tu fais démarrer i à 1 et change les indices)...


Message édité par Devil'sTiger le 18-10-2015 à 23:21:10
Reply

Marsh Posté le 18-10-2015 à 23:47:25    

Bonsoir et merci pour cette réponse rapide
Je viens de recopier le code et ça ne fonctionne pas
La boucle tourne bien mais je n'écris rien dans L
Merci pour les conseils..le j effectievement ne servait pas mais je n avais pas pensé au i + 5...

Reply

Marsh Posté le 18-10-2015 à 23:54:50    

Desolé..;Ca fonctionne très bien..J avais juste oublié de remplacé box par Par..Le nom de ma textBox

Reply

Marsh Posté le 19-10-2015 à 00:57:24    

Meme question avec ce code ..
'If H = 1 Then LBJoueur1.Caption = Sheets("Joueurs" ).Range("D2" )
'If H = 2 Then LBJoueur2.Caption = Sheets("Joueurs" ).Range("D3" )
'If H = 3 Then LBJoueur3.Caption = Sheets("Joueurs" ).Range("D4" )
'If H = 4 Then LBJoueur4.Caption = Sheets("Joueurs" ).Range("D5" )
'If H = 5 Then LBJoueur5.Caption = Sheets("Joueurs" ).Range("D6" )
'If H = 6 Then LBJoueur6.Caption = Sheets("Joueurs" ).Range("D7" )
'If H = 7 Then LBJoueur7.Caption = Sheets("Joueurs" ).Range("D8" )
'If H = 8 Then LBJoueur8.Caption = Sheets("Joueurs" ).Range("D9" )
 
a remplacer par :
For i = 0 To 7 Step 1
    If H = i + 1 Then Trim(Me.Controls("LBJoueur" & (i + 1)).Caption) = Sheets("Joueurs" ).Range("D&i+2" )
Next
 
evidemment ça ne marche pas :((

Reply

Marsh Posté le 19-10-2015 à 11:22:50    

Code :
  1. For i = 0 To 7 Step 1
  2.     If H = i + 1 Then Me.Controls("LBJoueur" & (i + 1)).Caption = Sheets("Joueurs" ).Range("D" & (i + 2) )
  3. Next


 
Sorti de la parenthèse ca marchera mieux ;)
 
EDIT: le trim est pas possible là ou tu l'avais mis, si tu veux trim au passage:
 

Code :
  1. For i = 0 To 7 Step 1
  2.     If H = i + 1 Then Me.Controls("LBJoueur" & (i + 1)).Caption = Trim(Sheets("Joueurs" ).Range("D" & (i + 2) ))
  3. Next


Message édité par Devil'sTiger le 19-10-2015 à 11:23:47
Reply

Marsh Posté le 19-10-2015 à 13:48:48    

Merci beaucoup...Je n'était pas loin de la vérité :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed