Fichier CSV

Bonsoir à tous,

J'exporte chaque jour[/u] un fichier csv depuis un logiciel d'une machine de test. Ce fichier contient touts les informations de touts les produits qui sont testés sur la machine :

- Chaque produit a un identifient unique qui doit être répété a chaque apparition d'un défaut donc on peut avoir le même identifient dans plusieurs lignes (doublons).

Je veut compter le nombre des produits qui sont OK par groupe de production, par programme, dans une date précise, entre deux dates...

Quelqu'un pour m'aider SVP

Merci d'avance

Utilise la fonction SOMMEPROD

Le mieux est de nous mettre un bout de fichier pour t'aider à la rédiger

Bonjour Steelson,

J'ai pas arrivé a joindre mon fichier ici, voici un lien https://www.cjoint.com/c/ECgaesl7x5i

L'idée c'est de créer une interface (bouton qui fait appel à une macro par exemple) dans laquelle je peut savoir la quantité produite par chaque groupe de travail, a une date ou entre deux dates, et l'opérateur qui a fait le test.

NB : La mise à jour du fichier est journalière, donc , a mon avis, si on pense de faire une macro (par exemple) elle doit être externe et s'intègre a chaque utilisation.

Merci pour l'aide


Exemple de mon fichier complet : https://www.cjoint.com/c/ECgavx3Gs5n

Quand j'ai de grandes quantités de données comme cela, la seule chose est de faire un tableau croisé dynamique qui me permette de jouer avec les différents critères.

https://www.cjoint.com/c/ECgc0qeJz3G

Merci pour l'idée

Je cherche a automatiser la consultation des infos, exemple : si je donne une date je reçoit la quantité produite par groupe et par programme

Les colonnes colorées en rouge sont à éliminer, le reste c'est ce que j'ai besoin.


https://www.cjoint.com/c/EChaGp2EKmN

J'ai commencé a faire une macro qui calcule la quantité des identifiants toute en évitant de recalculer les doublons, et elle envoie le résultat dans un fichier texte que je peut le consulter par un fichier .bat , j'ai aussi réalisé un fichier .vbs qui exécute cette macro depuis l’extérieur sans ouvrir le fichier excel.

Mes problèmes sont :

1- Je suis obligé d'enregistrer le fichier csv en .xlsm (excel prenant en charge les macros) alors que je veut soit travailler directement sur le fichier csv, soit le convertir automatiquement en gardant la forme du tableau.

2- La macro fait le calcul de la totalité de la colonne alors que mon besoin c'est de trier cette colonne par date, groupe etc... (comme déjà expliqué).

macro :

Sub CptDiffVal()

'Compte le nombre de valeurs différentes contenues dans une colonne.

Dim Li, Col, Buf1, Cpt1, CptLi, CptCol, I, J, K

'Si la colonne à analyser ne commence pas à la ligne 3 de la colonne 1,

'changer les valeurs de Li et Col ci-dessous.

'------- !!! ATTENTION !!!

'--- Il ne faut pas de cellule vide dans la ligne n° 3

'--- ni dans la colonne n°1 dans cet exemple

Li = 2 'N° de la ligne où la liste des valeurs à compter commence

Col = 4 'N° de la colonne où la liste des valeurs à compter commence

'Initialiser les variables

CptLi = 0

CptCol = 0

Cpt1 = 0

'------------------------------------------------------------------------

'--- S'il y a, par exemple une ligne pour le titre des colonnes

'--- et une seconde ligne pour séparer les titres des données, par exemple,

'--- alors les données commencent à la ligne 3 de la colonne 1

CptLi = 0

CptCol = 0

'--- Le raisonnement est le même s'il y a des nomls de lignes dans la 1° colonne

'--- Compter le nombre de lignes à analyser

For I = Li To 65535

If IsEmpty(ActiveSheet.Cells(I, Col)) = False Then

CptLi = CptLi + 1

Else

Exit For

End If

Next I

'--- Compter le nombre de colonnes à analyser

For J = Col To 65535

If IsEmpty(ActiveSheet.Cells(Li, J)) = False Then

CptCol = CptCol + 1

