Convertir tous les fichiers .dat d'un repertoire en fichiers .xls
gui1980
Messages postés2Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention17 janvier 2006
-
17 janv. 2006 à 11:17
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 2007
-
17 janv. 2006 à 17:38
Bonjour,
Ceci est mon premier message sur ce forum. J espere poster dans la bonne section.
Voici mon probleme:
Je dois convertir successivement plusieurs documents .dat au format excel sur lesquels je fais quelques manipulations.
Les fichiers .dat ont tous le meme format (separation des colonnes par des espaces, les en tetes ont le meme nombre de lignes...)
Seuls les noms de fichiers diffèrent. Pour l'instant, j'ai crée une macro qui va chercher dans un répertoire fixe un nom de fichier fixe, qui fait quelques manip et qui enregistre sous un nom fixe le nouveau fichier .Xls.
je fais ensuite des copier-coller ou je change manuellement le nom des fichiers.
Je voudrais savoir, s'il etait possible de faire (simplement) une macro qui scanne tous les fichiers .dat d'un repertoire que je choisirais via une boite de dialogue (ou du repertoire dans lequel je lance ma macro) et qui ferait automatiquement les opérations citées précedement.
J'ai fait une recherche sur le forum mais ca n a rien donné.
Merci
A voir également:
Convertir tous les fichiers .dat d'un repertoire en fichiers .xls
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 17 janv. 2006 à 15:46
Eh non, raté, fallait poster ton message dans la rubrique "VBA" (Visual Basic for Application) !
Bon, je ne vais pas te donner le solution toute faite (héhé). Je te laisse déjà regarder l'aide du VBA (touche F1 ) à la rubrique "Objet" puis "File System Object" (dit aussi FSO). C'est un objet très simple à minupuler qui permet de manipuler les dossiers/fichiers sur le disque.
Il te faudra aussi un "For Each"...
Après, soit tu utilises une cellule (où une fenêtre de ton crue [UserForm]) dans laquelle l'utilisateur entrera le chemin d'accès du dossier (ou alors l'API de sélection des dossiers... cf. sources et forums VBFrance!). Dans ce cas, il faudra parcourir tous les fichiers contenus dans ce dossier (après avoir, évidemment, vérifier son existance) le tout avec for Each, le FSO et un petit test sur l'extension des fichiers (parce qu'il n'y aura pas que des .dat dans le dossier!).
Mais pour toutes les manipulations, il te faut créer une fonction... Je sais pas si tu sais comment ça fonctionne alors voici un petit exemple :
Public Function NomDeTaFonction(ByVal NomDeLargument1 As Type) 'Type étant un type!!! String par exemple!
Dim varTemporaire As Type
varTemporaire = NomDeLargument + 24 + 32 ...
... 'Instructions
NomDeTaFonction = varTemporaire 'Pour que la fonction renvoie la valeur varTemporaire
End Function
Il te suffit donc d'utiliser comme argument de ta fonction le nom des fichiers .Dat et ainsi, d'automatiser le traitement...
Allé, parce que je suis bien sympa je vais te donner ce bout de code (mais après c'est à toi de faire le reste d'accord!
Private Sub Button1_Click()
Dim varDossier As String
varDossier = "D.\EVADYS_H\statistique"
'FSO... GetFolder...
For Each FichierDat In ... (Collection Files du Folder!)
'FichierSource = "essai2.dat" 'A ne pas mettre, c'est juste pour te faire voir les valeurs!
'FichierDestination = "essai1.xls"
Call TraitementDesFichiersDAT( FichierSource, FichierDestination) End For
End Sub
gui1980
Messages postés2Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention17 janvier 2006 17 janv. 2006 à 17:15
merci,
je vais m'attaquer au decryptage de ta reponse. (pour l instant, je ne sais qu'enregistrer les macros en temps reel, donc j ai encore pas mal de boulot)
question subsidiaire et HS. Comment fait-on pour editer les messages? je viens de m'apercevoir que j'ai laissé le nom du répertoire, ce que je n aurais pas du faire. Peux-tu aussi l'effacer stp?
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 17 janv. 2006 à 17:38
Malheureusement non! Une fois les messages postés on ne peut plus les modifier (et ceci afin de conserver la structure linéaire). D'où l'importance de bien relire avant de poster ;-)
En revanche, les admins peuvent supprimer des posts. Mais pas les modifier!
Mais bon, ce n'est pas grave s'il y a un path qui traine!
En revanche, lorsque une réponse te convient, s'il te plait, clique sur le bouton "réponse accepté" (comme indiqué dans ma singature!!!).
Enjoy
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )