Utiliser l'automatisation VBA<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Il s'agit d'une question complémentaire sur l'automatisation VBA :
Je dois remplir des tableaux de données jmp à partir d'Excel, en utilisant l'automatisation VBA.
Actuellement, je fais cela avec "SetDataVector" et je parcours chaque élément des tableaux sources. Toutes les tentatives d'utilisation de la forme vectorielle "SetDataVector" ont échoué.
Votre aide pour utiliser correctement la fonction "SetDataVector" serait grandement appréciée.
Merci,
Pierre
Re : Utilisation de l'automatisation VBAAu fur et à mesure que je parcourt le chemin de l'automatisation VBA, il est utile de savoir qu'il existe une conversion implicite des types de données dans les communications entre Excel et JMP. Merci!
Re : Utilisation de l'automatisation VBAMerci pour le suivi.
Il semble que 'SetDataVector' ait besoin que son tableau source soit de type double ou chaîne pour fonctionner. S'il s'agit d'une variante, la procédure s'exécutera mais aucun contenu n'est transféré dans la table. Le transfert séquentiel des éléments du tableau dans un deuxième tableau, tout en les convertissant en type double (CDbl), fonctionne bien.
Il convient également de noter que le tableau doit être base0 pour fonctionner comme prévu. S'il s'agit de base1, alors il décale les données et manque la première ligne/ajoute une dernière ligne invalide.
Merci
Re : Utilisation de l'automatisation VBALa plupart des variables utilisent le type de variante sous-jacent dans VB/VBA.Je pense que vous constaterez que les performances sont BEAUCOUP plus rapides si vous utilisez une boucle pour remplir un tableau du côté VB, puis transmettez ce tableau, au lieu de définir les valeurs des cellules individuellement.Le temps de communication inter-processus entre les appels d'automatisation entraînera un ralentissement considérable lors de l'utilisation du cas de cellule individuelle.
Dans l'exemple que j'ai référencé, il est vrai que je crée les tableaux sous forme de Double ou de String.Cependant, ils sont transmis sous forme de tableaux de variantes (la conversion est implicite).Si vous regardez la signature de la méthode SetDataVector dans le navigateur d'objets, vous verrez que JMP attend en fait un tableau de variantes.Donc, vous devriez au moins essayer de simplement transmettre votre tableau de variantes de la plage Excel à JMP.Si le type ne peut pas être implicitement converti, vous devrez alors copier les éléments individuellement.
Brian Corcoran
Développement JMP
Re : Utilisation de l'automatisation VBAOui, cela a aidé. Je peux maintenant utiliser avec succès la fonction « SetDataVector » (à condition que le tableau soit de type « Double » ou « String »). Malheureusement, pour transmettre des données entre un tableau et une plage Excel, le tableau doit être une « variante ». En tant que tel, « SetCellVal » et parcourir le tableau peuvent toujours être la meilleure option dans mon cas.
Merci.
Re : Utilisation de l'automatisation VBAL'exemple de programme d'automatisation de table de données fourni avec votre installation JMP contient un exemple de syntaxe.Si vous regardez le code derrière le bouton "Définir le vecteur", vous le verrez.C'est trop long pour vraiment poster le tout ici.L'exemple de programme se trouve dans le répertoire d'installation.Pour JMP 11, il s'agirait de C:\Program Files\SAS\JMP\11\Samples\Automation\Visual Basic Samples\Data Table .NET .
J'espère que cela aide.
Brian Corcoran
Développement JMP