titil64
Messages postés67Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 5 février 2007
-
18 janv. 2007 à 15:18
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
19 janv. 2007 à 14:55
salut a tous et toutes
Voila je voudrais avoir une base de donnée existante et je voudrais selectionnais à l'aide de la souris plusieurs de ses parametres pour pouvoir les afficher ulterieurement .Pour cela je me sert d'un textbox (ds lequel il y aura toutes mes données à selectionner )et un scrollbar qui me permettra de les afficher et je voudrais ensuite pouvoir permettre à l'utilisateur d'en ajouter .
Pouvez vous me lancer une idée j'ai du mal à démarer voir un petit exemple.
merci au fait je fait du vba sous excel et je débute dans la prog
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 janv. 2007 à 16:21
Voici comment faire :
Option Explicit
Private Sub ListBox1_Click()
TextBox1.Text = ListBox1.Text
End Sub
Private Sub UserForm_Initialize()
With ListBox1
.AddItem "sboub"
.AddItem "sboub2"
.AddItem "sboub3"
.AddItem "sboub4"
.AddItem "sboub5"
End With
End Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 janv. 2007 à 16:38
Pour amener du texte dans un contrôle situé sur un autre UserForm, c'est pareil, à part qu'il faut précéder l'instruction par le nom du contenair (donc le nom du UserForm).
Exemple :
Private Sub ListBox1_Click()
UserForm2.TextBox1.Text = ListBox1.Text
End Sub
Ensuite, si tu veux ajouter dans le textbox des lignes de données, qui s'insèrent au fur et à mesure, il faut que tu sélectionnes le TextBox en question (en mode création) et que tu lui mettes la propriété MultiLine à True, puis, par code, il faut faire :
Private Sub ListBox1_Click()
If UserForm2.TextBox1.Text = vbNullString Then
UserForm2.TextBox1.Text = ListBox1.Text
Else
UserForm2.TextBox1.Text = UserForm2.TextBox1.Text & _
vbCrLf & ListBox1.Text
End If
End Sub
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 janv. 2007 à 18:20
fait un test afin de savoir si le testbox de destination contient ou non une valeur :
If TextBox1.Text = vbNullString Then
TextBox1.Text = ListBox1.Text
Else
If TextBox2.Text = vbNullString Then
TextBox2.Text = ListBox1.Text
Else
Etc...
End If
End If
Sinon, fait une boucle de tes objets,
Dim MyCtl As Control
For Each MyCtl In UserForm2.Controls
If TypeOf(MyCtl) Is TextBox Then
If MyCtl.Text = vbNullstring Then
MyCtl.Text = ListBox1.Text: Exit For
End If
End If
Next MyCtl
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 janv. 2007 à 21:19
Je t'ai mis les commentaires pour expliquer ce que faisait le code :
If TextBox1.Text = vbNullString Then
' Si le text de TextBox1 est
vide alors
TextBox1.Text = ListBox1.Text
' On insère le texte de la ListBox
Else
' sinon (on vérifie le reste, en cascade)
If TextBox2.Text = vbNullString Then
' Si le text de TextBox2 est
vide alors
TextBox2.Text = ListBox1.Text
' On insère le texte de la ListBox
Else
' sinon
Etc...
End If
End If
Sinon, fait une boucle de tes objets,
Dim MyCtl As Control
For Each MyCtl In UserForm2.Controls
' pour tous les controles dans le UserForm2
If TypeOf(MyCtl) Is TextBox Then
' Si le type du controle
actuel est un TextBox, alors
If MyCtl.Text = vbNullstring Then
' si le texte du TextBox
en cours est vide alors
MyCtl.Text = ListBox1.Text: Exit
For
' le controle recoit le texte de la
Listbox et on sors de la boucle
End If
End If
Next MyCtl
' s'il n'y a pas eu de sortie de la boucle, on choisi le controle
suivant
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 19 janv. 2007 à 14:55
Et beh, t'as pas cherché loin...
Pour le typeof, c'est normal (enfin non, mais bon...) qu'il y ait une erreur, je l'ai mal écrit, je t'ai fait tout de tête mais il suffit de faire
If TypeOf MyCtl Is TextBox Then
Bref, voici la correction, car j'avais omis autre chose :
Dim MyCtl As Control
For Each MyCtl In Me.Controls
' pour tous les controles dans le UserForm2
If TypeOf MyCtl Is MSForms.TextBox Then
' Si le type du controle
actuel est un TextBox, alors
If MyCtl.Text = vbNullString Then
' si le texte du TextBox
en cours est vide alors
MyCtl.Text = ListBox1.Text: Exit
For
' le controle recoit le texte de la
Listbox et on sors de la boucle
End If
End If
Next MyCtl
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 janv. 2007 à 15:27
Salut,
je pense qu'il vaut mieux préférer l'utilisation d'une ListBox plutôt qu'un combobox.
Pour ajouter des données avec ce contrôle : ComboBox1.AddItem "Ce que tu veux"
Ensuite, tu parles de bases de données, voici comment exploiter les feuilles excel :
Choisir une feuille :
Sheets("nom feuille").Select
Une Cellule :
Range("A2").Select Ou Cells(2, 1).Select
Déterminer la dernière ligne utilisé à partir d'une cellule :
DerniereLigne = Range("A65536").End(xlUp).Row
Exemple de mix :
Admettons tu as des valeurs dans la colonne A (une dizaine, mais la dernière ligne, peut changer) donc il faut faire ceci :
Dim i As Integer
For i = 1 To Range("A65536").End(xlUp).Row
ComboBox1.AddItem Cells(i, 1).Value
Next i
Bon courage ;)
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 janv. 2007 à 15:31
Arf, j'ai élangé les contrôles (vient de me réveiller...)
ma 1ere ligne : l'utilisation d'une ListBox plutôt qu'un <strike>combobox</strike> textbox.
dans mon code :
ListBox1 <strike>ComboBox1</strike>.AddItem Cells(i, 1).Value
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
titil64
Messages postés67Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 5 février 2007 18 janv. 2007 à 15:35
En fait la base de donnée c'est moi qui la rentre au préalable mais aprés qui pourra etre améliorer par l'utilisateur.
c'est a dire je veux une fenetre avec :
poids
taille
longueur
etc... que je rentre au préalable et aprés une fonction qui me permet d'ajouter d'autre données
lorsque je clique sur poids par exemple il me l'a rentre dans une autre text box
j'éssaye d'etre clair mais ça ne l'ai po pour moi lol
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 janv. 2007 à 15:43
Alors pour saisir les données dans un ListBox, voir code plus haut ^^
Ensuite on pourrait imaginer un TextBox en plus de la listbox sur ton UserForm, avec un Bouton "ajouter".
Quand la personne clique sur Ajouter, la données s'insère dans la ListBox et dans la feuille de données. Pour cela, il faut utiliser l'évènement Click du CommandButton (donc le bouton ajouter) :
Private Sub CommandButton1_Click()
ListBox1.AddItem TextBox1.Text
Cells(Range("A65536").End(xlUp).Row + 1, 1).Value = TextBox1.Text
End Sub
La première instruction rajoute dans la ListBox ce qui est saisie dans le TextBox
La seconde rajoute dans la feuille d'excel ce qui est dans TextBox, en recherchant la dernière cellule utilisée et en lui raoutant 1
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
titil64
Messages postés67Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 5 février 2007 18 janv. 2007 à 15:56
je vais etre chiant mais en fait je ne m'occupe po d'excel pour le moment je n'ai rien dans excel
les données je les rentre à la fin de mon programme mais qui la a rien a voir .
je veux tout simplement cliquer sur une ligne ds la ligne box ,
ce qui va le mettre en surbrillance
et ensuite cette element dans la listbox sera envoyé dans une textbox
tu vois le truc je sais comme je dis souvent il fait que j'explique longtemps pour que les gens comprenne lol
titil64
Messages postés67Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 5 février 2007 18 janv. 2007 à 19:06
tu peux m'expliquer ton algo stp ?
je ne comprend po tout
les deux ce sera toujours intérréssant
et au fait dans le premier on reste toujours dans la meme boucle de if?