Traitements de données d'un fichier csv à l'aide d'une ou plusieur macro

Zeylla

XLDnaute Nouveau
Bonjour,
je viens vous demander de l'aide, afin de finaliser un projet pour mon entreprise.
Je mes en place un appareil permettant de mesurer un rapport diamètre/pression sur un produit spécifique.


Cette appareil enregistre les données dans un fichier csv.
Et le traitement des données prend un temps inimaginable.

Voici la raison de ma venue ici.
Je souhaiterais simplifier le traitement des données au maximum, pour éviter les coquilles et autres louper.

Dans l'idéal, il faudrait un fichier macro, ou l'on viendrait coller l'ensemble des données du csv en feuille 1.
Et à l'aide d'une commande de type ctrl+A avoir l'intégralité des données traitées et mise en forme en feuille 2.

J'ai joins un petit fichier avec l'ensemble des données brutes en feuille 1 et le rendu final souhaiter. Cela fait plusieurs jours que je bidouille sans résultats devant la complexité de la tâche ....

Vous me seriez d'une grande aide. Je vous remercie d'avance.

Cordialement Zeylla
 

Pièces jointes

  • Merci beaucoup V1.xlsx
    78.2 KB · Affichages: 41

Dranreb

XLDnaute Barbatruc
Re : Traitements de données d'un fichier csv à l'aide d'une ou plusieur macro

Bonsoir

Pourquoi la feuille 1 ? Un .csv peut se lire directement ligne par ligne en VBA.
La fonction Split permet d'en avoir les élément dans un tableau texte selon un séparateur,
La fonction Replace permettrait de supprimer des doubles guillemets,
La fonction Val permet de transformer en nombres les bouts avec un point en guise de séparateur décimal.
 
Dernière édition:

Zeylla

XLDnaute Nouveau
Re : Traitements de données d'un fichier csv à l'aide d'une ou plusieur macro

Le seul "hic" c'est que je ne connais pas grand chose sur les macros excel et encore moins en visual basic....
Je vais quand même regarder ce que je peux faire avec les mots clé que tu as laissé.
Merci
 

Staple1600

XLDnaute Barbatruc
Re : Traitements de données d'un fichier csv à l'aide d'une ou plusieur macro

Bonjour à tous

Zeylla [highlight][Bienvenue sur le forum][/code]
Une petite macro en guise de mise en bouche
(Pour l'utiliser, faire ALT+F11 puis Insertion/Module
Copier le code VBA dans la partie blanche
Puis retourner dans Excel (ALT+F11)
Dans l'onglet Développeur, cliquer sur Macros et choisir MiseEnForme et cliquer sur Exécuter)
(En cliquant sur ce lien, plus de détails et explications sur les macros)

VB:
Sub MiseEnForme()
Dim c As Range
'copie de la feuille 1
Sheets("1").Copy after:=Sheets(Sheets.Count)
'mise ne forme des données
For Each c In Rows("14:14").SpecialCells(xlCellTypeConstants, 1)
    With Range(c(2), c.End(xlDown))
        .Replace What:="""", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
        .TextToColumns Destination:=c(2), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, Comma:=True, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1)), DecimalSeparator:=".", TrailingMinusNumbers _
        :=True
        .NumberFormat = "0.00"
    End With
Next
End Sub
 

Zeylla

XLDnaute Nouveau
Re : Traitements de données d'un fichier csv à l'aide d'une ou plusieur macro

Merci beaucoup staple1600, c'était la macro qu'il me fallait pour la mise en forme des données, je vais réussir à le faire. J'étais ennuyé par cette séparation, j'arrivais à l'appliquer sur une seul colonne uniquement.

Si j'ai bien compris pour étendre la macro à l'ensemble du tableau, tu indique que pour chaque cellule compris entre X:X tu as une commande à appliquer toute les 2 cellules.
 

Staple1600

XLDnaute Barbatruc
Re : Traitements de données d'un fichier csv à l'aide d'une ou plusieur macro

Bonjour à tous

Zeylla
Code commenté plus en détails
VB:
Sub MiseEnForme()
Dim c As Range
'copie de la feuille 1
Sheets("1").Copy after:=Sheets(Sheets.Count)
'mise en forme des données
For Each c In Rows("14:14").SpecialCells(xlCellTypeConstants, 1)
'Pour chaque cellule de la ligne 14 contenenat une valeur numérique
    With Range(c(2), c.End(xlDown))
'avec les données présentes dans la colonne de ces cellules
        .Replace What:="""", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
'remplacer le caractère " par rien
'puis faire un Données/Convertir - séparateur : virgule - options avancées : séparateur décimal: .
        .TextToColumns Destination:=c(2), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, Comma:=True, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1)), DecimalSeparator:=".", TrailingMinusNumbers _
        :=True
'appliquer le format numérique : Nombre , décimales :2
        .NumberFormat = "0.00"
    End With
Next
End Sub
 

Zeylla

XLDnaute Nouveau
Re : Traitements de données d'un fichier csv à l'aide d'une ou plusieur macro

Encore merci pour votre aide du coup j'ai presque fini le fichier ^^
Il me reste 2 points qui malgré plusieurs recherche et essai reste hors de mes compétences....

Sur le fichier ci-joint, j'ai besoin de choisir les unités (Cellule S8) en utilisant un facteur. Le hic c'est que les unités ne se mette pas à jours sur le graphique et je n'arrive pas à résoudre ce problème...
Et le 2eme point est surement plus simple, il s'agit d'un calcul de valeur minimum, avec une condition ne pas prendre en compte les cellules vide ... car le csv C/c initiale pourras aussi bien avoir 10 analyses comme 1 seul.

Merci d'avance encore une fois. Et bonne journée à vous.
 

Pièces jointes

  • WAW test Data Analyse.xlsm
    242.8 KB · Affichages: 26
Dernière édition:

Discussions similaires

Réponses
7
Affichages
361

Statistiques des forums

Discussions
312 282
Messages
2 086 771
Membres
103 391
dernier inscrit
lrol