VBA et excel (tri listbox)

waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013 - 18 janv. 2007 à 01:17
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 à 00:35
Bonjour,
désolé si j'ai posté dans la mauvaise section mais je n'ai pas trouvé la section VBA....

Voici mon probleme, j'ai crée une form sous excel sur laquel on a deux checkbox correspondant soit au type "TSC" soit au type "MCC"
quand je clique sur l'un des checkbox (par exemple "MCC") j'aimerai lister dans une listbox les réferences contenant "MMC", et ceux ci a partir de l'onglet "References!Produits" qui contient des refrences variables.
Par exemple "Réferences!Produits" contient les variables suivantes;

<col style=\"width: 248pt;\" width=\"330\" />----
Calibrateur
PPX/Meth Intermédiaire, ----
Calibrateur
PPX/Meth Haut, ----
Réactifs TSC Amphétamines , ----
Réactifs MCC
Buprénorphine, ----
Réactifs TSC Multilevel
Cannabis , ----
Réactifs MCC 6-MAM 

Je souhaite si je coche le checkbox "MMC" que ma liste box ne contienne que:

Réactifs MCC Buprenorphine
Réactifs MCC 6-MAM

Comment fait on cela? la je seche

merci

10 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 à 01:48
Salut,

il faut trier tes données à la lecture de celles-ci avant importation dans ta ListBox.
Bref, il faut parcourir ta plage de données à l'aide d'une boucle For i = ... To ... Next (ça c'est pour incrémenter la valeur de la ligne grâce à i pour lire les données, dans Cells(i, N° colonne).Value.
Ensuite, dans chaque passage de boucle, avec InStr(1, Cells(i, N° colonne).Value, "MMC"), tu pourras déterminer s'il faut faire un AddItem ou non dans ta ListBox
(même manoeuvre avec TSC)

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
18 janv. 2007 à 12:32
lut mortalino

c'est se que je souhaite faire (instr et additem) mais mon souci c'est la mise en oeuvre du code avec une boucle for sur une colonne excel de longue variable.

si tu peux me donner un tit exemple, ce serait cool

en tout cas merci pour ton aide
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 à 14:33
Salut,

en gros, ça fait ça, en partant du principe que tes données sont de A2:A10000 :

Dim i As Integer

For i = 2 To 10000
    If InStr(1, Cells(i, 1).Value, "MMC") > 0 Then ComboBox1.AddItem Cells(i, 1).Value
Next i

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

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
18 janv. 2007 à 18:04
re,

j'ai fais quelque chose de recemblant ca fonctionne pas....

With Sheets("References")
i = 1
If CheckBox1.Value = True Then
a = "MCC"
Do
i = i + 1
b = Cells(i, 1).Value
If InStr(b, a) = 0 Then
ListBox1.AddItem b
End If
Loop Until Cells(i, 1).Value = ""
End If

If CheckBox2.Value = True Then
a = "TSC"
Do
i = i + 1
b = Cells(i, 1).Value
If InStr(b, a) = 0 Then
ListBox1.AddItem b
End If
Loop Until Cells(i, 1).Value = ""
End If
End With

D'ou viens le probleme?
0

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
18 janv. 2007 à 18:27
Essaie ton code comme ceci :

With Sheets("References")  '*** sert à rien...
    i = 1
    If CheckBox1.Value = True Then
        a = "MCC"
        Do
            i = i + 1
            b = Cells(i, 1).Value
            If InStr(1, b, a) > 0 Then ListBox1.AddItem b ' MODIF
ici
        Loop Until Cells(i, 1).Value = ""
    End If

    If CheckBox2.Value = True Then
        a = "TSC"
        Do
            i = i + 1
            b = Cells(i, 1).Value
            If InStr(1, b, a) = 0 Then ListBox1.AddItem b ' MODIF
ici
        Loop Until Cells(i, 1).Value = ""
    End If
End With  '*** sert à rien...

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

@++


  --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 à 18:29
Attention, j'ai oublié de coriger dans la seconde partie :
supprime la ligne  If InStr(1, b, a) =  0 Then ListBox1.AddItem b ' MODIF ici
et remplace par   If InStr(1, b, a) > 0 Then ListBox1.AddItem b ' MODIF ici

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
18 janv. 2007 à 22:01
re,

pourquoi le "With sheets ("references")" ne sert a rien, pourtant j'ai plusieurs onglets... il faut bien savoir avec quel onglet travailler non?
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 à 22:11
Dans ces cas là, devant les Cells(...).Value, il faut un point (.) :
.Cells(...).Value

Si t'en mets pas, le With ... End With est inutile

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
18 janv. 2007 à 23:31
merci ca marche!!!

encore une tite question, je veux exporter vers une listbox a deux colonnes, en metant dans la deuxieme colonne du listbox la colonne adjacente de excel.... j'ai été clair?

de plus il me semble que le listview permet l'edition des données, est il donc possible de faire la meme chose avec un listview?

merci
0
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 à 00:35
Pour le ListView, oui, c'est certainement possible, mais je ne l'utilise pas donc je n'ai pas de code à te fournir à ce sujet.

Sinon, concernant le ListBox à deux colonnes, voici un exemple de code, pour ceci, ouvre un nouveau projet, Insère des données de A1 à B5, avec en A1 et B1, un titre de colonne, va dans l'éditeur vba, insère un UserForm, un Listbox, colle ce code, et fais F5 :

Private Sub UserForm_Initialize()
        Dim LastLine As Integer
        
LastLine = Range("A65536").End(xlUp).Row

    With ListBox1
        .Width = 150
        .Height = 90
        .Top = 6
        .Left = 6
        .ColumnHeads = True
        .ColumnCount = 2
        .ColumnWidths = 75
        .TextAlign = fmTextAlignCenter
        .RowSource = "Feuil1!A2:B" & LastLine
    End With
End Sub


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

Amuse toi bien
@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Rejoignez-nous