macro ou autre pour automatiser l'ouverture d'un fichier txt changeant de nom

  • Initiateur de la discussion tchouminator
  • Date de début
T

tchouminator

Guest
Bonjour à toutes et à tous,

je suis à la recherche d'une âme charritable qui poourrait me dépanner ... Je vous explique :
- j'ai un document qui se créé tout les jours nommé "jjmmaaaa.txt" et se trouve dans le dossier :"C:\export\st aigna\Temp min\" (il contient 3 colonnes de données, avec 1 ligne par heure soit 24 lignes ... lol ainsi qu'une entête de colonne : capteur 1, capteur 2...).
- Un autre document est créé lui aussi tout les jours, il est nommé "jjmmaaaa.txt" (comme le fichier précédent donc...) mais est stocké dans le dossier :"C:\export\st aigna\Temp max\"

L'objectif est d'
- ouvrir le 1er fichier (en faisant un copier-coler de la date "aujourdhui()" mais ça ne marche pas...), coller les colonnes dans la feuille "staigna min" du fichier (ci-joint) "automatisation.xls", puis supprimer ce 1er fichier.
- ouvrir le 2nd fichier et réaliser la même opération, sauf qu'il faut coller les colonnes dans la feuille "staigna max", et enfin supprimer le 2nd fichier.
=> il ne reste donc plus qu'un seul document ouvert : "automatisation.xls"

Compliqué pas vrai ?

Les pièges :
- la date change tout les jours donc, et le fichier à ouvrir par excel change perpétuellement de nom... le copier-coller de la date (=aujourdhui() ) ne marche pas ! comment faire?
- chaque document txt est sous le format ASCII (avec des tabulations entre colonnes), donc est facilement exploitable sous excel.
- voila, je crois que c'est tout !!! lol

merci d'avance à toutes celles et ceux qui vont se creuser la tête sur ce problème .... je suis encore novice en la matière !

merci encore.
antoine
 

Pièces jointes

  • automatisation.zip
    7.8 KB · Affichages: 17
  • automatisation.zip
    7.8 KB · Affichages: 20
  • automatisation.zip
    7.8 KB · Affichages: 18
Z

Zon

Guest
Salut,

@Thierry tiens tu nous fait un petit coucou, le Cint n'accepte pas un un tableau VBA en paramètre donc Tchouminator c'est pour cela que tu as une erreur. Bon il faut croire que sous XL97 avec les boutons Active X on se croirait sous Mac (lol), j'ai eu beau essayé la proprieté Takefocusonclick à toutes les sauces le clear passe pas si on active pas la feuille
=> donc tu oublies tes procédures efface (une horreur de l'enregistreur de macro) et datecarte , RempF devient:

Sub RempF(F As Worksheet)
Dim I&, T, J&, L&
With F
.Activate'sous XL 97 pour un bouton de la barre d'outil controle
.UsedRange.ClearContents
For I = 0 To UBound(V) 'partir de 0 si tu veux les entêtes
T = SplitZon97(Chr(9), V(I))
Select Case I
Case 0: .Range("A65536").End(xlUp)(1).Resize(1, UBound(T) + 1) = T'cas de l'entête
Case Else:
L = .Range("A65536").End(xlUp)(2).Row
For J = LBound(T) To UBound(T)
.Cells(L, J + 1) = CDbl(T(J))
Next J
End Select
Next I
End With
End Sub


Si on veut pas de Activate ou autre select, il faut passer par un bouton de la barre d'outil formulaire.

Enfin, on peut mettre le calcul en manuel pour gagner du temps pour le code dans la procédure Princ pour éviter le recalcul du classeur quand on modifie une cellule

Application.calculation =xlcalculationmanual
et enfin de procédure le remettre en auto
Application.calculation =xlcalculationautomatic

Je remarque Tchouminator que tu as changé de nom de fichier Txt 2 ou 3 fois depuis le début du fil, mais comme tu sais adapter Nomfichier pas de soucis .

Enfin tu peux tout à fait lier les celules d'un classeur à l'autre, mais avec le temps tu risques d'avoir des liaisons et autres .., ton classeur risque de devenir obèse...


A+++
 
T

tchouminator

Guest
salut Zon et le forum,

voilà, j'ai encore un truc a effectuer sur mon classeur, plutot que de limiter les calculs à la veille, j'aimerai bien que lorsque l'utilisateur clique sur le bouton, il commence par choisir la date des copier-coller.

il me semble que 2 possibilités sont offertes (userform avec un bouton "Hier" et un bouton "Autre", ou un inputbox avec la date à taper...) mais je ne sais ni comment remplacer la variable NomFichier par le résultat entré par l'utilisateur, ni comment faire pour ce qu'il entre comme date ne fasse pas planter l'accès aux fichiers .... (si il tape 04/04/2004 ou 04-04-2004 ou 04 04 2004, l'ordi vas péter un cable !!!)

voila, merci encore.
anto

PS: au fait, merci pour le RempF, je sais que mon "Efface" était horrible ! mais ça marchait... au début ... ;)
 

Pièces jointes

  • test.zip
    10.1 KB · Affichages: 16
  • test.zip
    10.1 KB · Affichages: 14
  • test.zip
    10.1 KB · Affichages: 15
