cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 13 déc. 2008 à 11:38
Bonjour banzet
Dans le cas de chargement d'un fichier sous Excel, la solution est VBA Excel. Peux-tu essayer le Sub suivant ?
Fais-en un copier-coller dans le code de la feuille de calcul et exécute-le (touche F5). Le fichier liste.txt doit être dans le même répertoire que le classeur Excel.
<hr />
Option Explicit
Sub chargeFichier()
Dim numeroFichier As Integer
Dim bufferFichier As String
Dim TableActivite As Variant
Dim TableChamps As Variant
TableActivite = Array("Activité 1", "Activité 2", "Activité 3")
numeroFichier = FreeFile
Dim i As Integer
Dim j As Integer
Dim k As Integer
Cells.Clear
Open ActiveWorkbook.Path & "\liste.txt" For Input As #numeroFichier
For i = 0 To 2
Cells(1, i + 2).Value = TableActivite(i)
Next
Do Until EOF(numeroFichier)
Line Input #numeroFichier, bufferFichier ' lecture séquentielle du fichier .\liste.txt
TableChamps = Split(bufferFichier, ",") ' répartition des champs dans un tableau
j = 2
' recherche de la ligne Do Until TableChamps(0) Cells(j, 1).Value Or Cells(j, 1).Value ""
j = j + 1
Loop
k = 0
' recherche de la colonne Do Until TableChamps(1) TableActivite(k) Or k UBound(TableActivite)
k = k + 1
Loop
'
If TableChamps(1) = TableActivite(k) Then
Cells(j, 1).Value = TableChamps(0)
Cells(j, k + 2).Value = TableChamps(2)
Else
MsgBox "Ligne " & j & " : la colonne " & TableChamps(1) & " est introuvable."
End If
Loop
Close #numeroFichier
End Sub
banzet
Messages postés5Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention14 décembre 2008 13 déc. 2008 à 07:09
Bonjour Orohena,
Merci pour ton message, effectivement, je me suis un peu précipité hier dans mon message.
En fait, je suis un vrai débutant dans le domaine de la programmation (tous langages confondus).
Donc, si j'ai bien compris tout ce que j'ai lu sur Internet, j'ai deux langages à ma disposition : VBA avec Excel ou VBS directement dans Windows.
Le seul problème c'est que je ne sais pas lequel choisir (voir un autre) ni comment faire.
Voila, j'espère que ce complément d'informations a répondu à ton interrogation.
banzet
Messages postés5Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention14 décembre 2008 13 déc. 2008 à 21:59
Bonsoir Orohena,
Je te remercie beaucoup pour pour ce code.
Je l'ai testé et il m'indique une erreur "Ligne 3 : La colonne Activité 3 est introuvable" après avoir traité la personne 1.
Puis si je fais OK, il traite la personne 4 mais que l'activité 1.
De plus j'ai remarque que tu avais mis les activités dans un tableau hors, mon fichier TXT comporte plusieurs centaines de personnes et d'activités.
Ce n'est pas grave et je te remercie encore de ce que tu as fait et je vais essayer d'adapter ton code à mon besoin (maintenant que j'ai compris comment faire).
Bonne soirée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
banzet
Messages postés5Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention14 décembre 2008 13 déc. 2008 à 22:20
Re Bonsoir Orohena,
J'ai fais ceci et ça a l'air de fonctionner :
<hr size="2" width="100%" />Sub chargeFichier()
Dim numeroFichier As Integer
Dim bufferFichier As String
Dim TableChamps As Variant
numeroFichier = FreeFile
Dim i As Integer
Dim j As Integer
Dim k As Integer
Cells.Clear
Open ActiveWorkbook.Path & "\liste.txt" For Input As #numeroFichier
Do Until EOF(numeroFichier)
Line Input #numeroFichier, bufferFichier ' lecture séquentielle du fichier .\liste.txt
TableChamps = Split(bufferFichier, ",") ' répartition des champs dans un tableau
' recherche de la ligne
j = 2 Do Until TableChamps(0) Cells(j, 1).Value Or Cells(j, 1).Value ""
j = j + 1
Loop
' recherche de la colonne
k = 2 Do Until TableChamps(1) Cells(1, k).Value Or Cells(1, k).Value ""
k = k + 1
Loop
' copie des valeurs
Cells(j, 1).Value = TableChamps(0)
Cells(1, k).Value = TableChamps(1)
Cells(j, k).Value = TableChamps(2)
Loop
Close #numeroFichier
End Sub
<hr size="2" width="100%" />Qu'en penses-tu ?
banzet
Messages postés5Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention14 décembre 2008 14 déc. 2008 à 18:00
Bonsoir,
Les fautes sont corrigées.
La première ligne se remplie toute seule avec le même système que tu as fait pour les lignes.
J'ai vérifié et ça fonctionne parfaitement bien ... encore merci pour le coup de main.