[Marco Excel] Aide Détection fichier texte et import automatique [Résolu]

pit34

XLDnaute Nouveau
Bonsoir à tous,

Je viens quérir un peu d'aide si vous le voulez bien, car la macro que je veux réaliser dépasse mes compétences, même en recherche google.
Travaillant sur Excel 2007, je cherche depuis quelques temps à automatiser la tache suivante :

Importer certaines données présentes dans un fichier .txt (données séparées par des virgules) dans la feuille Excel où est situé l'appel de la macro,
Lancer un traitement fait de comparaisons entre les lignes de ce fichier et de ses acolites, et de calcul.
Et ceci pour plusieurs fichiers, une dizaine environ.
Et enfin vider le dossier.


Ces fichiers correspondent chacun à un type de produits a,b,c,d,e,f, avec un nom de format nomdulieu-nomdeproduit-AAAA.MM.DD nombre.txt (le nombre a une longueur variable).
Les données dans ces fichiers sont classée de cette façon, chaque paire de ligne représentant une offre :
prix,volume,quantité,distance,True,etc
date,heure,blabla,etc
(True représentant un prix de vente, et False un prix d'achat)

Je souhaite que ma macro aille dans le fichier du produit A (toujours le même ordre) comparer son prix de vente ou d'achat, sélectionner le prix de vente le plus faible et le prix d'achat le plus élevé, et le coller dans une cellule de ma feuille Excel.
Répéter ensuite l'opération pour le produit B et ainsi de suite jusqu'au dernier type de produit, avec des cellules d'arrivées différentes dans Excel.
Et enfin que ma macro effectue le calcul que je lui fournirais, à l'aide des données recueillies.


J'ai peu de connaissances sur les macro, quelques unes en VB et un niveau correct en C++. J'ai donc pioché des morceaux de macro à droite à gauche, sans réussir à tout faire. J'ai tout l'algorithme du programme en tête, mais pour l'import, le tri et la détection d'arrivé c'est pas du tout ça.

La programmation par objet n'étant pas mon fort, si quelqu'un a un peu de temps à m'accorder pour m'accompagner dans ma démarche, ca serait vraiment sympa ;)

Merci à vous, et bonne soirée ;)
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : [Marco Excel] Aide Détection fichier texte et import automatique

Bonjour pit34,

Bienvenue sur XLD

Je pense qu'il va falloir y aller par étape.
Pour la macro de détection, je pense qu'elle devrait utiliser un "Application.Ontime" pour vérifier régulièrement l'arrivée des fichiers à traiter
On pourra vérifier l'existence d'un fichier par un "Dir" ensuite...
Tout ça sous-entend que le classeur Excel reste ouvert pour que la macro puisse continuer à vérifier l'arrivée des fichiers.
 

pit34

XLDnaute Nouveau
Re : [Marco Excel] Aide Détection fichier texte et import automatique

Bonjour tototiti2008, et merci de m'avoir répondu.

Effectivement, sans y aller par étape, ca risque d'être coton. En plus ca permettra de rendre le travail collectif plus lisible.

Le classeur Excel restera ouvert pendant la macro. En gros, je lancerai la macro par un bouton, je basculerai sur l'autre programme pour créer les fichiers textes, et ensuite je basculerai de nouveau sur le classeur pour terminer la macro en appuyant sur un bouton.

Je vais de ce pas commencer la détection avec la fonction que tu m'a fournis, je posterai mes résultat au fur et à mesure.
 
Dernière édition:

pit34

XLDnaute Nouveau
Re : [Marco Excel] Aide Détection fichier texte et import automatique

Edit : J'ai modifié le début du code, c'est inutile de faire une détection automatique. Le programme tierce exportera ses fichiers .txt, et une fois cela réalisé, je presserai le bouton lançant ma macro de traitement.
Donc maintenant je cherche à tester le nom des fichiers, pour voir s'ils contiennent la chaine de caractère que je désire. Je trifouille, mais ce n'est toujours pas fonctionnel. La commande FileExist ne m'a pas non plus permis de réaliser la condition.
La condition à trouver est en rouge dans le code ci-dessous. Tout le reste est fonctionnel.



Private Sub CommandButton1_Click()

ChDir "C:\Users\PIT\Documents\EVE\logs\Marketlogs"
'choisi le dossier souhaité pour le traitement

If (Dir("") <> "") Then

If (Dir("") = "*Nocxium*.txt") Then

'traitement

End If

Else
Msg = "Aucun fichier texte présent. Recommencez !" ' Définit le message.
Style = vbOKOnly ' Définit les boutons.
Title = "Arrêt de la procédure !" ' Définit le titre.
Response = MsgBox(Msg, Style, Title) ' Affiche le message
Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été trouvé
End If

