Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Lancer plusieurs macro *mcr en Javascript


Messages recommandés

Posté(e) (modifié)

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
Posté(e)

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 !

Invité Notpa
Posté(e)

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

Posté(e) (modifié)

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
Posté(e) (modifié)

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
Posté(e) (modifié)

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
Posté(e) (modifié)

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

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...