Z

Zon

Guest
Salut,

Regardes le fichier en pièce jointe, je passe par le controle calendar beaucoup plus simple surtout avec tes noms de fichier Txt.

Regardes j'ai fait 2 ou 3 modifs dans le code, il faudra rajouter une gestion d'erreurs dans Princ aprés tes tests.

A+++
 

Pièces jointes

  • automatisationZon.zip
    43.5 KB · Affichages: 41
T

tchouminator

Guest
salut Zon !

n'ayant pas réussi à compresser suffisament le fichier xls (d'ailleurs je ne sais tjrs pas comment tu as fait pour le "dégraisser" autant !), je me suis permis de te l'envoyer sur ton adresse perso .... excuse...

merci beaucoup, ça marche du TONNERRE !!!
juste quelques mises au point :

-j'ai 6 feuilles (txt) supplémentaires à aller chercher mais elles n'ont pas tout à fait le même nom, j'avais fais ceci :
Function Nomfichierbis$()
Dim Ch$
Ch = Date
Nomfichierbis = "20" & Right(Ch, 2) & "0101" & ".txt"
End Function
en fait le format est le suivant : "20040101.txt" . rien ne change donc sauf l'année (jour et mois fixe)...j'ai déjà rajouté les chemins et les noms de 13 à 18.
je ne sais pas vraiment comment faire pour que ta procédure m'ouvre ces 6 feuilles quelque soit la date choisit (c'est + ou - indépendant).

-j'aimerai que la case [H18] de la feuille "automatisation" corresponde à la date choisie par l'utilisateur, de façon à savoir quel jour est actuellement chargé.

-enfin, est il possible de valider le choix d'activer les macros de ce classeur à son démarrage sans désactiver la protection contre les virus macros ? (sans décocher la case en fait...)

voilà, je crois que c'est tout.
je ne sais vraiment pas comment te remercier, tu m'as permis d'avancer au delà de mes espérances.
MERCI et encore MERCI
ano
 
Z

Zon

Guest
Salut,

Pour "je ne sais pas vraiment comment faire pour que ta procédure m'ouvre ces 6 feuilles quelque soit la date choisit (c'est + ou - indépendant)."=> Moi non plus je ne comprends pas trop, l'utilisateur il choisit quoi pour cette histoire ? l'année et/ou le jourfixe ?

et

"-enfin, est il possible de valider le choix d'activer les macros de ce classeur à son démarrage sans désactiver la protection contre les virus macros ? (sans décocher la case en fait...)"
=> Malheureusement tu es sous XL97, il n'y a pas de certificat sur cette version, tu peux rajouter un encart sur ta feuille Accueil qui explique à l'utilisateur que si il 'active pas les macros, aucun traitement sera possible, il ne risque aucun virus macro bien entendu.

A+++
 
T

tchouminator

Guest
salut !

primo, j'ai les 12 fichiers qui ont le format de la date au jour le jour (ceux là s'ouvrent sans pb), et 6 qui ont comme format "20040101.txt" , en fait, seule l'année peut changer (en 2005 ce sera "20050101.txt").
le but est de dire à la procédure d'ouvrir ces 6 autres fichiers quoi qu'il arrive , ajouter par exemple :
Function Nomfichierbis$ (Ch$)
Nomfichier = "20" & Right(Ch, 2) & "0101" & ".txt"
End Function
je sais pas si ça peut t'aider.... mais c'est le format de ces 6 autres fichiers !

secondo, pour l'activation des macros, c'est pas grave en fait, y aura qu'a cliquer à chaque fois (je veux pas prendre le risque de désactiver la protection macro)... merci qd même !

tertio, tu crois que pour la case [H18] c'est jouable ?

merci encore !
anto
 
T

tchouminator

Guest
salut !

juste une précision : ta procédure RempF me bloque à ce niveau
.Cells(L, J + 1) = CDbl(T(J))
lorsque je tente de récupérer un document contenant autre chose que des chiffres (à savoir des dates...)
est ce que cette procédure n'est faite que pour des chiffres ? si non, mes dates se retrouvent en 1ere colonne.... comment faire pour que la procédure ne plante pas ????

merci merci merci !!!
@+ anto
 
Z

Zon

Guest
Salut,


Depuis le début du fil, tu rajoutes sans cesse des conditions, désolé mais il fallait être plus clair dés le départ. Il faut mettre plus les mains dans le cambouis=> je pense que tu les mets mais il faut essayer de travailler tout seul: c'est à dire comprendre le code existant, si tu ne comprends pas tout, mon courriel est ouvert pour toutes les explications que tu veux ...

Tu n'es pas loin de trouver la solution tout seul, réléchis quelques jours en essayant de comprendre le code pour RempF il y a juste à adpater le Cint en Cdate pour des dates ou rien mettre pour du texte. C'est pareil pour le nomdefichier à adapter.

Contactes moi par courriel si tu n'y arrives toujours pas d'ici quelques jours. Mais ce fil n'a plus aucun intérêt pour le forum .


A+++
 

Discussions similaires

Statistiques des forums

Discussions
314 179
Messages
2 106 889
Membres
109 719
dernier inscrit
Naoufel