krokoh | Bonjour, je suis en train de réaliser une macro pour le traitement de donnes contenues dans un fichier *.csv
Le but de la macro est a partir d'un fichier brut *.csv, trier et garder les donnes (les lignes en l'occurence) qui nous interessent et supprimer les autres.
Dans le paquet de lignes qui m'intéressent, certaines doivent être exportées dans un fichier excel et d'autres dans d'autres fichiers excel selon un critere bien défini.
j'ai déjà commence a travailler dessus et ça donne ça
Code :
- Sub Macro1()
- '
- ' Sorting macro for Bent Blade Detector
- '
- ' Created the 23/6/2008 - PA NICOLAS
- '
- 'Start text to Column script
- Columns("A:A" ).Select
- Selection.TextToColumns Destination:=Range("A1" ), DataType:=xlDelimited, _
- TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
- Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
- :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
- Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
- ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
- (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
- Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
- 33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
- Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array( _
- 46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1)), TrailingMinusNumbers _
- :=True
- 'Script done
-
- 'Writing min, max and range in column after bent blades values column and writing formulas of min max and range in the first cells
- Range("AY1" ).Select
- ActiveCell.FormulaR1C1 = "min"
- Range("AZ1" ).Select
- ActiveCell.FormulaR1C1 = "max"
- Range("BA1" ).Select
- ActiveCell.FormulaR1C1 = "range"
- Range("AY2" ).Select
- ActiveCell.FormulaR1C1 = "=MIN(RC[-3]:RC[-1])"
- Range("AZ2" ).Select
- ActiveCell.FormulaR1C1 = "=MAX(RC[-4]:RC[-2])"
- Range("BA2" ).Select
- ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]"
-
- 'Calculating the number of rows
- Dim rows_number As Integer
- rows_number = "=COUNT("AY:AY" )" + 1
-
- 'integrating the number in the string
- Dim rows_max As String
- rows_max = BA2 & rows_number
-
- 'copy operation
- Range("AY2:BA2" ).Select
- Selection.Copy
-
- 'paste operation
- Range("AY3:rows_max" ).Select
- ActiveSheet.Paste
-
- End Sub
|
Première chose dont j'ai besoin, c'est trouver le nombre de lignes présentes dans le fichier excel. pour cela je pensais faire un bête count d'une colonne en particulier. Je souhaite récupérer ce nombre pour ensuite réaliser un copy paste de trois cellules qui sont situes sur la première ligne jusqu'à la dernière ligne présente dans le fichier excel. Seulement ça a pas l'air de fonctionner aussi simplement que je le pensais...
Deuxième chose, j'ai besoin de réaliser un tri sur une colonne en particulier.Celle-ci contient des valeurs du genre "735475-2", ou bien "487596-6",...
je ne dois garder que les lignes possédant dans cette colonne une valeur qui m'intéresse (la liste de ces valeurs en question pourrait être un tableau en fait avec les valeurs indiquées dans le tableau) et "dropper" les autres lignes qui ne m'intéressent pas.
3eme chose. On a donc un fichier excel avec un ensemble de lignes qui m'intéressent. Maintenant je dois grouper ces lignes selon un critère bien défini ( en l'occurrence toutes les lignes qui ont la même valeur dans une colonne donnée) et les sauver dans un fichier excel. Par exemple on a un groupe de lignes avec une valeur x dans la colonne A un autre groupe de lignes avec la valeur y dans la colonne A et ainsi de suite. Il faut exporter chaque différent groupe de ligne dans un fichier excel séparé. Un groupe = un fichier excel.
Ensuite je dois dans ces groupes de lignes et dans certaines colonnes, "dropper" certaines valeurs.
Le mieux serait en fait que je montre la manip de traitement des données en live mais c'est un peu dur a réaliser au boulot...
la macro est pas facile a réaliser, j'ai des bases en programmation, en C, mais queue dalle en visual basic pour excel et je suis pas un uber expert non plus...
Si vous avez des idees ou pouvez m'aider ---------------
"Fire, exclamation mark. Fire, exclamation mark. Help me, exclamation mark. Looking forward to hearing from you. All the best, Maurice Moss."
|