10 fichiers textes a transférer dans excel

cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 10 mai 2005 à 20:15
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 12 juil. 2005 à 10:38
Bonjour a tous

J'ai actuellement un petit soucis avec 10 fichiers au format cvs (ce sont des fichiers qui peuvent être ouvert avec le bloc note).

Les 10 fichiers sont les suivants: date.cvs, heure&prod.cvs et poste1.cvs à poste8.cvs

Dans le fichiers date on retrouve la date sous cette forme : 02,05,10,05 (le premier des chiffres correspond au jour de la semaine ici 02 pour mardi et les 3 autres chiffres correspondent a la date ici 05/10/05).

Dans le fichier heure&prod on retrouve l'heure et la production journalière sous cette forme: 15248,19,56,58 (le premier des chiffres est la production journalière et les 3 chiffres qui suivent correspondent a l'heure ici 19H 56Min 58Sec).

Les fichiers poste1 à poste8 on retrouve le nombre d'erreurs par poste et le temps pendant lequel le poste à été en erreur, ils se présentent sous cette forme : 15,00,32,12 (ce qui signifie que le poste a eu 15 erreurs ce qui a conduit a 32Min et 12Sec d'arrêt).

Ces 10 fichiers peuvent être complétés à différent moment de la journée ce qui peux donner:
date.cvs -> 02,05,10,05;02,05,10,05;03,06,10,05
heure&prod.cvs -> 15248,19,56,58;12354,22,35,24;13548,12,15,22
poste1.cvs -> 15,00,32,12;23,00,44,34;6,00,15,39
J'ai mis des couleurs pour mieux comprendre ce qui va ensemble (les autres postes se présentent sous la même forme que le poste1).

Après ces longues explications (j'espère que j'ai été clair), j'en viens a mon problème.
En fait je voudrais pouvoir récupérer ces données sous excel afin de pouvoir les traiter selon mes besoin. Le problème principale est que toutes les données des fichiers ne doivent pas être appellée dans le excel, l'utilisateur doit pouvoir choisir lequels ils veux en fonction de l'heure et de la date.
Une fois que l'utilisateur a choisi ces les dates et les heures qu'il veux le prog en VB doit envoyer les données sous excel.

Voila j'espère avoir été clair. Sinon demandez moi.

Svp répondez c'est très important pour moi, merci.

52 réponses

cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
11 mai 2005 à 12:41
Svp aidez moi j'en ai besoin assez rapidement!
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
13 mai 2005 à 11:00
Bonjour,

j'ai eu le même probléme il y a quelques temps, la solution la plus simples que j'ai trouvé est de faire une importation bête et méchante des fichiers d'entrée dans une (ou plusieurs) feuille excel, de creer les listes de choix a partir de ces feuilles et de mettre les résultats dans une feuille différente.
l'autre solution consisterait a faire du traitement de caractéres (tu recré les données que tu veux dans des variables et tu crée les listes a partir de ces variables), le probléme que peut poser cette methode et que ca devient rapidement une usine a gaz.

En ésperant t'avoir aidé

Mat
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
17 mai 2005 à 16:58
Ta première solution me parait intéressante, mais comment fais tu pour créer la liste une fois l'importation faite?
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
18 mai 2005 à 09:22
Salut,

J'ai pas tres bien compris ta question c la forme des données importées qui te dérange ou la création de la liste ?
Ce que j'avais oublié de te dire la dérniere fois est que tu peux aussi creer de feuilles intermediaire dans lesquelles tu trie et tu met en forme les données
ex:03,06,10,05 ==> 06/10/05
c du traitement de chaine mais bon de toute facon faudra que tu passe par la a un moment ou un autre
une fois que c fait tu crée une list box et tu utilise le code qui va bien pour la remplir

Mat
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
18 mai 2005 à 19:53
Oui en fait je voudrais pouvoir analysé les données sous excel.
Le but étant au final de voir les postes les plus pénalisant.

Pour se faire je voudrais pouvoir afficher les données dans une feuille intermédiaire et ensuite pouvoir choisir les données que je veux mettre dans la feuille excel définitive.

