charger un Combobox depuis un fichier .csv

JORDAN

XLDnaute Impliqué
bonjour tout le monde, le Forum,

Je suis à la recherche d'un code permettant de charger un Combobox
avec des données dans un fichier .csv

Auriez-vous un exemple ou un lien avec des infos à ce sujet
Malgré plusieurs recherches, je n'ai rien trouvé de satisfaisant

Merci pour votre aide et bonne journée
 

mromain

XLDnaute Barbatruc
Re : charger un Combobox depuis un fichier .csv

bonjour JORDAN,

voici un code qui ajoute chaque ligne d'un fichier texte (ou csv) à une combobox :
Code:
Dim myFso As Object, csvFile As Object
Set myFso = CreateObject("Scripting.FileSystemObject")

ComboBox1.Clear
Set csvFile = myFso.OpenTextFile("E:\XLS\test\Nouveau Document texte.csv", 1)
While Not csvFile.AtEndOfStream
    ComboBox1.AddItem csvFile.ReadLine
Wend

csvFile.Close
Set csvFile = Nothing: Set myFso = Nothing

a+
 

mromain

XLDnaute Barbatruc
Re : charger un Combobox depuis un fichier .csv

Re,
Je reviens avec le code de mromain,
Comment peut-on modifier le code pour récupérer les données de la 2ème colonne
et charger A,B,C

Exemple :

1;A;1.25
2;B;2.50
3;C;3.75

Merci

re,

voici le code modifié :
Code:
Dim myFso As Object, csvFile As Object
Set myFso = CreateObject("Scripting.FileSystemObject")

ComboBox1.Clear
Set csvFile = myFso.OpenTextFile("E:\aMiki\XLS\test\Nouveau Document texte.csv", 1)
While Not csvFile.AtEndOfStream
    ComboBox1.AddItem [COLOR=Red][B]Split(csvFile.ReadLine, ";")(1)[/B][/COLOR]
Wend

csvFile.Close
Set csvFile = Nothing: Set myFso = Nothing

a+
 

JORDAN

XLDnaute Impliqué
Re : charger un Combobox depuis un fichier .csv

Re,

Merci mromain pour ton aide
c'est encore parfait
je suis assez surpris de la rapidité de chargement du Combobox
Je viens de faire un test avec 5000 références à charger
et en même pas 1 seconde le tour est joué

Merci beaucoup pour ton aide et ta rapidité à répondre
 

JORDAN

XLDnaute Impliqué
Re : charger un Combobox depuis un fichier .csv

Re,

Je viens de modifier le code comme ceci pour charger uniquement
les mots commençant pas la lettre saisie dans le Combobox
mais il y a des ratés et je n'arrive pas à comprendre pourquoi
si je tape A dans le Combobox, j'ai bien les mots commençant par A
mais aussi d'autres mots ne commançant pas par A
Une petite idée sur mon erreur ??

Merci à vous et bonne soirée

Code:
Public CbxDes As String

Sub ChargCbx()
Dim NbreCar As Integer
Dim myFso As Object, StoCsv As Object

On Error Resume Next

Set myFso = CreateObject("Scripting.FileSystemObject")

NbreCar = Len(CbxDes) ' CbxDes --> lettre saisie dans le Combobox
USF1.ComboBox1.Clear
Set StoCsv = myFso.OpenTextFile("C:\LIBRAIRIE\STOCK.csv", 1)
While Not StoCsv.AtEndOfStream
If Left(Split(StoCsv.ReadLine, ";")(1), NbreCar) = CbxDes Then USF1.ComboBox1.AddItem Split(StoCsv.ReadLine, ";")(1)
Wend

StoCsv.Close
Set StoCsv = Nothing: Set myFso = Nothing

End Sub
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : charger un Combobox depuis un fichier .csv

bonjour Jordan,

voici la macro modifiée (et pas testée) :
Code:
Public CbxDes As String

Sub ChargCbx()
Dim NbreCar As Integer
Dim myFso As Object, StoCsv As Object, csvLine As String

On Error Resume Next

Set myFso = CreateObject("Scripting.FileSystemObject")

NbreCar = Len(CbxDes) ' CbxDes --> lettre saisie dans le Combobox
USF1.ComboBox1.Clear
Set StoCsv = myFso.OpenTextFile("C:\LIBRAIRIE\STOCK.csv", 1)
While Not StoCsv.AtEndOfStream
    csvLine = StoCsv.ReadLine
    If Left(Split(csvLine, ";")(1), NbreCar) = CbxDes Then USF1.ComboBox1.AddItem Split(csvLine, ";")(1)
Wend

StoCsv.Close
Set StoCsv = Nothing: Set myFso = Nothing

End Sub

en fait, il faut savoir qu'à chaque StoCsv.ReadLine, on lit la ligne suivante du fichier.
donc si on considère ta boucle
Code:
While Not StoCsv.AtEndOfStream
    If Left(Split(StoCsv.ReadLine, ";")(1), NbreCar) = CbxDes Then USF1.ComboBox1.AddItem Split(StoCsv.ReadLine, ";")(1)
Wend
* la première fois que tu rentre dedans, le If équivaut à :
---> si le 2eme élément de la Ligne 1 commence par CbxDes, alors ajouter la Ligne 2
* et la deuxième fois que tu rentre dedans, le If équivaut à :
---> si le 2eme élément de la Ligne 3 commence par CbxDes, alors ajouter la Ligne 4
* etc...

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 308
Messages
2 087 104
Membres
103 469
dernier inscrit
Thibz