End Sub


P.S. : les fichiers ont un nom semblable à "Kor-Azor-Nocxium-2011.01.13 105612.txt". Seuls les caractères présents entre les 2eme et 3eme tirets sont à tester. Merci ;)
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : [Marco Excel] Aide Détection fichier texte et import automatique

Bonsoir,
Pas vraiment compris la chaîne a tester
Code:
Private Sub CommandButton1_Click()
  Dim pFolder As String, nFile As String, sFile As String
    pFolder = "C:\Users\PIT\Documents\EVE\logs\Marketlogs\*.txt"
    nFile = "Nocxium"
    sFile = Dir(pFolder)
    Do While sFile <> ""
        If UCase(sFile) Like "*" & UCase(nFile) & "*.txt" Then
            'traitement
            Exit Sub
        End If
        sFile = Dir()
    Loop
        Msg = "Aucun fichier texte présent. Recommencez !" ' Définit le message.
        Style = vbOKOnly ' Définit les boutons.
        Title = "Arrêt de la procédure !" ' Définit le titre.
        MsgBox Msg, Style, Title ' Affiche le message
End Sub
A+
kjin
 

tototiti2008

XLDnaute Barbatruc
Re : [Marco Excel] Aide Détection fichier texte et import automatique

Bonjour pit, Bonjour kjin,

peut-être

Code:
Private Sub CommandButton1_Click()
Dim Fic as string
'choisi le dossier souhaité pour le traitement
Fic  = Dir("C:\Users\PIT\Documents\EVE\logs\Marketlogs\*Nocxium*.txt")
If (Fic<> "") Then
'traitement
 
End If
 
Else
Msg = "Aucun fichier texte présent. Recommencez !" ' Définit le message.
Style = vbOKOnly ' Définit les boutons.
Title = "Arrêt de la procédure !" ' Définit le titre.
Response = MsgBox(Msg, Style, Title) ' Affiche le message
Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été trouvé
End If
 
End Sub
 
Dernière édition:

pit34

XLDnaute Nouveau
Re : [Marco Excel] Aide Détection fichier texte et import automatique

Bonjour tototiti2008 et kjin,

Le code fournis par kjin ne fonctionne pas, mais merci quand même.
Celui de tototiti2008 a fait des merveilles, c'est parfait merci.

J'ai pu avancer dans ma macro. Je la poste en fin de message.
En gros, j'importe chaque ligne du fichier texte dans une colonne Excel. Maintenant mon problème, c'est de diviser cette colonne en plusieurs, en utilisant le séparateur qu'il y a entre mes données, la virgule(,). J'ai beau fouiner, pas moyen de trouver une fonction "séparateur". Il y a pourtant bien une fonction "join" =/.

Merci à vous, et bonne journée


Private Sub CommandButton1_Click()
Dim Fic As String
Dim Cpt As Integer

'choisi le dossier souhaité pour le traitement
Fic = Dir("C:\Users\PIT\Documents\EVE\logs\Marketlogs\*Nocxium*.txt")
If (Fic <> "") Then
'traitement

ChDrive "C:\Users\PIT\Documents\EVE\logs\Marketlogs"
ChDir "C:\Users\PIT\Documents\EVE\logs\Marketlogs"

Cpt = 1 ' Compteur a 1
Open Fic For Input As #2 'Ouvre le fichier dont le chemin d'acces est stocké en STRING
'dans la variable FIC, pour lecture, et met dans #2

Do While Not EOF(2) ' Tant que la lecture n'est pas a la fin du fichier
Line Input #2, S ' Lit et place les lignes dans la variable S

Cells(Cpt, 20) = S

Cpt = Cpt + 1 ' Incremente de 1
Loop
Close #2 ' Ferme le fichier

Msg = "C'est GOOD !" ' Définit le message.
Style = vbOKOnly ' Définit les boutons.
Title = "GOOD !" ' Définit le titre.
Response = MsgBox(Msg, Style, Title) ' Affiche le message

Else
Msg = "Aucun fichier texte présent. Recommencez !" ' Définit le message.
Style = vbOKOnly ' Définit les boutons.
Title = "Arrêt de la procédure !" ' Définit le titre.
Response = MsgBox(Msg, Style, Title) ' Affiche le message
Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été trouvé
End If

'Kill "C:\Users\PIT\Documents\EVE\logs\Marketlogs\"

End Sub
 

pit34

XLDnaute Nouveau
Re : [Marco Excel] Aide Détection fichier texte et import automatique

J'ai finis ma macro, pour ceux que ca intéresserait, je post le fichier.

Un grand merci à tototiti2008 et kjin et ceux à qui j'ai piqué des bouts de macro!

Ce lien n'existe plus

Bonne continuation à tous
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16