Prob : Importation donnée XLS dans une listbox

Résolu
Signaler
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008
-
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006
-
Hello tout le monde,

Voilà, je me suis il y a maintenant à peine une semaine sur excel et le visualbasic qui est relié avec les macro d'excel.

Je suis sur un projet ou j'ai créer dans excel une tables que j'incrémente chaque jour avec de nouvelle donnée, ça marche nickel et tout, mais maintenant j'aimerai faire une list box qui recherche par critère, des informations précise.

Mon tableau de valeur excel, fait de e2 à y2 en colonne et indéfini au niveau des lignes.

Mon problème, c'est que dans ma list box, j'aimerai sélectionner que certaine colonne et pas toute... j'ai essayé mais en vain... :'(

Ils me prends sois toute les colonnes ou qu'une seul... j'ai essayé comme ça mais je connais pas toute les propiété de la listbox je pense.

dim lg   'variable ligne
For i=2 to 10000
 lg=i
ListBox1.List = (lg, 0) 'sélectionne la colonne 0 de la list box d'après ce que je crois
ListBox1.AddItem = Cells(lg, 6).Value 'ajoute dans la list box la valeur...
Else
 Exit For
End If

Mais voilà ça ne marche pas.... :'(

En gros et en disant ça simplement, j'aimerai tout betement pouvoir mettre les colonnes que je veux de mon tableau excel dans une list box... les conditions et tout ça je ferai après coup.

Merci de m'aider!!!

15 réponses

Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Re,

ça me mets tout dans la 1er colonne de la listbox !!

mais dans une listbox, tu as qu'une colonne Gokuan, si tu en veux plusieur utilise plutot la listview
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

pas le temps de gérer les éventuelles erreurs donc suit bien les instructions :

Ouvre un nouveau classeur, appuie sur Alt + F11 (ça ouvre l'éditeur vb), dans le menu Insertion, tu as Module, clique dessus, et une page blanches apparait.

Colle ce code et  remplace ce que je t'ai mis en commentaire (en vert dans le code) :
T'as plus qu'à appuyer sur F5 pour exécuter le code !

Sub ImportDonneesFichiersTexte()
    Dim strFile         As String
    Dim strAllText()    As String
    Dim strDonnees()    As String
    Dim ff              As Integer
    Dim i               As Integer
    Dim iCounter        As Integer
    Dim iNbLine         As Integer
    Dim iLigne          As Integer
    Dim iColonne        As Integer
    
strFile =  "C:\Documents and settings\<nom utilisateur>\Bureau\ValeursExcel.txt"
' ici place le bon chemin et nom du fichier texte

ff = FreeFile
Open strFile For Input As ff
    Contenu = Input(LOF(ff), ff)
Close ff

strAllText() = Split(Contenu, vbCrLf)
iNbLine = UBound(strAllText)
iCounter = 0: iLigne = 1: iColonne = 1

For i = 0 To iNbLine
    If Left(strAllText(i), 1) = "#" Then
        If iCounter >= 3 Then ThisWorkbook.Sheets.Add
        Sheets(iCounter + 1).Select
        Sheets(iCounter + 1).Name = Mid(strAllText(i), 2, Len(strAllText(i)))
        iCounter = iCounter + 1: iLigne = 1: iColonne = 1
    Else
        strDonnees = Split(strAllText(i), ";")
        Cells(iLigne, iColonne).Value = strDonnees(0)
        Cells(iLigne, iColonne + 1).Value = strDonnees(1)
        iLigne = iLigne + 1
        Erase strDonnees
    End If
Next i
Erase strAllText
End Sub

<small>Coloration syntaxique automatique [mortalino] </small>
       

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

Lu, merci du coup de main, mais le problème c'est que toi c'est une fichier texte que t'importe, alors que moi ma table est faite dans excel et depuis excel j'ai créer un bouton avec une macro qui lance un userform créer sous l'éditeur VB et dans ce userform, j'ai une listbox justement, et j'aimerai importer que certaine de mes colonnes de ma tables...

C'est tout, mais je sais vraiment pas comment m'y prendre... Mais merci quand même
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Lu

voici un exemple de procédure


Sub AjouteElement(Nom as String)


List1.AddItem Nom
end sub


utilisation :
tu tape dans ta textbox, les nom des colonnes que tu veux sour le format
NomA/NomB/NomC ...etc

Private Sub Command1_Click
dim ListElement() as String 
ListElement = Split(ListElement,"/")
For Depart = 1 to 2000
   For i = 0 to Ubound(ListElement)
      If Cells(Depart) = ListElement then    AjouteElement(Text1.Text)
   Next i
Next Depart

End sub

dans cette exemple, le Cells(i) pointe sur les noms de tes colonnes
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

re,
petite correction

remplace
If Cells(Depart) = ListElement then    AjouteElement(Text1.Text)

par
If Cells(Depart) = ListElement then    AjouteElement(i)


 
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

lol, merci aussi, mais ça m'aide pas beaucoup, je vois pas ou est la listbox dans votre code, je connais très bien le pascal, mais le vb, je nage un peu encore pour le moment
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

J'abuse vraiment...désolé!!
(j'ai du mal ,voici la correction de mon erreur!

If Cells(Depart) = ListElement(i) then    AjouteElement(Cells(Depart),5)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

me concernant, je suis désolé, je suis allée trop vite et je me suis trompé de topic.. 
Le mot importation m'a induit en erreur.
Je reposte sur le bon ! BombJack me comprendra, il a déjà répondu entre temps, t'auras une alerte mail  ;)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

voici un exemple de procédure
'ici on ajoute un nom dans la listBox
Sub AjouteElement(Nom as String)

List1.AddItem Nom  ' <- voici la listbox
end sub

utilisation :
tu tape dans ta textbox, les nom des colonnes que tu veux sour le format
NomA/NomB/NomC ...etc

Private Sub Command1_Click
dim ListElement() as String 
ListElement = Split(ListElement,"/")
For Depart = 1 to 2000
   For i = 0 to Ubound(ListElement)
' si le nom de la colonne excel correspond à ton choix 
    If Cells(Depart) = ListElement(i) then    AjouteElement(Cells(Depart),5)
' alors on l'ajoute à notre procédure "AjouteElement" 

   Next i
Next Depart

End sub
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

ahhhh ok, je viens de comprendre, mais je pourrai pas évité de tapé les colonnes que je veux dans un textbox, et tout simplement dans le code?
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

encore une erreur  <---- la honte :/

 
Sub AjouteElement(Nom as String)

List1.AddItem Nom  ' <- voici la listbox
end sub

utilisation :
tu tape dans ta textbox, les nom des colonnes que tu veux sour le format
NomA/NomB/NomC ...etc

Private Sub Command1_Click
dim ListElement() as String 
ListElement = Split(ListElement,"/")
For Depart = 1 to 2000
   For i = 0 to Ubound(ListElement)
' si le nom de la colonne excel correspond à ton choix 
    If Cells(Depart) = ListElement(i) then    AjouteElement(Cells(Depart,5))
' alors on l'ajoute à notre procédure "AjouteElement" 

   Next i
Next Depart

4h de sommeil aujourd'hui .....j'vais retourné dormir j'crois ...
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

lol, pas de souci, j'en ai pas beaucoup non plus , mais si t'arrivais juste à me dire comment évité ce textbox avec le nom des colonnes que j'aimerai, je pourrai pas mettre le nom des colonnes dans le code directement comme ça plus besoins de les écrire dans un textbox...
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

oui tu peux,

Dim ListElement() as String

Private Sub Form_Load()
   ListElement(0) = "ToTo" 
   ListElement(1) = "TiTi"
End Sub

Sub AjouteElement(Nom as String) 
   List1.AddItem Nom  ' <- voici la listbox
end sub

Private Sub Command1_Click
dim ListElement() as String 
ListElement = Split(ListElement,"/")
For Depart = 1 to 2000
   For i = 0 to Ubound(ListElement)
    If Cells(Depart) = ListElement(i) then    AjouteElement(Cells(Depart,5))
   Next i
Next Depart
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

merci, je vais manger et je teste ça après ^^ Bonne ap aussi si jamais!
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

Re hello, alors j'ai essayé ton code, mais ça ne marche pas... :o( J'ai essayé de mon côté de trouvé une astuce, mais j'arrive pas, ça me mets tout dans la 1er colonne de la listbox... j'arrive pas mettre le reste sur les autres colonnes...