Else

Exit For

End If

Next J

'-------------------------------------------------------------------------

'Trier l'ensemble des cellules par ordre croissant

'--- 'Sélection de la zone à trier par ordre croissant

ActiveSheet.Range(Cells(Li, Col), Cells((Li - 1) + CptLi, (Col - 1) + CptCol)).Select

'--- 'Trier la zone de cellules par ordre croissant

Selection.Sort Key1:=ActiveSheet.Cells(Li, Col), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

DataOption1:=xlSortNormal

'--- 'Se positionner sur une cellule

ActiveSheet.Cells(Li, Col).Select

'Compter le nombre de valeurs différentes contenues dans la colonne choisie

Buf1 = ActiveSheet.Cells(Li, Col).Value

Cpt1 = 1

For K = Li To (Li - 1) + CptLi 'Lire chaque cellule de la colonne

'--- 'Si une valeur différente de la précédante dans la cellule visitée

If ActiveSheet.Cells(K, Col) <> Buf1 Then

Cpt1 = Cpt1 + 1 'Incrémenter le compteur

Buf1 = ActiveSheet.Cells(K, Col).Value

End If

Next K

'ActiveSheet.Cells(K, Col).Value = Cpt1 'Récupère le nombre de valeurs différentes

TheFile = "C:\Users\Fahmi\Desktop\Majdi\prjt\Nouv\leoni.txt"

Open TheFile For Output As #1

TheText = ""

TheText = Cpt1

'TheText = Cells(K, Col)

Print #1, TheText

Close

End Sub

fichier .vbs :

Option Explicit

On Error Resume Next

ExcelMacroExample

Sub ExcelMacroExample()

Dim xlApp

Dim xlBook

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Open("C:\Users\Fahmi\Desktop\Majdi\prjt\Nouv\monfichier.xlsm", 0, True)

xlApp.Run "CptDiffVal"

xlApp.SaveAs

xlApp.ActiveWorkbook.Close

xlApp.Quit

Set xlBook = Nothing

Set xlApp = Nothing

End Sub

majish a écrit :

J'ai commencé a faire une macro ...

1- Je suis obligé d'enregistrer le fichier csv en .xlsm (excel prenant en charge les macros) alors que je veut soit travailler directement sur le fichier csv, soit le convertir automatiquement en gardant la forme du tableau.

2- La macro fait le calcul de la totalité de la colonne alors que mon besoin c'est de trier cette colonne par date, groupe etc... (comme déjà expliqué).

Un fichier csv est un fichier texte pur où les données sont séparées par un ; ... ce fichier ne permet pas d'enregistrer des calculs et des formats. Il faut convertir en excel.

De où sors-tu cette macro ? j'ai du mal à te suivre.

Une fois de plus, je t'oriente vers la voie des TCD bien plus puissants. Ci-joint un outil qui te permettra d'importer les données t les mettre sous forme de TCD, à toi de "jouer" avec les champs du TCD pour obtenir ce que tu souhaites.

https://www.cjoint.com/c/ECjg1QpbfAX

Autre façon de présenter le TCD

tout dépend de ce que tu recherches

cela montre qu'en 2 mouvements de souris on peut avoir des informations pertinentes

https://www.cjoint.com/c/ECjitG1KPTd

Merci beaucoup Michel

on est un peu loin de ce que je voulais mais ce n'est pas grave, je vais essayer autre chose.

Juste une remarque :

Lors de l'exportation les colonnes date et temps perdent ses formats (exemple 31/01/2015 devient 42035)

Bonjour,

Est ce que on peut ajouter une condition IF pour faire la sélection de l'extraction des données par date ?

par exemple : une si je tape la date 31/01/2015 on fait seulement l'extraction des données de cette date (en ajoutons une petite interface UserForm qui demande la date avec deux boutons OK et Annuler)

bouton

Cordialement

Dans ce cas, mets le champ Date en filtre du TCD, et actualise le TCD.

Mets la main dans la cambouis, en faisant un bout de macro par apprentissage, tu en tireras les bonnes instructions.

Michel

Rechercher des sujets similaires à "fichier csv"