Votre question

Problème avec un textbox VBA sous Excel

Tags :
  • string
  • Programmation
Dernière réponse : dans Programmation
13 Février 2008 22:53:59

Bonjour

je suis novice dans le VBA sous Excel.

j'ai créer un userform dans lequel j'ai mis un textbox.
la valeur du textbox doit être copier dans une cellule A7.
Si il y a déjà du text dans A7 alors la valeur du textbox doit se copier dans A27 puis A47.

Jusqu'à la j'arrive c'est ensuite que sa se gate.

Maintenant si je veux revenir au début admettons que A27 et A47 contiennent déjà du texte, la valeur du textbox devra se mettre automatiquement dans la cellule vide donc A7.

Alors j'ai essayé pas mal de code et à chaque fois que j'effaçais une cellule A7 A27 ou A47 pour que le textbox mette sa valeur il me la copiait dans la cellule vide plus les autres.

Merci d'avance si quelqu'un peut m'aider sa serait super.
Sa me rend dingue

Autres pages sur : probleme textbox vba excel

14 Février 2008 08:54:34

Hello,

Voici une solution je pense a ton probleme...

  1. Private ValeurAjoutee As Boolean ' Cette variable passe a True quand on a ajouté une valeur
  2. Const NbCellules As Single = 3 ' nombre de Cellules a tester
  3. Const ValeurAEcrire As String = "YouplaBoumm" ' Ici tu auras ton textbox a la place
  4.  
  5. Public Sub TestCellule()
  6.  
  7. ' Bon c'est dur d'écrire en VBA quand on est habitué au VB.net
  8. ' Je pense que ce code est plutot propre dans l'ensemble
  9. ' Enfin propre pour ce que le VBA autorise :)
  10.  
  11. For i = 1 To NbCellules
  12.  
  13. Select Case i
  14. Case 1: ValeurAjoutee = TestSiCelluleVide("A1")
  15. Case 2: ValeurAjoutee = TestSiCelluleVide("A2")
  16. Case 3: ValeurAjoutee = TestSiCelluleVide("A3")
  17. End Select
  18.  
  19. ' Si on a inscrit une valeur, on quitte notre boucle.
  20. ' Pas la peine d'aller plus loin
  21. If ValeurAjoutee Then Exit For
  22.  
  23. Next i
  24.  
  25. ' Si on a pas ajouté de valeur, on inscrit notre valeur a un endroit précis
  26. If ValeurAjoutee = False Then Range("A1").Value = ValeurAEcrire
  27.  
  28. End Sub
  29.  
  30. Private Function TestSiCelluleVide(Cellule As String) As Boolean
  31.  
  32. ' On teste pour chaque cellule si elle est vide
  33. ' Si oui, on inscrit notre valeur et on renvoit TRUE (ret pour return)
  34. Dim ret As Boolean
  35. ret = IsEmpty(Range(Cellule).Value)
  36. If ret Then Range(Cellule).Value = ValeurAEcrire
  37.  
  38. TestSiCelluleVide = ret
  39.  
  40. End Function


Bonne lecture
14 Février 2008 11:31:13

Salut
je te remercie déjà de m'aider j'ai essayé avec ton code mais par contre je ne sais pas si je dois le mettre dans un module ou dans le bouton d'enclenchement du userform (j'ai essayé les deux à chaque fois il me mettait l'erreur instruction end sub attendu et une fois que j'en mettais un il me surlignait Private valeur ajouté as boolean j'ai aussi essayé avec dim valeur ajouté as boolean alors la c'est le const nbcellules qui veut plus.

voila lol si tu peux encore m'aider sa serait nikel
a+


Contenus similaires
14 Février 2008 11:56:01

Hello,

mets le tout dans un module si tu veux.
ensuite tu lances"TestCellule" via un bouton

Attention les déclarations (private/const, etc) doivent etre tout en haut du module , rien ne doit etre écrit avant ces lignes (pas de sub ou autre)

tu modifies aussi ceci :

Const ValeurAEcrire As String = "YouplaBoumm"
Public Sub TestCellule()

par
Public Sub TestCellule(ValeurAEcrire As String)

