Macro VBA pour écrire du code Macro ImageJ - VB/VBA/VBS - Programmation
Marsh Posté le 17-11-2016 à 14:00:22
vylkor a écrit : Pour l'instant, la solution la plus "simple" que j'ai trouvé c'est de rentrer chaque ligne dans une cellule puis de faire un :
|
Connais rien au VBA moi, au pif: Chr(13) & Chr(10) (soit \r\n) pour un saut de ligne correct sous Windows.
Marsh Posté le 17-11-2016 à 15:55:57
Merci beaucoup pour cette réponse claire et efficace, ça marche parfaitement
Je reste néanmoins ouvert à toute suggestion pour améliorer le code, ma solution me parait malgré tout très... artisanale
Marsh Posté le 24-11-2016 à 12:54:38
Hello, je relance le sujet, je fais face à un nouveau problem, mon code ressemble à ça pour l'instant :
Code :
|
Avec 17 cellules à traiter, ça marchait très bien, mais j'ai modifié mon code macro et j'ai maintenant 4 lignes en plus et... Excel n'à pas le temps de génèrer le fichier, il ouvre le fichier avant et du coup se coupe lui même l'écriture... J'ai essayé de rajouter une tempo :
Code :
|
Mais même comme ça il prend pas le temps de finnir ce qu'il à commencé...
Des idées sur comment règler le problème ? Je me doute que ma structure n'est pas optimisée, mais je ne sais pas trop comment rendre ça plus rapide et éviter ça.
Si ça peut vous aider, voice le nouveau code macro :
Code :
|
Merci de votre aide
Marsh Posté le 24-11-2016 à 15:21:54
Bonjour !
Le Bloc-Notes ne comprend que la séquence standard Windows pour une fin de ligne #13#10 (vbCrLf).
Un fichier texte mal affiché avec ce Bloc-Notes le sera bien par tout autre éditeur. (WordPad, Word, NotePad++, …)
Le Bloc-Notes n'étant donc pas une référence (à oublier) mieux vaut se préoccuper de quelle est la séquence attendue !
Sinon tu as oublié de fermer le fichier généré avant de lancer l'exécution ‼
Code :
|
Astuce : double-cliquer dans le cadre du code ci-dessus avant le Copier / Coller …
Marsh Posté le 24-11-2016 à 16:32:05
Mon dieu, je me sens extrêmement bête maintenant, la fonction "Close" corrige tout mon problème, et quand je vois aussi comment tu as simplifié le code, c'est impressionnant !
Donc vraiment, grand merci parce que ce problème de fichier coupé m'à cassé la tête longtemps... Je vais essayer "d'élargir" mes connaissances en VBA, tellement de fonctions que je ne connais pas ou utilise mal encore.... et surtout tellement de possibilités
Et si ça peut rassurer, j'utilise Notepad++ quand je peux, juste qu'au boulot y à pas trop le choix...
Marsh Posté le 24-11-2016 à 19:14:56
Si dans la feuille DATA la colonne B est vide alors tu peux te passer du .Columns(1) de ma ligne de code #4 …
Cette ligne récupère les valeurs de la colonne donc en deux dimensions (n lignes sur 1 colonne)
mais comme la fonction Join ne gère qu'une seule dimension,
la fonction de feuille de calculs Transpose convertit alors cette colonne en une ligne unidimensionnelle à laquelle est insérée
entre chaque donnée via Join la séquence vbCrLf (placer le curseur texte dessus dans le code puis appuyer sur la touche F1) …
Marsh Posté le 17-11-2016 à 11:40:18
Bonjour,
Alors pour commencer une petite explication du contexte :
Je suis apprenti dans une assez grosse entreprise, et je dois créer un outil de contrôle visual.
Le budget étant serré, je travaille avec ImageJ pour la partie traitement de l'image, et pour l'interface j'ai decide de me tourner vers VBA, le plus simple à mettre en place ici.
Voila grosso modo comment ça doit se comporter :
On crée toutes les couleurs grace à une macro VBA, les données sont reccueillis vers une feuille ("Couleurs" ) qui enregistre tout ce qui interesse ( paramètres pour le traitement ImageJ, nom de la couleur, etc... ) à l'aide d'un petit formulaire, cette partie la marche sans problèmes ( pour l'instant ).
Sur une autre feuille ("Opérateurs" ), on à une autre macro qui permet de lancer le traitement de l'image, donc en gros :
0 - On nettoi la feuille de toutes les données précédentes
1 - On choisis une couleur dans la liste des couleurs crées
2 - Excel génère un fichier Macro.ijm ( format similaire à un fichier .txt, juste l'extension qui change ) qui donne les instructions à imageJ en function des données rentrées dans la feuille "Couleurs"
3 - Le fichier généré est lancé
4 - Le fichier généré est supprimé
5 - ImageJ crée à la fin de son traitement un fichier excel, dont les données sont recupérés par le fichier et intégrès dans la feuille opérateur
6 - Les stats sont affichées
Le plus gros soucis que j'ai c'est pour l'étape de la creation du fichier Macro.ijm, le fichier ressemble à ça en gros ( pour mieux voir, les valeurs variables sont entre 3 crochets [[[]]]) :
Pour l'instant, la solution la plus "simple" que j'ai trouvé c'est de rentrer chaque ligne dans une cellule puis de faire un :
Sauf que dans l'affichage wordpad ça passé, mais en affichage bloc note simple ça rajoute que des espaces et non plus des sauts de lignes
Est ce que vous voyez d'autres solutions pour se problème ? Je suis totalement novice en programmation VBA, c'est la première fois que j'en fait et j'avance le projet avec un livre d'apprentissage VBA sur mon bureau et google qui tourne en permanence pour trouver les solutions, mais la je coince.
En tout cas merci aux courageux qui ont tout lu, je présente mes excuses pour les innombrables fautes qui doivent trainer, j'ai un correcteur anglais qui tourne et me fait des correction automatique en plus de faire scintiller tout le texte en rouge, ce qui n'aide pas
Bonne journée
Message édité par vylkor le 17-11-2016 à 11:54:51