Etant donnée que les données sont a chaque fois 4 chiffres j'aimerais les afficher sous forme de colonne. Avec en première ligne la date en deuxième ligne l'heure et la production et ensuite sur les autres lignes faire suivre les differents postes.

Et donc une fois que ces colonnes sont crées je voudrais pouvoir choisir les données que je désire envoyer dans la feuille définitive.

Voila j'espère avoir été clair. Et j'espère sincérement que tu pourras m'aider car je n'ai aucune idée sur la manière de procédé, je n'ai jamais fais de traitement de données En plus je n'ai plus que deux semaine pour réaliser ceci donc je suis en panique totale...
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
19 mai 2005 à 09:14
Bonjour,

deja ce que tu peux faire lors de l'importatoin c'est de choisir les virgules et les points virgules comme separateurs de colonnes ensuite il te reste plus qu'a concatener les valeurs des differentes colonnes dans ta feuille intermediaire

ex : sheets("Int").cells(1,1)=sheets("Import").cells(1,1) & sheets("Import").cells(1,2)

apres pour creer tes liste t'a plus qu'a creer plusieurs listbox et faire des petites boucles du style pour les remplir

for i=1 to 10
list1.AddItem (sheets("Int").cells(1,i).value)
next i

Mat
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
19 mai 2005 à 12:27
Mais pour l'importation je dois faire comment? Parce qu'en fait l'utilisateur doit pouvoir choisir le dossier dans lequel se trouve mes fichiers .csv

C'est avec une boite common dialogue non?
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
19 mai 2005 à 13:55
tout a fait,

tu place un boite Common Dialog
et ensuite la comande est assez simple
commondialg.showopen
fichier=commondialiog.filename
voila pour l'utilisation du common dialog

aprés pour l'importation le plus simple est d'enrigistrer un macro dans laquelle tu remplace le fichier appellé par la variable fichier renseigné par le common dialog

ca donne un truc comme ca :
With Sheets("txt").QueryTables.Add(Connection:="TEXT;" & fichier & "", Destination:=Range("A1"))
.Name = pathname
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.Refresh BackgroundQuery:=False
End With

voila
si tu as encore besoin n'hésite pas

Mat
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
19 mai 2005 à 15:17
Je ne comprend pas trop ce que tu appelles "variable fichier" et les macros je ne sais pas trop ce que c'est non plus.

Je suis désolé mais comme je l'ai dit précédement, c'est la première fois que je fais un prog dans ce genre la.

En tout cas merci pour l'aide que tu m'apporte.
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
19 mai 2005 à 16:42
Bon a va reprendre depuis le début c vrai j'ai pas été tres clair
fichier est le nom de la variable contenant le chemin (endroit ou se trouve le fichier sur le HD) du fichier que tu veux importer on va l'appeller toto ce sera moins ambigu