Dans ton code de Bouton_Click tu fais :
TestCellule(Textbox.text)

Voila,
a+
nico
14 Février 2008 20:46:21

Oui désolé j'avais pas capté tout de suite le public sub effectivement j'ai fais les changements que tu ma dis car c'est vrai qu'avec Const ValeurAEcrire As String = "YouplaBoumm" sa me donnais tout le temps Youplaboumm.

Donc maintenant le code parait bon vue qu'il n'y a pas d'erreur détecté, mais par contre il ne m'affiche pas la valeur du textbox dans la cellule en fait il ne m'affiche rien apparement (mais c'est que l'avis d'un novice lol) il semblerait qui ne prend pas en compte la variable ValeurAEcrire as string qui nomme textbox.text

J'ai essayé avec as variant et d'autres rien non plus.

merci encore de ton aide je sent qu'on touche au but lol
15 Février 2008 08:20:05

Hello,

Ton textbox s'appelle comment ?
Quel est le code VBA que tu as écris dans l'evenement click de ton bouton ?

Je pense que c'est une connerie a 2euros qui doit se ballader, suffit de la localiser :) 

a+
Nico
15 Février 2008 11:24:58

salut
voila ce qu'il y a dans mon bouton: (mon textbox s'appelle textbox1)

Private Sub CommandButton1_Click()

sheets"blabla".activate
Call TestCellule(TextBox1.Text)

et ce qu'il y a dans mon module:

Private ValeurAjoutee As Boolean
Const NbCellules As Single = 3



Public Sub TestCellule(ValeurAEcrire As String)

For i = 1 To NbCellules

Select Case i
Case 1: ValeurAjoutee = TestSiCelluleVide("P7")
Case 2: ValeurAjoutee = TestSiCelluleVide("P27")
Case 3: ValeurAjoutee = TestSiCelluleVide("P47")
End Select

If ValeurAjoutee Then Exit For

Next i

If ValeurAjoutee = False Then Range("P7").Value = ValeurAEcrire


End Sub
Private Function TestSiCelluleVide(Cellule As String) As Boolean

Dim ret As Boolean
ret = IsEmpty(Range(Cellule).Value)
If ret Then Range(Cellule).Value = ValeurAEcrire

TestSiCelluleVide = ret

Unload userform1

End Function

Voila j'ai rien d'autre dans le bouton ou le module j'ai tous effacé pour être sur.
15 Février 2008 14:41:57

Hello,

Alors 2 problemes detectés :) 

1. ton Unload userform1 tu le mets après ton call pas dans la fonction.... :) 

2. ma ValeurAEcrire étant une const, je la passais tranquille entre les fonctions. La c différent donc :

  1. Private Sub TestCellule(ValeurAEcrire As String)
  2.  
  3. For i = 1 To NbCellules
  4.  
  5. Select Case i
  6. Case 1: ValeurAjoutee = TestSiCelluleVide("P7", ValeurAEcrire)
  7. Case 2: ValeurAjoutee = TestSiCelluleVide("P27", ValeurAEcrire)
  8. Case 3: ValeurAjoutee = TestSiCelluleVide("P47", ValeurAEcrire)
  9. End Select
  10.  
  11. If ValeurAjoutee Then Exit For
  12.  
  13. Next i
  14.  
  15. If ValeurAjoutee = False Then Range("P7").Value = ValeurAEcrire
  16.  
  17. End Sub
  18. Private Function TestSiCelluleVide(Cellule As String, ValeurAEcrire As String) As Boolean
  19.  
  20. Dim ret As Boolean
  21. ret = IsEmpty(Range(Cellule).Value)
  22. If ret Then Range(Cellule).Value = ValeurAEcrire
  23.  
  24. TestSiCelluleVide = ret
  25.  
  26. End Function



A+
Nico
15 Février 2008 20:27:55

Salut

Super sa marche nikel merci encore de ton aide, sa n'a pas du être facile avec un novice.
J'en pleure de joie lol

a+
15 Février 2008 20:47:51

Hello,

Content que ca fonctionne.
Si tu as d'autres problemes n'hésite pas :) 

A++
Nico
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS