Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
644 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recuperer le contenu des textbox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recuperer le contenu des textbox

n°1304467
Angelo38
Posté le 13-02-2006 à 16:00:56  profilanswer
 

Bonjour alors voila j'ai 21 texbox présent dans un Userform
j'arrive à récupérer le contenu d'un textbox mais j'aimerai ne pas a avoir à écrir mon code 22 fois  :non:  
 
voici mon code (valable juste pour le TextBox1 qui rempli la case B16)

Code :
  1. Jour = Day(Now)
  2. 'si l'utilisateur ne met rien dans la case opération 1
  3. If TextBox1.Value = "" Then
  4.     Range("B" & Jour + 3) = Range("B" & Jour + 3) 'le total reste le même
  5. Else
  6.     Range("B" & Jour + 3) = Range("B" & Jour + 3) + TextBox1.Value 'sinon on additionne l'ancien total avec la valeur que l'utilisateur viens de mettre dans le textbox
  7. End If
  8. End Sub


 
 
 
j'ai remarqué que le contenu de la textbox1 va en B12 (16 correspond à mon Jour +3 car aujourd'hui on est le 13)  
le textbox2 va en C16, le textbox3 en D16 ...  
donc comment changer mon code et faire une boucle et ainsi récupérer le contenu des 22 textbox (le contenu du 21 ieme est en V16)

mood
Publicité
Posté le 13-02-2006 à 16:00:56  profilanswer
 

n°1304612
tegu
Posté le 13-02-2006 à 17:40:15  profilanswer
 

Tu fais une fonction qui accepte en paramètre, soit un objet Textbox, soit le nom de ta textbox.
Dans ta fonction tu utiliseras l'objet tel quel ( objTxt.Value ) ou via la collection Controls( nomTextBox ).Value
 
Pour la lettre des coordonnées de ta cellule, tu peux jongler avec le code ASCII des caractères par rapport au n° de ta textbox.


Message édité par tegu le 13-02-2006 à 17:40:33
n°1305363
Angelo38
Posté le 14-02-2006 à 16:06:58  profilanswer
 

j'ai essayé de faire ce que tu m'a proposé mais je bloque (par contre j'ai pas fais de fonction)
 

Code :
  1. Jour = Day(Now)
  2. 'si l 'utilisateur ne met rien dans la case opération 1
  3. For lettre = Asc("B" ) To Asc("V" )
  4.     NoColonne = lettre - 65
  5.     MsgBox TextBox & NoColonne
  6.     MsgBox NoColonne
  7.     If Controls(TextBox & NoColonne).Value = "" Then
  8.         Range(lettre & Jour + 3) = Range(lettre & Jour + 3) 'le total reste le même
  9.     Else
  10.         Range(lettre & Jour + 3) = Range(lettre & Jour + 3) + Controls(TextBox & NoColonne).Value 'sinon on additionne l'ancien total avec la valeur que l'utilisateur viens de mettre dans opération1
  11.     End If
  12.     'Next
  13. Next


 
Il me dis qu'il trouve pas l'objet au niveau du if Control...

n°1305404
tegu
Posté le 14-02-2006 à 16:31:25  profilanswer
 

1/ vérifie que les valeurs de tes variables textbox et NoColonne donnent bien un nom de champ valable (je vois un MsgBox donc je suppose que c'est bon, mais on n'est jamais trop sûr)
2/ préfixe Controls par le nom de ton userform et un point
frmMonUserForm.Controls(...)
3/ passe par une variable objet
dim oTxt As TextBox
set oTxt = userform.controls(...)
if oTxt.value Then...
 
Si rien ne marche alors quelque chose m'échappe
 

n°1305418
watashi
La démotivation : JAMAIS !
Posté le 14-02-2006 à 16:38:39  profilanswer
 

Salut angelo,
Pour utiliser controls pour appeler le textbox il ne faut pas oublier les guillemets
 
Par ailleurs pour éviter de passer par des Asc() utilise plutôt la fonction cells(N° ligne, N° colone) que range.
Si ton textbox est vide tu ne fais rien, si tu défini uniquement ce que tu as à faire si le textbox à une valeur ça simplifie les choses.
Voilà ce que pourrait donner ton code une fois simplifié :

Code :
  1. ligne = day(now) +3
  2. For i = 1 To 22
  3.     If Controls("TextBox" & i).Value <> "" Then
  4.     Sheets(1).Cells(ligne, i + 1).Value = Sheets(1).Cells(ligne, i + 1).Value + Controls("TextBox" & i).Value
  5.     Else
  6.     End If
  7. Next i


il y a surement mieux :) mais c'est déjà ça
 
@+ et bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1305421
tegu
Posté le 14-02-2006 à 16:41:48  profilanswer
 

Pffff j'avais cru que TextBox était une variable contenant le début du nom des textbox à exploiter.
Mais watashi a clairement mieux vu que moi l'erreur. Effectivement avec les guillemets ça devrait focnitonner.

n°1305435
Angelo38
Posté le 14-02-2006 à 16:54:08  profilanswer
 

