Lecture fichier excel

manud31 Messages postés 81 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 16 mai 2006 - 12 janv. 2006 à 16:38
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 12 janv. 2006 à 21:47
Voici mon code


Private Sub Form_Load()


On Error Resume Next 'les erreurs sont ignorées


crlf = Chr$(13) + Chr$(10)


Open "D:\ valeur_du_pas.xls" For Input As #1


Line Input #1, texte


tout = texte


If Len(tout) <> 0 Then


While Not EOF(1)


Line Input #1, texte


tout = tout + crlf + texte


Wend


End If


pas.ListIndex = tout


Close #1


End Sub


Données :


Pas est le nom donné à ma combo box


Valeur-du-pas est le nom de mon fichier Excel dans lequel je veux récupérer mes valeurs


Donc je voudrais récupérer les valeurs dans mon fichier Excel, afin de les inclure dans la combo box.


Je n’arrive pas à faire marcher cette instruction !


Si quelqu’un peut m’aider !!!!

2 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
12 janv. 2006 à 21:38
Bonsoir,

Tu n'y arriveras pas avec cette méthode, un fichier.xls ne peut être ouvert qu'avec Excel.



jpleroisse
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
12 janv. 2006 à 21:47
Non, il faut utiliser une autre techniques !!!

Si tu ouvres les fichiers, tu liras tous leurs octets.
Or, tu ne connais pas la structure (des octets) des fichiers Excel. Tu
ne peux donc t'amuser à lire directement!!! C'est un peu plus compliqué
que ça!

Tu es donc obligé de passer par Excel lui-même.



Pour se faire tu crées un objet Application Excel puis, de celui-ci un
objet Workbook (Classeur). De cet objet (reflétant donc un classeur!)
tu ouvres ton fichier via la Méthode "Open" de l'objet
Workbook
.

Ensuite, tu crées, de cet objet (ce fichier/classeur ouvert), une
variable objet faisant référence à Worksheet (Feuille de travail).

Ainsi tu peux accéder, sans avoir ouvert Excel, accéder à toutes les
fonctions du VBA, des objets, méthodes et propriétés de Excel. Et donc,
accéder à toutes les cellules de ton fichier.



Ensuite, il faut faire du VBA pour récupérer la valeur de chaque
cellule de la colonne 1 ("A" en notation L1C1). Le scanne s'arrêtera
lorsqu'il y aura une cellule vide car on considérera que la liste est
finie. Mais là, c'est à toi de voir comment tu veux programmer ça !!!

Et ça doit donc te donner un truc du genre :

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("D:\ valeur_du_pas.xls
")
Set xlSheet = xlBook.Worksheets(1)

varCompteur = 1
Do
varText = xlSheet.Cells(
varCompteur,
1).Value 'VBA
If varText = "" Then Exit Do 'Une cellule vide a été rencontrée. La liste est donc finie. On sort.
'Else donc
Pas.AddItem varText
varCompteur = varCompteur + 1
Loop

Bon, je l'ai pas testé mais a peu de choses près ça doit fonctionner!
Pense à rajouter la "Référence" (cf. menu Projet) à "Microsoft Excel ..." car autrement tu ne pourras pas utiliser ces objets appartenant à Excel!

Petit conseil : Nome tes contrôles et variables de manière explicite. Evite de nomer un contrôle ComboBox "Pas". Nome le plutôt "cboPas" pour ComBobOx, ... Là, je te laisse te référer à la MSDN (l'aide du VB).

Et aussi : PENSE A TOUJOURS nous dire, lorsque tu poses une question sur le forum, avec quel langage tu programmes et en quelle version.

Le code ci-dessus est en VB6. Si tu es en VBA (Excel par exemple) il ne sera pas viable!!!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Rejoignez-nous