ensuite tu dis que c la premiere fois que un prog dans ce genre mais rassure moi tu connait le language VB (je te prend pas pour un con j'essais juste de voir ou on en est) si tu le connai pas on peut s'en sortir mais ca risque d'etre un peut long

donc une macro c tout con sous excel tu va dans le menu outil => macro => nouvelle macro
tu fait ce que t'as a faire et ensuite t'appui sur stop (il enregistre tout ce que tu fais dans un modele VB donc fait gaffe a ce que tu fait le code devient vite impinable sinon).
une fois ca fait tu fais Alt + F11 t'ouvre le module en question et tu modifie le code comme tu le souhaite

si tu un compte ICQ envoie moi tes coordonnées en message privée ce sera peut etre plus simple de discuter par messagerie instantanée

Mat
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
20 mai 2005 à 11:18
Oui j'ai déjà programmé en VB. Mais c'était des petit prog pour les cours d'info.

Par contre pour ICQ j'ai pas. Mais si tu as MSN je l'ai aussi.

Le PB que j'ai avec mes fichiers textes c'est qu'il faut que je les traite en même temps car j'ai la date dans un des fichier, l'heure et la production dans un autre et le nombre et le temps de défaut dans plusieurs autres.
Je voudrais donc afficher le nombre et le temps de défaut en fonction de l'heure et de la date, puis choisir en fonction de l'heure et de la date quelles données j'envoie vers le excel.

Donc a mon avis avant d'utiliser les macros il faut que je puisse récupérer les fichiers CSV pour les mettre en forme sommairement afin de pouvoir choisir les données a envoyer vers excel.

Mais peut être aussi que je me trompe...
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
20 mai 2005 à 13:54
dsl j'ai pas msn on va donc continuer comme ca !!!

Je pense que tu n'as pas compris ou je voulais en venir je vais donc essayer de recommencer du début en étant le plus clair possible :

Etape 1 : tu commence par importer tes fichiers 2 choix sont possibles :
soit ton programme ne sera utilisé qu'une fois, dans ce cas la tu te fait pas chier t'importe a la main et ensuite tu traite
soit ton truc sera utilisé souvent (et pas forcement par toi) et dans ce cas t'automatise tout : ca te prendra plus de temps de développement (quoique c pas sur) mais par contre tu gagnera un temps considérable à l'utilisation

Etape 2 : Si tu choisi d'automatiser tu crée un fichier excel vide mais bourré de macro (l'astuce consiste a ne jamais enregister sur ce fichier comme ca tu peux le reutiliser a chaque fois). Et la tu utilise le code d'importation du post précedent. Pour importer plusieurs fichiers c tout con tu fait un boucle avec ce code et le common dialog : c pas tres propre mais ca marchera

With Sheets("txt").QueryTables.Add(Connection:="TEXT;" & toto & "", Destination:=Range("A1"))
.Name = pathname
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True

j'ai repris un bout du post pour t'expliquer comment faire
Sheets("txt")=> la feuille ou tu vas importer
toto => le chemin complet du fichiers
A1=>la cellule de la feuille ou commencera l'importation
pathname=>le nom du fichier a importer sans l'ext ex: coucou pour coucou.csv
Pour avoir la base de ton importation tu enregistre une macro et ensuite tu modifie les 4 variables ci-dessus suivant tes besoins.

Etape 3 :
tu crée la feuille intermediaire dans laquelle tu met en forme les données et a partir de laquelle tu créera tes listes de choix

Etape 4 :
tu met en place les procedures de traitement qui vont bien pour faire ce que tu as a faire.

et voila le tour est joué

Dis moi une question me turlupine je serais pas en train de t'aider a résoudre ton projet de fin d'année d'info par hasard ???

Mat
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
20 mai 2005 à 15:02
Non non, ce n'est pas du tout pour mon projet de fin d'année. Je suis actuellement en stage en entreprise et j'ai besoin de faire cela.

Par contre j'aimerais que tu m'éclaircissent quelques points:

"Sheets("txt")=> la feuille ou tu vas importer" => que veux tu dire par la? tu parles de la feuille excel? Concrètement je dois remplacer quoi par quoi?

"Etape 3 :
tu crée la feuille intermediaire dans laquelle tu met en forme les données et a partir de laquelle tu créera tes listes de choix" => la aussi je vois pas trop comment faire...

Sinon merci de m'accorder de temps, c'est sympa de ta part.
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
20 mai 2005 à 15:45
T'inquiéte pas pour le temps que tu me prend je suis aussi stagiaire te répondre est le moyen de glandouiller tout en ayant l'air de bosser

oui sheets("txt") est le nom de la feuille excel dans laquelle tu veux importer tes fichiers textes

Pour l'étape 3 je vais détailler un peu plus donc on va dier que les importation sont faites dans un feuille nommée "txt, que la feuille de mise en forme s'appelle "int" et surtout que tu a utilisé les virgules et point virgules comme separateur de colonnes lors de l'importation (un colonne avec le jour, une avec le mois ...) pour ca enregistre una macro
pour remplir la feuille "int" tu utilise les données de la feuille "txt" et la concatenation (post précedent) afin de récreer tes dates et heures
ex : sheets("Int").cells(1,1)=sheets("Import").cells(1,1) & "/" & sheets("Import").cells(1,2) pour une date comme ca ce te donnra 02/04 pae ex
une fois que c'est fait tu peut creer les listes pour ca tu fait une boucle en incrementant au choix l'indice de ligne ou de colonne suivant tes besoins
ex en incrementant l'index de colonne
for i=1 to 10
list1.AddItem (sheets("Int").cells(1,i).value)
next i
ex en incrementant l'index de ligne for i=1 to 10
list1.AddItem (sheets("Int").cells(i,1).value)
next i

