fichier .dat

pecavi35

XLDnaute Nouveau
Bonjour a tous,
à mon travail, je dois récuperer un fichier .dat qui à toujours la meme forme, 13 colones avec différentes info, mais je n'en garde que 5. le traitement du fichier j'y arrive, mais je voudrais savoir s'il est possible que la macro me demande quel fichier ouvrir, et qu'ensuite elle fasse tout ce qu'il faut.
Pour l'instant, je suis obligé d'ouvrir mon fichier .dat dans un classeur, de séparer les colonnes aux espaces et aux virgules, et apres seulement, je lance ma macro qui supprime toutes les info inutiles
Sachant que mon fichier .dat change de nom a chaque fois, mais qu'il est toujours dans le meme dossier, et sa mise en forme reste toujours la meme


Ma question est
- dois je m arreter la? ( ce qui je trouve est pas trop mal étant donné mon niveau en vba)
ou est ce que tout ca peut etre fait en vba?

Merci de vos réponses

Je vous mets mes fichier en PJ au cas ou ca interresserait quelqu'un...
 

Pièces jointes

  • 25-07.zip
    97.7 KB · Affichages: 41
  • 25-07.zip
    97.7 KB · Affichages: 39
  • 25-07.zip
    97.7 KB · Affichages: 43
C

Compte Supprimé 979

Guest
Re : fichier .dat

Salut Pecavi35

Voici ton fichier avec le code ajouté et modifié ;)

Le fichier DAT t'es demandé à l'ouverture, mais tu peux modifier cette option en supprimant le code dans ThisWorkbook

A+
 

Pièces jointes

  • Modele courbe Tø1 macro V1.xls
    428.5 KB · Affichages: 69
Dernière modification par un modérateur:

pecavi35

XLDnaute Nouveau
Re : fichier .dat

y a un problème de séparation des colonnes, du coup mon code vire les mauvaises etant donné que les données ne sont plus a la bonne place...
désolé, c'est de ma faute, il faut pas séparer au virgules mais seulement espace et tabulation. J'ai essayé de regarder ton code, j'ai mis des true à coté des de space et tab et false pour coma mais il me dit "erreur" (message auquel je suis habitué... ;) )
J'ai mis en pj le fichier dat, et le resultat que j'espère (fichier perso.xls) et ce que me donne ton fichier ( tonfichier.xls)

Pourrais tu aussi m'eclairer sur:
Workbooks.OpenText Filename:=sFic, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8,1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1)), _
TrailingMinusNumbers:=True

C'est quoi tous les Array( , )??

dans l'archive fichier perso, y a les deux xls et le dat est dans l'autre
Encore désolé de t'avoir donné les mauvaises info...
 

Pièces jointes

  • fichier perso.zip
    288.6 KB · Affichages: 23
  • 30-05.zip
    20.5 KB · Affichages: 27
C

Compte Supprimé 979

Guest
Re : fichier .dat

Re,

Yes ok je comprends mieux ;)

Pour la syntaxe du "workbooks.open" j'utilise l'enregistreur de macro et fait la manip. souhaitée

Voici donc le code de remplacement (je modifie mon précédent fichier)
VB:
Sub DemandeFichier()
  Dim sPath As String, sFic As String
  Dim sFilter As String
  ' Définir le chemin d'accès par défaut, peut être changé dans la boite de dialogue
  sPath = ThisWorkbook.Path & "\"
  ' Définir le filtre de recherche des fichiers
  sFilter = "Export DAT (*.dat)" & Chr(0) & "*.dat" & Chr(0)
  ' Demander le ficier à ouvrir
  sFic = GetFileName(sFilter, sPath, "Choix du fichier d'export")
  ' Si le fichier a bien été choisi
  If sFic = "" Then Exit Sub
  ' Ouvrir le fichier
  Workbooks.OpenText Filename:=sFic, _
                     Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
                     xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
                     Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
                                                                               Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
                                                                               Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1)), _
                                                                               TrailingMinusNumbers:=True
  ActiveWorkbook.ActiveSheet.Cells.Copy
  ThisWorkbook.Sheets("Feuil1").Paste
  ThisWorkbook.Sheets("Feuil1").Columns.AutoFit
  ' Fermer le fichier DAT
  ActiveWorkbook.Close SaveChanges:=False
  ' Lancer la suite
  Call TriDesDonnees