alors j'ai fais un copier coller scrupuleu du code de watashi mais il me met toujours la même chose : objet sécifié introuvable au niveau du if  
c'est peut être que ce code est sur l'évenement click d'un bouton alors que les textbox sont sur le userforms non?

n°1305440
tegu
Posté le 14-02-2006 à 17:00:01  profilanswer
 

Si ton code n'est pas directement dans le userform alors il faut préfixer Controls par le nom de ton userform comme je t'ai indiqué en 2/
 
Sinon ben attend les bonnes lumières de watashi :)

n°1305450
watashi
La démotivation : JAMAIS !
Posté le 14-02-2006 à 17:07:44  profilanswer
 

c'ets que définitivement il reconnait pas le nom de ton textbox
 
vérifies voir si les noms des contrôles sont bien textbox1 à textbox22...
ton bouton est sur le même userform ? sinon il faut mentioner le nom du userform également...
 
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1305459
watashi
La démotivation : JAMAIS !
Posté le 14-02-2006 à 17:13:58  profilanswer
 

lol tegu on a répondu en même temps ;)
 
;)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
mood
Publicité
Posté le 14-02-2006 à 17:13:58  profilanswer
 

n°1305483
watashi
La démotivation : JAMAIS !
Posté le 14-02-2006 à 17:30:35  profilanswer
 

Autant pour moi je viens de relire l'ennoncé et il y a 21 textbox donc de textbox 1 à textbox21 change le for i= 1 to 22 en i= 1 to 21 et ça devrait rouler ;)
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1305896
Angelo38
Posté le 15-02-2006 à 11:08:50  profilanswer
 

les textbox sont sur le même userform que le bouton toutefois j'ai modifier quand même le code
 
 

Code :
  1. Private Sub Valider_Opération_Click()
  2. ligne = Day(Now) + 3
  3. For i = 1 To 21
  4.     If frmOpération.Controls("TextBox" & i).Value <> "" Then
  5.         Sheets(1).Cells(ligne, i + 1).Value = Sheets(1).Cells(ligne, i + 1).Value + frmOpération.Controls("TextBox" & i).Value
  6.     Else
  7.     End If
  8. Next i
  9. ActiveWorkbook.Save 'sauvegarde
  10. 'ActiveWorkbook.Close
  11. End Sub


 
et toujour pareil objet requis au niveau du if  
 
j'ai vérifier le nom de mes TextBox et c'est bien TextBox1, TextBox2 ...
 
la preuve en image :
http://angelo7891.skyblog.com/
désolé la foto est flou mais en agrandissant on peut se rendre compte que le userform s'appel Opération et le textbox TextBox1

n°1305918
watashi
La démotivation : JAMAIS !
Posté le 15-02-2006 à 11:23:27  profilanswer
 

si tu veux je regardes ton fichier.
Regarde ton pm je t'y mets mon mail.
Donnes moi aussi ta version d'excel.
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1306792
Epena
Posté le 16-02-2006 à 06:55:56  profilanswer
 

Bonjour,  
Si le UserForm s'appelle  Opération, il faut changer frmOpération en Opération :
 
If Opération.Controls("TextBox" & i).Value <> "" Then
 
Epéna

n°1306837
tegu
Posté le 16-02-2006 à 09:36:28  profilanswer
 

Exact, frm n'est pas un préfixe implicite du langage VB mais une convention personnelle de nommage.
Décidemment il faut faire gaffe à ce qu'on écrit pour être interprété correctement.

n°1306841
Angelo38
Posté le 16-02-2006 à 09:41:18  profilanswer
 

en fait le problème étais ailleur (du a mon manque de vigilence et mon étourderie  :heink:  )
 

Code :
  1. ligne = day(now) +3
  2. For i = 1 To 21
  3.    If Controls("TextBox" & i).Value <> "" Then
  4.    Sheets(1).Cells(ligne, i + 1).Value = Sheets(1).Cells(ligne, i + 1).Value + Controls("TextBox" & i).Value 
  5. Else
  6. End If
  7. Next i


 
le probleme étais que ma derniere textbox était appelé textbox21 et non 22 donc il trouvait pas le dernier forcément !
sinon le donné est bon vu que les textbox sont sur le userform Opération inutile de mettre Opération.Controls


Message édité par Angelo38 le 16-02-2006 à 09:42:17

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recuperer le contenu des textbox

 

Sujets relatifs
recupérer l'ID SessionRécupérer toutes les adresses URL !
recuperer la quantite pour chaque produit vendueRécuperer l'url du fichier uploader ?
getSelection sur textbox enJavascript sur Firefox ? [RESOLU]Récupérer des infos d'un terminal server sous windows 2000 Server en p
[Java J2EE Servlet] récupérer des fichiers inclus dans un war[PHP] vérifier le contenu d'une variable
[PHP&JAVASCRIPT] Probleme pour recuperer les variables d'un formulaireTextbox, filtre pour un nombre
Plus de sujets relatifs à : Recuperer le contenu des textbox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR