patyom 1 Posté(e) 3 août 2019 Signaler Share Posté(e) 3 août 2019 (modifié) 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 (Excel Mac 2011) Modifié 3 août 2019 par patyom Citer Lien à poster Partager sur d’autres sites
Aliboron 1 Posté(e) 4 août 2019 Signaler Share Posté(e) 4 août 2019 (modifié) 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é 4 août 2019 par Aliboron Citer Lien à poster Partager sur d’autres sites
patyom 1 Posté(e) 4 août 2019 Auteur Signaler Share Posté(e) 4 août 2019 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 VBASub 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 Citer Lien à poster Partager sur d’autres sites
Aliboron 1 Posté(e) 4 août 2019 Signaler Share Posté(e) 4 août 2019 (modifié) 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é 5 août 2019 par Aliboron Citer Lien à poster Partager sur d’autres sites
patyom 1 Posté(e) 5 août 2019 Auteur Signaler Share Posté(e) 5 août 2019 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 Citer Lien à poster Partager sur d’autres sites
Aliboron 1 Posté(e) 5 août 2019 Signaler Share Posté(e) 5 août 2019 (modifié) 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é 5 août 2019 par Aliboron Citer Lien à poster Partager sur d’autres sites
Aliboron 1 Posté(e) 5 août 2019 Signaler Share Posté(e) 5 août 2019 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) Citer Lien à poster Partager sur d’autres sites
Messages recommandés
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.