La non répétition d'un événement dans VB

Fermé
NagNag - 31 oct. 2007 à 15:13
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 2 nov. 2007 à 13:30
Bonjour,
comment je peux valider des donnés à partir d'un combobox, et si à chaque fois un élément est sélectionné l'événement ne sera pas exécuté une autre fois de ce même élément.
A voir également:

16 réponses

PBGunner Messages postés 64 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 29 juillet 2008 64
31 oct. 2007 à 15:47
euh...j'ai pas tout compris...

Qu'appelle tu un élément?
Sur quel logiciel? Excel? Word? Access? autre?
0
Bonjour,
avec le VB6
0
PBGunner Messages postés 64 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 29 juillet 2008 64
31 oct. 2007 à 17:02
Si j'ai bien compris:
tu a un certain nombre d'objets que tu selectionne via un combobox,
tu lance une action sur l'objet selectionné dans le combobox, mais tu ne peux faire cette action qu' une seule fois...exacte?
Que se passe-t-il si tu selectionne un autre objet, que tu relance l'action: Peux tu revenir au premier objet et relancer l'action?
0
Non, le contraire est vraie, je veux sélectionner l'élément du combobox. Autrement, une fonction que l'exécution se fait qu'une seule fois.
0

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

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
31 oct. 2007 à 17:25
Salut Nagnag,

Pourquoi ne pas supprimer l'item de la combo une fois le code exécuté ?
0
Tu LEADER du programmation POLUX31, mais où est-tu ? tu es mon sauveur ahhhhh!!!!!!!!!!!, mais tu restes trop pour me repondre en tout cas merci beaucoup.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
31 oct. 2007 à 17:31
de rien ;o)
0
tu vois POLUX31, que l'idée est toujours difficile, ici l'experience et l'intellegence!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
31 oct. 2007 à 17:37
lol l'expérience peut être ... pour l'intelligence je ne crois pas ... je galère aussi souvent ...

bon courage

;o)

polux
0
POLUX31,
Je veux remplir une Listview(LstA) de la form "A" dans une Listview (LstB) dans une autre form "B" j'ai essayé comme ça :


Dim i As Long

Load B

With B

For i = 1 To LstA.ListItems.Count
.LstB.AddItem LstA.ListItems(i).ListSubItems(i).Text
Next i
.Show
End With



NB: ca na pas marché
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
31 oct. 2007 à 18:53
arfff non ça ne peut pas marcher ...

Pour manipuler des données il est préférable de les stocker dans des variables ou dans des tableaux. Récupère d'abord les items de listB dans un tableau puis fait passer les données vers lstA ... c'est plus propre ...

;o)

n'hésite pas si tu as un blème.

Polux
0
Bonjour,
J'ai ce qui suit POLUX31:
Public Function ListvwRun(LSV1 As ListView, LSV2 As ListView)

Dim lg As Long
Dim x As Long
Dim lstitem As ListItem


x = LSV1.ListItems.Count


ReDim Tabl(x) As Long

For lg = 1 To x

With LSV1.ListItems
Set lstitem = LSV2.ListItems.add(, , CStr(.Item(lg).SubItems(1)))
If Not IsNull(.Item(lg).SubItems(1)) Then lstitem.SubItems(1) = _
CStr(.Item(lg))
End With

Next

End Function
NB : RESTE A TROUVER A RECUPERER L'INDEX ?
0
Bonjour, POLUX31
Comment peut-on divier une Liste (ListBox) en n colonnes à partir d'une base de donnée, puis renvoyer chaque colonne dans Labels, Merci de m'aider.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 nov. 2007 à 12:16
Bonjour Nagnag

Peux-tu m'expliquer pourquoi tu veux renvoyer chaque colonne de la listbox dans un Label ?? C'est possible de faire des colonnes dans un listBox, mais il existe un composant qui fait très bien ça c'est le MSFlexGrid ou le DataGrid. Pour avoir plus d'info sur ces 2 composants, fait un tour sur le site http://www.developpez.com, et consulte la FAQ sur VB6.

Je crois que la collection Microsoft Forms 2.0, gère les colonnes dans les listBox ... sinon il faut utiliser une API (librairie intégrée à Windows) ... ensuite on peut effectivement renvoyer chaque colonne dans un label... moyennant quelques lignes de code qui vont bien ...

;o)

Polux
0
Nagnag Messages postés 3 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 2 novembre 2007
2 nov. 2007 à 12:48
C'est simple d'utiliser Datagrid,MSHFlexGrid,Datarepeater.... mais je veux dans la listbox, OK POLUX31
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 nov. 2007 à 13:30
voilà ce que j'ai trouvé (http://www.developpez.com) ... à toi d'adapter, mais je ne l'ai jamais utilisé:

Les items doivent être inserés dans la liste séparés par des tabulations, par exemple:



List1.Additem "champ1" & vbTab & "champ2" & vbTab & "champ3"


Si la police est à chasse fixe (Courrier, par exemple), les colonnes sont alors correctement alignées, mais si la police est à chasse variable (ce qui est le cas la plupart du temps), il faut utiliser les API de Windows pour faire un alignement correct, comme suit:


Placez ce code dans un module:


Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long

Public Const LB_SETTABSTOPS = &H192


Utilisez ensuite le code suivant pour produire une liste avec des champs alignés proprement:



Private Sub Form_Load()

'ce tableau va contenir les positions des tabulations (ce qui equivaut
'à la largeur des colonnes
ReDim tabstop(0 To 2) As Long

'on positionne les tabulations
tabstop(0) = 90
tabstop(1) = 130
tabstop(2) = 185

'on efface puis on réinitialise les tabulations
Call SendMessage(List1.hwnd, LB_SETTABSTOPS, 0&, ByVal 0&)
Call SendMessage(List1.hwnd, LB_SETTABSTOPS, 3, tabstop(0))
List1.Refresh

End Sub
0