De l'aide pr un nul en VBA

Résolu
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008 - 27 févr. 2006 à 17:12
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008 - 28 févr. 2006 à 13:08
bonjour,
je souhaiterais connaitre le code en VBA pr importer les valeurs d'un fichier text dans plusieurs cellules Excel bien distincts...
Par exemple si mon fichier .txt ressemble à çà:

1098
342
2
34567

comment faire pr que ma première ligne s'affiche sur une même ligne Excel mais dans des cellules non contiguës (genre A2 pr 1, A4 pr 0, etc...).
Merci de bien vouloir m'aider si vous me lisez!!

4 réponses

Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
27 févr. 2006 à 17:31
deja premiere chose, il faut lire le txt.
Je sais pas si excel est different d'access mais sous access pour lire un txt je fait ca:

Open (chemin & "nom_fichier.txt") For Input As #1
arret = False
Do Until (EOF(1) Or arret)
Line Input #1, texte
If InStr(texte, mot) <> 0 Then
res = texte
arret = True
End If
Loop

cette exemple c dans le cas ou tu recherche un mot bien precis.
sinon tu met autant de line input #1 qu'il y a de lignes.
et tu doit pouvoir initialiser ton champs avec la valeur texte que tu a recuperer

voila, je sais pas si ca ta aider.
3
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
27 févr. 2006 à 17:41
ok merci !! je pige un peu...
mais comment peux tu choisir la cellules ou tu veux inscrire par exemple le 1er chiffre de la premiere ligne...
si c flou je suis dsl!!
0
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
28 févr. 2006 à 12:37
salut,

pour répondre à ta dernière question, il suffit d'incrémenter de 2 colonnes la cellule de destination.

dim Mycell as range
set Mycell = cells(1,1) ' la cellule A1
Open (chemin & "nom_fichier.txt") For Input As #1
arret = False
Do Until EOF(1)
Line Input #1, texte
mycell.value = texte
set mycell = cells(1,mycell.column +2) ' on redefini la celulle comme étant la cellule précédente décalée de 2 colonnes.
End If
Loop

et voilà,

attention quand même si ton fichier contient trop de données, tu rique de dépasser la colonne IV. Dans ce cas, il faut retourner à la ligne suivante.

Pour parer ce problème, il suffit d'ajouter un compteur qui incrémente la ligne tous les 128 enregistrements.

Ce qui donne :

dim Mycell as range
Dim compteur as integer

set Mycell = cells(1,1) ' la cellule A1

Open (chemin & "nom_fichier.txt") For Input As #1
Do Until EOF(1)
Line Input #1, texte
mycell.value = texte
compteur = compteur +1
If compteur Mod 128 = 0 Then
Set mycell = Cells(mycell.Row + 1, 1) ' on retourne à la première cellule de la ligne suivante
compteur = 0
Else
Set mycell = Cells(mycell.Row, mycell.Column + 2)
End If
Loop

Pour les explications :

Compteur Mod 128 renvoie le reste de la division de compteur par 128.
On obtient donc 0 quand compteur = 128 ( Hé oui, 128 / 128 : reste 0comme compteur s'incrémente de 1 quand on décale de 2 cellules, compteur 128 quand on arrive sur la colonne IU la colonne suivante doit donc être IW, qui n'existe pas. On bascule donc sur A, d'ou set mycell cells(mycell.row +1, 1), soit première colonne de la ligne suivante.

Voilà,

+++ et bon courage
[mailto:K@lobit K@lobit] <- ne pas clicker ici ;-)
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
28 févr. 2006 à 13:08
Merci beaucoup Kalobit... ça fait plaisir de voir cette solidarité entre vous... et surtout de prendre le tps d'aider les débutants...
0
Rejoignez-nous