Bonjour,
Mon classeur excel est ainsi fait :
Une feuille "data" où j'importe via macro des données d'un document texte, une feuille "data_calc" ou chaque colonne de "data" est traitée par une formule et enfin une feuille "rapport" où je tire des graphes des données de "data_calc"
Le but de la première macro est d'accélérer le système d'import. Elle se présente ainsi :
Problème 1 : J'aimerais que le fichier texte qui est ouvert dans un nouveau classeur soit automatiquement fermé à l'issue de l'opération.
Genre :
Si j'ai ouvert "machin.txt", ok ça marche mais le fichier que j'ouvre change en fait de nom à chaque fois. Comment faire pour que ça marche quel que soit le nom du fichier ?
Problème 2 : Le nombre de lignes du fichier texte change aussi à chaque fois. "data_calc" recalcule d'autres colonnes à partir des colonnes de "data". Le nombre de lignes et leur emplacement (en terme de numéro de ligne) est par contre le même bien sûr.
Jusqu'ici, en bon newbie, je procédais de la façon suivante : je copiais la formule sur un grand nombre de lignes, nombre supérieur au nombre de lignes du fichier texte, les formules s'appliquaient et les lignes de trop étaient supprimées.
C'est une méthode, vous en conviendrez, un peu naze mais ce sont là mes limites .
Question donc : est-il possible de demander, dans la macro, que la formule présente à la ligne X dans "data_calc" soit copiée jusqu'au numéro de ligne correspondant au numéro de ligne au-delà duquel il n'y a plus de valeur dans "data" ?
Problème 3 : Je disais donc que des graphes étaient tirés de "data_calc" pour s'inscrire dans "rapport"
Les premiers graphes ne sont pas bien méchants et prennent l'intégralité des valeurs d'une colonne.
Le dernier est plus délicat et jusqu'ici je doutais qu'on puisse l'automatiser mais bon.. sait-on jamais ?
Admettons qu'il y ait genre 80 lignes dans "data_calc". Est-il possible de détecter et d'indexer automatiquement la dernière ligne de cette colonne qui présente une valeur type 99,X (X étant un chiffre instable d'une ligne à l'autre) ?
Est-il alors possible de demander : fais-moi un graphe dont les valeurs séchelonneront entre un max = cette valeur et un min = la valeur de cette colonne mais 10 lignes au dessus de la valeur max ?
Compliquons un peu : ces deux valeurs sont des bornes qui sont pour moi facilement détectables. Malheureusement, ces deux valeurs ne sont pas dans la colonne qui m'intéresse. Héhé
En résumé, je voudrais en X par exemple :
min : la valeur 10 lignes au dessus de 99,X mais dans la colonne de droite
max : ce qu'il y a dans la colonne à droite du fameux 99,X
Et en Y
min : la valeur 10 lignes au dessus de 99,X mais dans la colonne de gauche
max : ce qu'il y a dans la colonne à gauche du fameux 99,X
Et enfin est-ce que la formule de la mort qui me donnerait ces points peut être incluse dans "données sources" d'un graphique ?
LOL.. Voilà si vous pouvez m'aider sivouplé merki
Mon classeur excel est ainsi fait :
Une feuille "data" où j'importe via macro des données d'un document texte, une feuille "data_calc" ou chaque colonne de "data" est traitée par une formule et enfin une feuille "rapport" où je tire des graphes des données de "data_calc"
Le but de la première macro est d'accélérer le système d'import. Elle se présente ainsi :
Code:
Workbooks.OpenText FileName:=Application.GetOpenFilename("Text Files,*.txt"), Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
, Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1))
Columns("A:F")
Selection.Copy
Windows("FluCoal.xlt").Activate
Columns("A:F")
ActiveSheet.Paste
Selection.Columns.AutoFit
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.ShrinkToFit = False
.MergeCells = False
End With
End Sub
Problème 1 : J'aimerais que le fichier texte qui est ouvert dans un nouveau classeur soit automatiquement fermé à l'issue de l'opération.
Genre :
Code:
Windows("machin.txt").Activate
ActiveWindow.Close
Si j'ai ouvert "machin.txt", ok ça marche mais le fichier que j'ouvre change en fait de nom à chaque fois. Comment faire pour que ça marche quel que soit le nom du fichier ?
Problème 2 : Le nombre de lignes du fichier texte change aussi à chaque fois. "data_calc" recalcule d'autres colonnes à partir des colonnes de "data". Le nombre de lignes et leur emplacement (en terme de numéro de ligne) est par contre le même bien sûr.
Jusqu'ici, en bon newbie, je procédais de la façon suivante : je copiais la formule sur un grand nombre de lignes, nombre supérieur au nombre de lignes du fichier texte, les formules s'appliquaient et les lignes de trop étaient supprimées.
C'est une méthode, vous en conviendrez, un peu naze mais ce sont là mes limites .
Question donc : est-il possible de demander, dans la macro, que la formule présente à la ligne X dans "data_calc" soit copiée jusqu'au numéro de ligne correspondant au numéro de ligne au-delà duquel il n'y a plus de valeur dans "data" ?
Problème 3 : Je disais donc que des graphes étaient tirés de "data_calc" pour s'inscrire dans "rapport"
Les premiers graphes ne sont pas bien méchants et prennent l'intégralité des valeurs d'une colonne.
Le dernier est plus délicat et jusqu'ici je doutais qu'on puisse l'automatiser mais bon.. sait-on jamais ?
Admettons qu'il y ait genre 80 lignes dans "data_calc". Est-il possible de détecter et d'indexer automatiquement la dernière ligne de cette colonne qui présente une valeur type 99,X (X étant un chiffre instable d'une ligne à l'autre) ?
Est-il alors possible de demander : fais-moi un graphe dont les valeurs séchelonneront entre un max = cette valeur et un min = la valeur de cette colonne mais 10 lignes au dessus de la valeur max ?
Compliquons un peu : ces deux valeurs sont des bornes qui sont pour moi facilement détectables. Malheureusement, ces deux valeurs ne sont pas dans la colonne qui m'intéresse. Héhé
En résumé, je voudrais en X par exemple :
min : la valeur 10 lignes au dessus de 99,X mais dans la colonne de droite
max : ce qu'il y a dans la colonne à droite du fameux 99,X
Et en Y
min : la valeur 10 lignes au dessus de 99,X mais dans la colonne de gauche
max : ce qu'il y a dans la colonne à gauche du fameux 99,X
Et enfin est-ce que la formule de la mort qui me donnerait ces points peut être incluse dans "données sources" d'un graphique ?
LOL.. Voilà si vous pouvez m'aider sivouplé merki
Dernière édition: