Tom's Guide > Forum > Programmation > Problème avec un textbox VBA sous Excel

Problème avec un textbox VBA sous Excel

Forum Programmation : Problème avec un textbox VBA sous Excel

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Hello,

Voici une solution je pense a ton probleme...

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



Bonne lecture

------------------------------ Mon boss me dit : j'ai besoin d'un mec efficace, rapide, intelligent pas cher !
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola

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+


Répondre à herod68

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

------------------------------ Mon boss me dit : j'ai besoin d'un mec efficace, rapide, intelligent pas cher !
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola

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

Répondre à herod68

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

------------------------------ Mon boss me dit : j'ai besoin d'un mec efficace, rapide, intelligent pas cher !
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola

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.

Répondre à herod68

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 :

Code :
  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.       Next i
  13.        
  14.     If ValeurAjoutee = False Then Range("P7" ).Value = ValeurAEcrire
  15. End Sub
  16. Private Function TestSiCelluleVide(Cellule As String, ValeurAEcrire As String) As Boolean
  17.        
  18.     Dim ret As Boolean
  19.     ret = IsEmpty(Range(Cellule).Value)
  20.     If ret Then Range(Cellule).Value = ValeurAEcrire
  21.     TestSiCelluleVide = ret
  22.      
  23. End Function




A+
Nico

------------------------------ Mon boss me dit : j'ai besoin d'un mec efficace, rapide, intelligent pas cher !
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola

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+

Répondre à herod68

Hello,

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

A++
Nico

------------------------------ Mon boss me dit : j'ai besoin d'un mec efficace, rapide, intelligent pas cher !
Je lui ai répondu : embauchez moi et je vous aiderai a le trouver !!
Répondre à leghola
Tom's Guide > Forum > Programmation > Problème avec un textbox VBA sous Excel
Aller à :

Il y a 2056 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens