Aller au contenu


Photo
- - - - -

Lancer plusieurs macro *mcr en Javascript


  • Veuillez vous connecter pour répondre
36 réponses à ce sujet

#21 Dylav

Dylav

    Modérateur

  • Modérateur [Dylav]
  • 29 459 messages

Posté 08 juin 2017 - 10:27

Désolé... :sourire:


  • 0

PUBLICITÉ

    Annonces Google

#22 vlx360

vlx360

    Member

  • Membres
  • 34 messages

Posté 08 juin 2017 - 10:48

Ok, merci,

 

J'ai fais des tests dans tous les sens çà ne fonctionne pas, avez vous testé vos codes ?

 

Comme il y a eu dans le temps deux changements ou erreur, là vous êtes sûr et certains que çà fonctionne chez vous ?

 

On me met toujours le fichier spécifié est introuvable, erreur ligne 11 caractère 2

 

Je le redis, j'ai changé le nom d'une de mes macros pour test "plus simple et sûr" et mis le chemin complet, ou aucun car le fichier est à la racine du dossier la page html.

 

<!DOCTYPE html>
<html>
<head>
<title>Lancement des macros</title>
<script type="text/JavaScript">
var myArray = ['C:\Users\MTT-2014\Documents\appli_001.mcr', 'appli_002.mcr',
               'appli_199.mcr', 'appli_200.mcr'];
function lance(Numero_Macro) {
 var wScript = new ActiveXObject("Wscript.Shell");
  var myMacro = wScript.CurrentDirectory + "\\" + myArray[Numero_Macro];
 wScript.run(myMacro);
 return false;
}
</script>
</head>
<body>
<hta:application border="none" singleinstance="yes" windowstate="maximize" scroll="no" caption="no" innerborder="no"></hta:application>
.....
<a href="" onClick="lance(1);return false;"><img src="image_001.jpg"></a>
<a href="" onClick="lance(2);return false;"><img src="image_002.jpg"></a>
.....
<a href="" onClick="lance(199);return false;"><img src="image_199.jpg"></a>
<a href="" onClick="lance(200);return false;"><img src="image_200.jpg"></a>
.....

</body>
</html>


Modifié par vlx360, 08 juin 2017 - 11:05 .

  • 0

#23 vlx360

vlx360

    Member

  • Membres
  • 34 messages

Posté 08 juin 2017 - 11:45

J'ai eu un coup de pouce d'un autre forum :

 

les indices des Array commence à 0 et non pas à 1

 

La çà fonctionne !

 

Merci énormément pour le gros du code, comme quoi il ne faut jamais être trop sur de soi !


  • 0

#24 Notpa

Notpa

    Modérateur

  • Modérateur [Notpa]
  • 25 428 messages

Posté 08 juin 2017 - 11:54

Merci du retour d'infos vix360,

 

Si tu considères que la question est réglée, merci de le signaler en ajoutant le mot [Résolu] au début du titre de ton sujet…

           resolu.jpg

[1] En bas du premier message de ton sujet, clique sur Modifier
[2] En bas de l'éditeur qui s'ouvre, clique sur Utiliser l'éditeur complet
[3] En haut de l'éditeur complet, ajoute [Résolu] au titre de ton sujet.
[4] Clique sur le bouton Enregistrer le message modifié pour valider.

Merci d'avance.

Cordialement

Notpa


  • 0

#25 vlx360

vlx360

    Member

  • Membres
  • 34 messages

Posté 08 juin 2017 - 12:06

Ok, pour le moment je ne le mets pas, car en dossier document çà marche, mais si je déplace dans un autre dossier et pourtant en corrigeant les chemins çà recommence...


  • 0

#26 Notpa

Notpa

    Modérateur

  • Modérateur [Notpa]
  • 25 428 messages

Posté 08 juin 2017 - 12:26

OK. Merci.


  • 0

#27 vlx360

vlx360

    Member

  • Membres
  • 34 messages

Posté 08 juin 2017 - 01:00

Bon,

 

Ce n'est vraiment pas logique ce qui ce passe,

 

En l'état, si je lance la page, çà fonctionne bien pour l'appli_001, aucune raison pour que çà ne fonctionne pas cette fois si tout est correct !