deja essai de faire ces étapes la pour le traitement des listes on verra aprés

Mat
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
21 mai 2005 à 12:16
Je bloque complètement. J'arrive même pas a ouvrir les fichiers. En fait le truc c'est que j'arrive pas a voir la boite de dialogue qui permet d'ouvrir un fichier j'ai pourtant mis une commondialog et j'ai ajouter un drivlistbox, un dirlistbox et filelistbox. Mais apparement c'est pas sa que je dois faire.

Pour la feuille excel que tu appelle sheets("txt") Il faut que je la créer ou? Que j'ajoute une feuille dans le prog VB?
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
22 mai 2005 à 14:58
deja desole de pas t'avoir repondu plus tot (tu laisse quelqu'un d'autre utiliser ton PC et voila quant tu le reprend en main c plein de spyware et de conneries du genre resultat deux jours et deux nuit de bataille pour tout nettoyer)
mais revenons a nos moutons
ok t'as mis en place le common dialog mais a tu mis le code qui va bien avec : commondialog.showopen pour ouvrir la boite de dialogue d'ouverture et toto=commondialog.filename (a verifier pour la commande filename j'ai un doute) pour mettre le nom du fichier a ouvrir dans la variable toto (variable qui te permettra apres d'importer le fichiers qui va bien)

ensuite pour la feuille "txt" le plus simple est de la creer dans le fichiers excel

Mat
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
22 mai 2005 à 16:15
Pour le Pc je sais ce que c'est que d'avoir ce genre d'ennuie. J'ai déjà donné aussi...

Sinon pour le prog j'ai bien mis le commondialog et les deux ligne de code que tu m's donné. Mais lorsque j'éxecute sa me met "erreur d'execution 424. Un objet est requis" et lorsque je clique sur déboguage c'est la ligne "commondialog.showopen" qui est désigné.

Les deux lignes que tu m'as donné sont placées dans un boutton. Et pour linstant c'est tout ce que j'ai.
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
22 mai 2005 à 16:23
Ok en fait c'est bon j'ai la boite de dialogue d'ouverture de fichier qui s'ouvre.
Je vais tenter de faire la suite.

D'apres ce que tu as dit je dois donc également ouvrir monfichier excel avec VB. N'est ce pas?
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
22 mai 2005 à 16:56
Bon j'ai ajouter le rete du code a la suite de ce que j'avais déjà. Mais sa marche pas. Voilà ce que j'ai:
Private Sub Command1_Click()
CommonDialog1.ShowOpen
toto = CommonDialog1.FileName
With Sheets("txt").QueryTables.Add(Connection:="TEXT;" & toto & "", Destination:=Range("A1"))
.Name = Date
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.Refresh BackgroundQuery:=False
End With


End Sub

Et sa me dit procédure sub ou fonction non définit. C'est tu ce que je doit faire?
0
chad_mat Messages postés 27 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 mai 2005
23 mai 2005 à 08:53
Salut

bon j'ai peut etre une idée (si c pas ca dis le moi je regarderait ca ce soir en sortant du boulot) à la ligne 5 de ton code tu as :
.name=Date
Date est un mot réservé c'est à dire que pour VB il a unsignification bien précise en locurance faire d'une variable une date, il t'as mis ca la parceque ton fichiers d'entrée doit s'appeller Date.cvs si c ca faudrait que tu change le nom de ce fichier
si c pas ca dis moi exactement quelle ligne est surligné en jaune
Pour ton info je pense que tu as fait une macro pour créer ce code tu viens donc de decouvrir la magie de VBA : tu fait une macro elle marche t'es content, tu l'automatise et la elle marche plus et oui il y a quelques différence entre le language utilisé en interne par excel et celui que tu peux creer c completement con mais c comme ca.

Mat
0
Rejoignez-nous