End Sub

A+
 

pecavi35

XLDnaute Nouveau
Re : fichier .dat

Merci beaucoup Bruno,
Il y avait juste un petit format de cellule qui me transformait l'heure hh:mm en decimal à 5 chiffres, mais j'ai réussi a modifier! (trop fier de moi ;) )
C'est vachement pratique cet enregistreur de macro à part qu'il n'explique pas son code...
Bonne continuation,
et peut etre qu'un jour, c'est moi qui répondrait aux personnes en difficulté de VBA, mais ca, c'est pas pour tout de suite!
 
C

Compte Supprimé 979

Guest
Re : fichier .dat

Salut,

Merci beaucoup Bruno
De rien, c'est avec plaisir

Il y avait juste un petit format de cellule qui me transformait l'heure hh:mm en decimal à 5 chiffres, mais j'ai réussi a modifier! (trop fier de moi ;) )
Très bien, tu peux effectivement être fier :)

C'est vachement pratique cet enregistreur de macro à part qu'il n'explique pas son code...
Malheureusement pas, mais l'aide dans l'éditeur VBA peut te donner des détais

peut etre qu'un jour, c'est moi qui répondrait aux personnes en difficulté de VBA, mais ca, c'est pas pour tout de suite!
Pas de problème on t'attendra ;) :)

A+
 

pecavi35

XLDnaute Nouveau
Re : fichier .dat

Et dire qu'il y a 2 semaine, je ne connaissais que les maquereaux...
J'ai un peu améliorer le code, c'est à dire:
-il supprime un des onglets qui contient les mêmes info que l'autre (ca j'ai trouvé tout seul)
-il ne rafraichit plus et n'affiche que le résultat final, donc est plus rapide (fait grace à un forum)
-il ne me demande plus confirmation de supprimer, donc un clic sur le fichier et hop! une belle courbe! (fait grace à un forum)
-je l'ai signé pour qu'on se souvienne de moi... (oui, mes chevilles vont bien! :D et ca aussi j'ai trouvé tout seul)

A bientot sans doute!

Thierry
 

pecavi35

XLDnaute Nouveau
Re : fichier .dat

Bonjour Bruno,
bon, j'avais pas donné de date pour le "bientot c'est moi qui répondrai aux questions" donc je me permet de revenir ici en demandeur d'aide...
j'ai découvert un problème dans mon fichier, il trace la courbe pour une plage de données définies dans les options du graphique
c'est a dire qu'il prend les données jusqu' a la ligne 2462. peut importe ce qu'il y a dans ma feuille data
Le problème est que ma quantitée de données n'est pas fixe, et je me suis rendu compte que ca pouvait varier du simple au double.
Après des recherches sur ce forum et d'autres, j'ai trouvé des ligne de codes qui, je pensais, pouvaient correspondre mais ca ne marche pas
J'ai mis ca:

Sheets("Courbes").Select
ActiveChart.SetSourceData Source:=Sheets("data").Range(Cells(2, 1), Cells(o, 5))

avec o la derniere ligne de mon tableau (défini avant dans le fichier)

Donc ma question est: "comment faire pour modifier la plage de données du graphique pour que la courbe représente tous mes points?"

et si possible sans recréer un graphique a partir du vba...

Je vous mets en pièce jointe le fichier .dat et le .xls car un exemple est mieux qu'un long discours

merci d'avance
 

Pièces jointes

  • data et courbe.zip
    88.9 KB · Affichages: 36

pecavi35

XLDnaute Nouveau
Re : fichier .dat

Bon, ben j'ai trouvé tout seul, après delongue recherches, et c'est en effet tout con
il fallait écrire :
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=Sheets("data").Range("A1:E" & o), PlotBy _
:=xlColumns


base trouvée grace à l'éditeur de macro mais c'est le "A1:E" & o qui m ' em.....dait

j'espère que ce message pourra aider quelqu'un meme s'il n'est pas du tout rangé au bon endroit!

Bonne continuation,
et vive le VBA!!
 

Discussions similaires

Réponses
2
Affichages
210

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji