Bonjour,
Bonjour,
Je cherche une application qui fait appel à un fichier csv (renouvelable journalièrement ) Ce lien n'existe plus et qui peut (d'une façon automatique) :
- Supprimer des colonnes inutiles
- Calculer tout en évitant les doublons.
- Trier et filtrer par date, par type etc..
Je reçois ce fichier csv chaque jour donc ce n'est pas un fichier stable (la mise à jour est journalière)
Je veut savoir par exemple le groupe G233-1 qu'est ce qu'il a travaillé comme : programme : 04L 972 627 AN, Tabella : TAB 009 834 B, quantité (Test ended OK) au 31/01/2015 entre 06h et 08h et l'opérateur qui a travaillé sur le poste (38374 par exemple), le numéro de la table (T265)
Doublons :
A
A
B
C
A
C
A
Quantité : 3 (A, B et C).
La colonne Identifiant unique contient des doublons parce que à chaque détection d'un défaut ce dernier doit être mentionné avec l'identifiant du produit donc on répète le même identifiant
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, 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 :
Je suis obligé d'enregistrer le fichier csv en .xlsm (excel prenant en charge les macros)
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
Quelqu'un peut m'aider SVP
Bonjour,
Je cherche une application qui fait appel à un fichier csv (renouvelable journalièrement ) Ce lien n'existe plus et qui peut (d'une façon automatique) :
- Supprimer des colonnes inutiles
- Calculer tout en évitant les doublons.
- Trier et filtrer par date, par type etc..
Je reçois ce fichier csv chaque jour donc ce n'est pas un fichier stable (la mise à jour est journalière)
Je veut savoir par exemple le groupe G233-1 qu'est ce qu'il a travaillé comme : programme : 04L 972 627 AN, Tabella : TAB 009 834 B, quantité (Test ended OK) au 31/01/2015 entre 06h et 08h et l'opérateur qui a travaillé sur le poste (38374 par exemple), le numéro de la table (T265)
Doublons :
A
A
B
C
A
C
A
Quantité : 3 (A, B et C).
La colonne Identifiant unique contient des doublons parce que à chaque détection d'un défaut ce dernier doit être mentionné avec l'identifiant du produit donc on répète le même identifiant
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, 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 :
Je suis obligé d'enregistrer le fichier csv en .xlsm (excel prenant en charge les macros)
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
Quelqu'un peut m'aider SVP