par contre i je déplace les fichiers dans un autre dossier et/ou DD, pourtant j'indique bien le chemin relatif mais le fait de changer de répertoire  fait recommencer le problème, j'ai beau indiquer tous les chemins possibles rien n'y fait !

 

C'est quand même compliqué ce javascript, car ce n'est pas du tout logique !


Modifié par vlx360, 08 juin 2017 - 01:30 .

  • 0

#28 Jocko

Jocko

    Member

  • Membres
  • 82 messages

Posté 08 juin 2017 - 05:58

J'avoue ne pas bien te comprendre...

 

Qu'entends-tu par "pourtant j'indique bien le chemin relatif"

 

De mon côté le bon paramètrage doit être celui-ci:

- ligne de déclaration des macros (var myArray = array[....])

Le tableau ne doit contenir que les noms de fichier des macros (retirer le chemin) et rien d'autre;

 

- ligne construction du chemin absolu vers la macro (var myMacro = wScript.CurrentDirectory + "\\" + myArray[Numero_Macro])

pour que cette ligne fonctionne correctement, il faut que le fichier html/hta soit placé avec les fichiers macros.

Donc si tu déplaces les fichiers macros, il est nécessaire de déplacer également le fichier html/hta. (et mettre éventuellement un raccourci à l'endroit voulu, par exemple sur le bureau vers son nouvel emplacement)

 

Sinon temporairement pour contrôler que le chemin vers la macro est correctement construit, il faut ajouter la ligne suivante après (var myMacro = wScript.CurrentDirectory + "\\" + myArray[Numero_Macro])

alert(myMacro);

Sur un click un popup d'information devrait apparaître en affichant le chemin complet (C:/..../appli_xxx.mcr).

=> s'assurer que c'est ok

 

Si oui retirer la ligne "alert"

 

 

 

C'est quand même compliqué ce javascript, car ce n'est pas du tout logique !

Pas d'accord...

pour l'utilisation qui en est fait ici, tout est logique et simple.

 

Par contre sur d'autres aspects, il y a matière à discussion...


Modifié par Jocko, 08 juin 2017 - 05:59 .

  • 0

#29 vlx360

vlx360

    Member

  • Membres
  • 34 messages

Posté 08 juin 2017 - 07:48

Jocko, justement pour moi c'est vraiment étrange !

 

Chemin relatif du fichier macro, mais j'avais testé le chemin complet, tu me dis qu'il ne faut que le nom des macros ce qui dit le contraire Dylav dans un de ses posts.

 

Dans le doute j'avais testé les deux.

 

A chaque fois les macros se trouvent où est le fichier html/hta, çà fonctionne si je reste dans mes documents, mais si je déplace l'ensemble, "bien-sûr", macro+fichier html/hta çà ne marche plus. il y a forcément une erreur dans le code !

 

EDIT :

j'ai trouvé une partie du problème :

 

Si tu mets les fichiers à la racine d'un dd, peu importe lequel çà marche systématiquement, par contre dés que tu les mets dans un dossiers çà ne marche plus...

 

Il y donc une ligne de code qui n'est pas bonne !


Modifié par vlx360, 08 juin 2017 - 07:52 .

  • 0

#30 Jocko

Jocko

    Member

  • Membres
  • 82 messages

Posté 08 juin 2017 - 07:56

Dylav dit la même chose que moi!

 

Dans le monde Microsoft, l'antislash est un caractère spécial, qui doit être doublé pour être compris en tant que tel. Ce qui explique la séquence "\\".

L'instruction que te donne Jocko exprime le chemin complet de ta macro (le signe + est l'opérateur de concaténation de chaînes de caractères),

  1. wScript.CurrentDirectory donne le chemin complet du répertoire qui contient le lanceur HTML,
  2. "\\" représente le séparateur classique entre deux éléments de chemin (cf. ma remarque ci-dessus),
  3. myArray[Numero_Macro] contient le nom de ton fichier macro.

Il n'y a donc rien à ajouter dans cette instruction.

Donc pour que myArray[Numero_Macro] contienne que le nom de ton fichier macro, il faut évidemment ne mettre que les noms des macros lors de la déclaration de myArray !

var myArray = ['appli_001.mcr', 'appli_002.mcr',....,'appli_199.mcr', 'appli_200.mcr'];

Modifié par Jocko, 08 juin 2017 - 07:57 .

  • 0