Aide pour une macro
Je suis entrain d'automatiser pour mon boulot (chercheur en géologie) une petite macro pour comparer des pentes. Je bloque sur quelques étapes :
1) je dois importer deux fichiers *.txt, une par feuille de mon tableur excel. pour l'instant j'en suis là :
Workbooks.OpenText Filename:="C:\Users\Sebastien\Desktop\part1.txt", Origin _
:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Workbooks.OpenText Filename:="C:\Users\Sebastien\Desktop\part2.txt", Origin _
:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
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)), TrailingMinusNumbers:=True
SelectAll
Selection.Cut
Windows("part1.txt").Activate
Sheets.Add After:=ActiveSheet
Sheets("Feuil1").Select
ActiveSheet.Paste
ça me pose plusieurs problème : 1) ça manque d'élégance, mais ça, je peu m'y faire n'étant pas pro.
2) Si mes fichiers ne s'appellent pas part1.txt et part2.txt, je ne peut rien changer, or mes fichiers s'appellent part1.txt, part2.txt, part3.txt, etc... et il faut que je teste entre elle toutes les combinaisons (part1 avec 2, avec 3, avec 4, puis 2 avec 3, avec 4, puis 3 avec 4...)
3) N'est il pas possible d'importer directement dans un nouvelle feuille plutot que d'ouvrir le fichier et copier coller?
Ensuite, mes fichiers ont un nombre de colonne fixe mais un nombre de ligne variable, et j'aurais besoin d'entrer des formules en bas de colonnes. Pour l'instant, je fais :
Range("A6").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-4]C:R[-1]C)"
Range("B6").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-4]C:R[-1]C)"
Le problème est bien sur que si j'ai plus de 6 lignes en A, et bien j'écrase la A6, et en plus je fais ma somme uniquement sur les données 1à5
j'aurais aussi besoin parfois d'écrire quelque chose "dx" par exemple, dans la 2eme case après la fin de la colonne (quand elle se finit en A6; écrire en A8, par exemple), comment faire?
Merci beaucoup de votre aide, qui sera précieuse.
27 réponses
Automatiser une macro Excel pour comparer des pentes et importer des fichiers texte multiples pose des défis d'élégance du code et de gestion des noms de fichiers. Des réponses insistent sur l'apport d'une approche statistique pour la comparaison des pentes, en géostatistique, où la statistique t sert d'outil, indiquant une méthode adaptée plutôt qu'un simple calcul. La formule recommandée est typiquement (SlopeA-SlopeB)/racine(ssdA+ssdB), avec des variantes référençant des cellules comme B12-Feuil1!B10, afin de conduire le calcul de la différence de pentes normalisée. D'autres éléments évoquent des aspects pratiques : tests de noms de fichiers, gestion des chemins, importation directe sur une feuille, et l'adaptation des formules lorsque le nombre de lignes dépasse le seuil initial.
-
Une chercheuse travaillant avec moi à finalement codé sous python une solution qui est plus façile que sous excel,
Je vous remercie beaucoup de votre aide. -
Re,
Pouvez-vous faire les comparaisons completes entres fichiers pour 4 fichiers et 6 fichiers sur votre model (part1 avec 2, avec 3, avec 4, puis 2 avec 3, avec 4, puis 3 avec 4...) de facon a avoir votre facon de proceder qui est surement la meme que moi mais ........
A+ -
Re,
Je ne voulais pas sembler agressif je suis juste maladroit.
y a pas de lezards -
Merci beaucoup!
Je ne voulais pas sembler agressif je suis juste maladroit.
Pour ce qui est du traitement, ça commence à bien marché, pour l'instant ça a ouvert le premier fichier(part1), et ça a placé les dx, dy, dxx... dei*dei, slope, intercept, ssd, et les sommes et moyennes. -
Re,
modifie avec message si pas de fichier: https://www.cjoint.com/?DJjjJxVElU5
donc c'est bel et bien un outil de comparaison je ne vous contrarierai pas sur le sujet
pour les calculs de formule, je regarde a la chose pour que cela se fasse automatiquement en fonction du nombre de fichier(s) -
Alors soit en parle en informatique soit en géostatistiques. En géostatistique, la statistique t permet de comparer deux pentes, donc c'est bel et bien un outil de comparaison. Après, peut être qu'en code ou en informatique (ou je ne m'y connais pas) il s'agit juste d'un calcul de quelque chose.
L'important est que la formule soit =(SlopeA-SlopeB)/racine(ssdA+ssdB) soit =(B12-Feuil1!B10)/RACINE(D12+Feuil1!D10) -
Re,
Ca dit qu'il n'y a pas de fichiers avec la partie de nom que vous avez mise ou le chemin n'est pas le bon, mais il existe. Cette erreur peut se traiter facilement -
Pour l'instant il me met cette ligne en jaune et me dit erreur 9, l'indice n'appartient pas à la séléction:
Call QuickSort(TFichiers(), LBound(TFichiers), UBound(TFichiers)) -
Bonjour,
la formule de comparaison dans votre exemple, en B15 ce n'est pas une comparaison que vous faites, c'est un calcul de quelque chose !!!!!!!! -
Merci beaucoup !!
Je vais continuer de chercher pour la formule de comparaison, je vous dit si je trouve ok? -
Re,
fichier avec import fichiers txt, ecriture formules sauf la formule de comparaison (demande reflextion pour empilage): https://www.cjoint.com/c/DJirCOAkOPr
A+ -
Re,
Module MTraitement au debut il y a une constante Rep avec pour moi un chemin, mettez le votre (ce que j'ai ecrit Lien (#12)) -
Erreur d'execution '52': nom ou uméro de fichier incorrect, et je retrouve pas ou changer ce dit nom de fichier
-
Re,
Pourquoi ???????????????????????? -
Je n'arrive pas du tout à l'utiliser...
-
Re,
en attendant
Recuperation des fichiers, un par onglets: https://www.cjoint.com/c/DJipbt09a88
Mettez votre chemin fichiers -
comment faire pour que plutot que de cumuler, les avoir sur deux pages?
-
Bonjour
Voila une macro pour le cumul des fichier TxT
mettre tout les txt dans un repertoire
http://cjoint.com/?3JinjbpNzEc
A+
Maurice -
en effet c'est une erreur la bonne formule est =(B12-Feuil1!B10)/RACINE(D12+Feuil1!D10)
-
Re,
Desole, aucune reference a la feuil1 en feuil2!B15
- 1
- 2