Traitement CSV pour graphique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Patate Error

XLDnaute Nouveau
Bonjour à toutes et à tous,

je vous expose mon problème, je débute avec VBA et j'ai un peu de mal.
Ce que j'aimerais faire n'est pas extraordinaire :


1 - Ouvrir à l'aide d'un bouton un fichier CSV
Sub OuvertureCSV()
Code:
     NomFic = Application.GetOpenFilename(, , "Test")
        If NomFic <> False Then
            Workbooks.OpenText Filename:=NomFic, DataType:=1, Semicolon:=True, local:=True
        End If
End Sub

2 - A partir de ce fichier CSV ouvert (dans un autre workbook, parce que j'arrive pas à l'ouvrir dans le même) j'aimerais faire une graphique dans le premier workbook un graphique en fonction de l'heure.

Petit soucis,certaines valeurs sont mauvaises prenant des valeurs très grandes ou "??????" parfois et donc il faudrait supprimer ces lignes.

Un algo comme ça me parait pas extravagant mais je ne sais pas si c'est réalisable :
Code:
Si Cellule Dx > Nb passant max && Cellule Dx =! type numérique 
alors Supprimer ligne x

Je vous mets un exemple de fichier que je souhaite traiter en pièce jointe.

En vous remerciant par avance ,
Patate Error 😀
 

Pièces jointes

Dernière édition:
Re : Traitement CSV pour graphique

Bonjour Patate Error, Efgé

Pourquoi ne pas faire une petite macro en sélectionnant toutes les dates de la colonne 2?

Ensuite, tu pourras supprimer les colonnes 2 et 3.

Code:
Sub test()
For Each cell In Selection
cell.Offset(0, -1) = cell + cell.Offset(0, 1)
Next
End Sub
 
Re : Traitement CSV pour graphique

Re, Bonjour
Une idée :
VB:
Option Explicit
Sub Test()
Dim B$, FileNumber&, chainedata$, T As Variant
Dim Nb&, I&
Nb = 100
'Récupération du chemin du bureau
B = CreateObject("WScript.Shell").specialFolders("Desktop")
'Récupération d'une numér o libre
FileNumber = FreeFile
'Ouvrir le fichier Mon_Fichier.Csv (sur le bureau
Open B & "\passant.csv" For Input As #FileNumber
    'Tant que l'on n'est pas à la fin du fichier
    Do Until EOF(FileNumber)
        'On récupçre la ligne
        Line Input #FileNumber, chainedata
        'On compte les lignes
        I = I + 1
        'A partir de la ligne 7
        If I > 6 Then
            'On éclate la ligne à chaque ;
            'T commence à 0
            T = Split(chainedata, ";")
            'Si la valeur en 2em position de T (Colonne 3)
            'n'est pas > à Nb
            If T(4) < = Nb And CLng(T(4)) Then
                'On colle les valeurs sur la feuill1 du classeur qui contient la macro.
                Sheets("Feuil1").Cells(Rows.Count, 2).End(xlUp)(2, 0).Resize(1, UBound(T) + 1) = T
            End If
        End If
    'Prochaine ligne
    Loop
'Fermeture du fichier
Close #FileNumber
End Sub
Cordialement
 
Re : Traitement CSV pour graphique

Bonjour 🙂
Merci pour ta réponse Efgé ça me fait très plaisir.
Premièrement j'ai mis un peu de temps à comprendre qu'il fallait que mon fichier se trouve sur le bureau pour que la macro se lance.
Je vais essayer de changer ça dans un premier temps.

En revanche il y a une chose que je ne comprends pas : les lignes qui contiennent une valeur à 0 ne sont pas copiées.

Merci encore pour votre aide, bonne journée.
Patate Error
 
Re : Traitement CSV pour graphique

Bonjour Patate Error, Salut MJ 🙂, le fil
Pour le bureau c'était expliqué :
VB:
'Ouvrir le fichier Mon_Fichier.Csv (sur le bureau)

Pour le problème de ton 0, il y avait une erreur dans mes commentaires ;
A la place de
VB:
'Si la valeur en 2em position de T (Colonne 3)
           'n'est pas > à Nb
           If T(4) < = Nb And CLng(T(4)) Then
Il faut lire
VB:
'Si la valeur en 4em position de T (Colonne 5)
           'n'est pas > à Nb et est un nombre
           If T(4) < = Nb And CLng(T(4)) Then

Cordialement
 
Re : Traitement CSV pour graphique

Re
Un exemple qui règle le problème des 0 ainsi qu'un autre "Bug" potentiel.
Le code est commenté, il faut que le csv s'apelle passant.csv et soit sur le bureau.
La présentation est finale est meilleure.
Cordialement
 

Pièces jointes

Re : Traitement CSV pour graphique

Re
Un exemple qui règle le problème des 0 ainsi qu'un autre "Bug" potentiel.
Le code est commenté, il faut que le csv s'apelle passant.csv et soit sur le bureau.
La présentation est finale est meilleure.
Cordialement

j'ai adapté le code pour le rendre plus dynamique, ca fonctionne (sauf quand je met le l'argument MultiSelect à Vrai , mais bon je me doutais qu'un tableau de chaine de caractère sans boucle Open n'arriverait pas à le gérer.

Du coup quand j'ouvre je fais la macro plusieurs fois le fichier se concataine et c'est pas plus mal !

Il reste à gerer la génération des graphes !

Encore MERCI ! 😀

Code:
Dim Nb&, I&, X&, NomFichier
Nb = 100
'Récupération du chemin du bureau
NomFichier = Application.GetOpenFilename("csv Files (*.csv), *.csv")
'Récupération d'une numér o libre
FileNumber = FreeFile
'Ouvrir le fichier passant.csv (sur le bureau
Application.ScreenUpdating = False
Open NomFichier For Input As #FileNumber
 
Re : Traitement CSV pour graphique

Bonjour Patate Error,
J'ai jeté un sort sur le bouton ...
Non, il s'agit d'un bouton "Contrôle Active X". Pour le modifier tu vas dans l'onglet développeur et tu clic sur le bouton avec une equerre et une regle (modifier)
Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Import CSV
Réponses
9
Affichages
2 K
Retour