Selection(souris) + scrollbar + affichage

Résolu
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2007 - 18 janv. 2007 à 15:18
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 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

16 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique

(en rouge, c'est ce qui a changé)

</small>@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"
<!--
0
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Derniè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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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"
<!--
0
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Derniè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
0
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2007
18 janv. 2007 à 16:29
c'est ça mais je voudrais dans textbox1
sboub
sboub1
sboub3

qd je clique sur les différents sboub ( :-) )
et aprés me les amener sur une autre userform .
 merci pour ton aide précieuse
0
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2007
18 janv. 2007 à 16:31
pardon
sboub dans un textbox de l'autre userform
sboub1 dans textbox1 de l'autre userform


sboub3 dans textbox2 de l'autre userform
merci encore
0
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2007
18 janv. 2007 à 16:51
nickel mais pour inserer chacune données selectionner
sboub
sboub1
sboub3

dans trois autre textbox différentes ( une avec sboub, l'autre avec sboub1 et la derniere sboub3)on fait comment ?
0
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Derniè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?


 
0
titil64 Messages postés 67 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2007
19 janv. 2007 à 07:29
pkoi il ne prend po le " .text" et le "TypeOf(MyCtl)" je comprends po il ne marche po ton code sous vba il me marque des erreurs
 
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 janv. 2007 à 13:29
salut,
s'il y a des erreurs, tu ne risques pas d'avoir d'autres avis puisque tu as validés les posts...

la validation sert entre autres à clore le sujet en indiquant quelle(s) réponse(s) correspond(ent) au problème.

NB : merci d'éviter le langage SMS

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Rejoignez-nous