Aller au contenu

Excel vba Applescript


Messages recommandés

Bonsoir,

 

J'ai des problèmes pour passer des paramètres d'un SUB excel vba vers un Script Applescript en utilisant MacScript().

J'arrive lancer un script sans paramètre sans aucun problème mais dès que j'inclus dans la phrase "with parameters {x,y}" ça bugue. 

 

Quelqu'un pourrait-il m'aiguiller

 

Merci

:zz-big-grrmm:

(Excel Mac 2011)

Modifié par patyom
Lien à poster
Partager sur d’autres sites

Est-ce que tu peux donner une description plus complète du script que tu veux envoyer via la commande MacScript() ? Est-ce que tu peux exécuter ce script avec les paramètres dans l'éditeur Applescript ?

Modifié par Aliboron
Lien à poster
Partager sur d’autres sites

Bonsoir,

J'ai fais un exemple tout bête : je sais que je peut le faire avec VBA mais c'était pour apprendre à passer des paramètres de VBA à Applescript avec un retour.

Voilà :

le Script (SuppressionElementListe.scpt)

on run {ma_liste, Position}
	
	**** pour info ma_liste ressemble à çà {"a", "b", "c", "d", "e"} ****
	log ma_liste
	
	set ma_liste to suppression(ma_liste, Position)
	log ma_liste
	return ma_liste
	
end run

on suppression(liste, nbr)
	if (nbr > length of liste) or (nbr < 1) then return liste
	
	if nbr > 1 then
		set resultat to ((beginning of liste) as list) & suppression(rest of liste, nbr - 1)
	else
		return rest of liste
	end if
end suppression

le code VBA

Sub essaiPassageAuto()

' Déclarations
Dim ma_liste as string
Dim ScriptToRun As String
Dim Res As String

' Initialisations
ma_liste = {"a", "b", "c", "d", "e"}

' Phrase de lancement Script
ScriptToRun = "run script (""Macintosh HD:users:PATRICK:Desktop:DOSSIERS Desktop:Script-AppleScript:SuppressionElementListe.scpt"" as alias) with parameters {ma_liste, 3}"

' Lancement avec retour dans Res
Res = MacScript(ScriptToRun)

End Sub

Pour le retour dans Res je ne suis pas sûr.

(il y a certaines lignes qui apparaissent en vert c'est un bug)

 

Merci

Lien à poster
Partager sur d’autres sites

Plusieurs remarques : 

- Concernant le tableau ma_liste, tu ne peux pas utiliser les accolades {}

- Il faut renseigner les valeurs une par une

- Dans Applescript, les chemins d'accès sont au format posix

 

Donc en gros, ton code VBA doit plutôt ressembler à ça :

Sub essaiPassageAuto()

' Déclarations'
Dim ma_liste(0 To 4) As String
Dim ScriptToRun As String
Dim Res As String

' Initialisations'
ma_liste(0) = "a"
ma_liste(1) = "b"
ma_liste(2) = "c"
ma_liste(3) = "d"
ma_liste(4) = "e"

' Phrase de lancement Script'

ScriptToRun = "run script (""/Users/PATRICK/Desktop/DOSSIERS Desktop/Script-AppleScript/SuppressionElementListe.scpt"" as alias) with parameters {""" & ma_liste(3) & """}"

' Lancement avec retour dans Res'
Res = MacScript(ScriptToRun)

End Sub

En principe, ça devrait fonctionner.

 

Tu trouveras pas mal d'indications concernant les "mariages" VBA/Applescript sur les pages qu'y consacre Ron de Bruin.

Modifié par Aliboron
Lien à poster
Partager sur d’autres sites

Bonjour,

Tu es sûr de "ma_liste(3)", je crois que là on ne passe que la valeur 3 de la liste.

il y a 2 paramètres : ma_liste et Position (de l'élément à supprimer)

 

Dans tous les cas je me doutais que c'était la déclaration des paramètres qui coinçait.

 

Je vais essayer de trouver.

 

Merci

Lien à poster
Partager sur d’autres sites

Tu es sûr de "ma_liste(3)", je crois que là on ne passe que la valeur 3 de la liste.

 

Oui, cela ne passe que la valeur 3 de la liste. J'avais cru comprendre qu'avec {ma_liste, 3} tu passais toute la table juste pour en extraire la 3e valeur. Mais sinon, tu dois pouvoir envoyer .../...with parameters {""" & ma_liste &", 3" & """}".../... comme paramètre. Reste que je ne sais pas ce que ça va donner avec une table. Si j'ai une minute, je ferai un essai, pour voir...

 

MàJ : 

Bon, visiblement, ça n'accepte pas "as alias" d'une part et, surtout, l'envoi de toute la table comme paramètre ("Incompatibilité de type").

 

Dans tous les cas je me doutais que c'était la déclaration des paramètres qui coinçait.

Pas seulement. La déclaration de la table, la saisie des données, le chemin d'accès, ça compte aussi. ;)

Modifié par Aliboron
Lien à poster
Partager sur d’autres sites

MàJ : 

Bon, visiblement, ça n'accepte pas "as alias" d'une part et, surtout, l'envoi de toute la table comme paramètre ("Incompatibilité de type").

 

Petit complément : tu peux contourner le problème en envoyant les valeurs et pas la table en entier. Par exemple en intercalant cette boucle (et en transférant TouteListe au lieu de ma_liste, bien sûr) :

For i = 0 To 4
TouteListe = TouteListe & ma_liste(i) & ""","""
Next i
TouteListe = "" & Left(TouteListe, Len(TouteListe) - 3)
Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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.

Chargement
×
×
  • Créer...