cs_Achi
Messages postés128Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 mai 2008
-
27 févr. 2006 à 17:12
cs_Achi
Messages postés128Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 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!!
Phalalis
Messages postés83Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention19 février 20121 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
cs_Achi
Messages postés128Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 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!!
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 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 ;-)