Convertion de données sous Excel en VB

Signaler
Messages postés
5
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
26 août 2005
-
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016
-
Bonjours,

Je cherche à convertir des données sous excel en VB mais apparement le code que j'utilise n'est pas bon.

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 5), Array(6, 1), Array(10, 1), Array(12, 1), Array(13, 1), _
Array(14, 1), Array(15, 1), Array(21, 1), Array(27, 1), Array(33, 1))

Ce code est tiré d'une macro VBA faite sous Excel.

Si quelqu'un peut m'aider

9 réponses

Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
salut

que veux-tu faire

qu'est ce que tu as comme erreur ?
Messages postés
5
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
26 août 2005

Le but ultime est de copier le contenu d'un doc txt et de le coller dans une feuille excel en convertissant les données pour les ranger dans des colonnes différentes.
Messages postés
94
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 octobre 2005
3
Bonjour,

Pourquoi tu n'ouvres pas directement ce fichier .txt dans excel ?

Sacha

\!/
00
!
Messages postés
5
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
26 août 2005

Si je fais cela, le format de mes données n'est pas correct.

Il faut que j'ouvre une feuille excel et que je paramètre en format teste ma colonne avant.

Tout cela fonctionne, mais en ouvrant mon fichier texte avec word, celui-ci me convertit les données. donc le résultat est faussé.

Voici un bout de mon code

If Elémentfichier.Name = StrLot2 Then
'ouverture du fichier texte et lecture des données
'Set Fichier1 = file.OpenTextFile(StrLot3, ForReading)
'Fichier1.Item.OpenAsTextStream ForReading
'Fichier1.

Set wrd = New Word.Application
'wrd.ShowMe
'wrd.Visible = True
wrd.Documents.Open (StrLot3,,,,,,,,,)
wrd.Selection.WholeStory
wrd.Selection.Copy


Set xls = Workbooks.Add
xls.Worksheets(1).Columns("A:A").Select
Selection.NumberFormat = "@"
xls.Worksheets(1).Range("A1").Select
ActiveSheet.Paste

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(6, 1), Array(10, 1), Array(12, 1), Array(13, 1), _
Array(14, 1), Array(15, 1), Array(21, 1), Array(27, 1), Array(33, 1))
'xls.Worksheets(1).Range("A1").Select
'Selection.NumberFormat = "yy/mm/dd"

'Set Entete = Workbooks.Open(Config.ConfigMod)
' Entete.Worksheets(1).Rows("1").Select
'Selection.Copy

' xls.Worksheets(1).Rows("1:1").Select
'Selection.Insert shift:=xlDown
' xls.Worksheets(1).Rows("1:1").Select
' ActiveSheet.Paste

xls.SaveAs Config.ConfigStrE & StrNlot & ".xls"

wrd.Documents.Close
wrd.Quit
xls.Close
' Entete.Close
Set xls = Nothing
'Set Entete = Nothing
Messages postés
94
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 octobre 2005
3
Salut,

une piste peut-être,

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(6, 1), Array(10, 1), Array(12, 1), Array(13, 1), _
Array(14, 1), Array(15, 1), Array(21, 1), Array(27, 1), Array(33, 1))
'xls.Worksheets(1).Range("A1").Select

dans "FieldInfo:=Array(Array(0, 1)" le second chiffre fait référence au format

1 format général
2 format texte
4 format date
5 pas importer

si cela peut aider.

\!/
00
!
Messages postés
5
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
26 août 2005

Désolé cela ne passe pas non plus.

En fait j'ai l'impression que mon pb ce situe au moment où je colle les données dans Excel. Il n'interprète pas les données comme étant du texte simple.

Merci pour ton aide ;>
Messages postés
5
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
26 août 2005

sais-tu comment ouvrir mon document sous word en le convertissant ?

Dans la propriétée open, on peut lui passer des paramètres, mais je ne sais pas à quoi cela correspond.
Messages postés
94
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 octobre 2005
3
Re,

Quand tu utilises la fonction paste avec excel il colle aussi bien la formule,la valeur et le format de cellule,
Pour coller avec des option utilise la méthode PasteSpécial.

dans excel : click droit et pastespécial tu as déja plein d'option de collage regarde celle qui te convient, après enregistre une macro en effectuant la manip souhaitée>lis dans l'éditeur VBA comment récupéré la méthode.
Quand tu utilises la fonction paste avec excel il colle aussi bien la formule,la valeur et le format de cellule,

Pour ce qui est de word j'ai jamais fait de vba avec cet appli donc ...

Sacha
\!/
00
!
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016

à mon avis, tu devrais voir autrement, les array sont pas formater comme les tables dans excel (et vu que je fais l'inverse de excel vers word ou ppt pour le boulot) :
- tu récup l'objet tableau dans word (objet avec colonnes et lignes, mais pas foutu pareillement que dans excel)
- pour chqe colonne : tu gères un tableau ou une collection de données, mais que tu convertis entre temps, avant de remplir ta collection
- après, pour éviter de gèrer les copiés/collés sans gèrer les tailles des tableaux, un double for each elements dans macollection/for each item dans macollection range.offset.value madonnee et range.offset.format monnouveauformat

...

coïto ergo sum