Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexBonjour,
J'ai créé une macro itérative dans laquelle j'appelle une commande .bat.
Aujourd'hui le nombre max d'itération est fixe (lié à une zone de texte). Ce nombre max me sert dans un filtre et à activer/désactiver un container qui contient un .bat (si je ne fais pas ça, je reçois un message d'erreur lorsque je dépasse le nombre d'itération car dans le true du filtre du vide est envoyé au .bat et un .bat vide génère une erreur).
Voici ma macro itérative :
Dans le workflow qui appelle cette macro, je souhaiterai envoyé le nombre max d'itération (calculé dans le container grisé ci-dessous) à ma macro itérative
Or j'ai fait plusieurs essais mais rien ne fonctionne :
- Mettre un paramètre de contrôle => transforme ma macro en macro batch
- Passer par un input control dans la macro itérative et lier la loupe de cet input control à la loupe du filtre et de la condition d'interface => je reçois le message "Une entrée de macro ne peut pas être utilisée comme entrée de question pour cette configuration"
- Passer par une liste en remplissant la liste avec les données de mon input control => je ne vois pas comment sélectionner la première valeur
Comment pourrais-je faire cela ?
Merci.
Résolu ! Accéder à la solution.
Bonjour @PatPli
Une solution est peut-être de faire une méthode "poupée russe": il faut mettre le container dans une macro batch indépendante de la macro itérative et insérer cette nouvelle macro dans la macro itérative. A titre d'exemple, l'outil Nettoyage de données fonctionne sur ce mode avec plusieurs macros dans une même macro.
Qu'en pensez vous?
Benoit
Bonjour Benoit,
Merci pour votre retour et votre suggestion. Toutefois, je pense qu'il y a une subtilité que je ne comprends pas. En effet, je viens d'essayer mais je ne vois pas la différence entre avoir un input control ou le résultat d'une macro batch dans ma macro itérative :
Ci-dessus, comment puis-je faire ensuite pour remplacer ma zone de texte avec la sortie de ma macro batch calculant le nombre max d'itérations ?
Merci.
En complément, mon problème est surtout lié au fait que le filtre même à False n'empêche pas de passer par la commande .bat et donc renvoie une erreur lorsque le jeu de données est vide.
En effet, au niveau du filtre, je n'ai pas vraiment besoin de la zone de texte pour saisir le nombre d'itérations, une entrée de macro avec le nombre d'itération convient parfaitement. J'en ai surtout besoin pour activer / désactiver le container :
Si je trouve un autre moyen pour que quand le filtre est à False, la partie true ne s'exécute pas avec un jeu de données vide, mon problème sera résolu.
La solution est de transformer le conteneur avec le script .bat en macro batch. Ainsi vous pourrez tester la condition NB ITERATION MAX > ITERATION NUMBER et modifier l'activation du conteneur.
La nouvelle macro ressemblera à ça:
Je vous ai mis un workflow en PJ comme exemple.
Benoit
Merci @BenoitC. Je comprends maintenant (Workflow => macro itérative => macro batch avec le .bat et là je peux utiliser un control parameter) et en effet ça devrait fonctionner !
Salut à tous,
J'arrive après la bataille MAIS cela me permet de profiter de la sortie de la dernière version 23.1 pour exploiter la nouvelle fonctionalité d'activation conditionnelle de container.
Ainsi une portion d'un workflow peut être désactivée en fonction du déroulement du début du workflow. Et donc si tu n'as plus d'exécution à lancer tu peux désactiver le container qui lance le batch et donc éviter de lever une erreur. Cela nécessite un peu de redesign du workflow mais du coup simplifie le flux globale.
Explication de cette fonctionalité ici: Control Container
Hop
Bonjour @PatPli,
Merci pour votre question. Si la réponse de @StephaneP ou @BenoitC vous a aidé, pourriez-vous l'accepter comme solution. Cela aidera d’autres utilisateurs.
Merci beaucoup !
Bonjour @StephV,
Avant-hier, j'ai déjà accepté comme solution la réponse de BenoitC. Dois-je faire une autre action ?
Merci.