Utilisation ou restitution VBA_Excel dans VBS

Résolu
Phoenellion Messages postés 131 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,

bonjour, j'ai pour projet de regrouper plusieurs macro développé sous VBA Excel, dans une seule micro application développée sous VB (avec Visual Basic 2010 Express) afin de ne pas devoir passer par Excel pour obtenir les résultats (les macro effectuent des traitements de compilation / recoupement / statistiques et les restituent sous tableau excel tirés à 4 épingles)

je sais que les micro applications développées sous VB peuvent faire appel aux fonctionnalités des logiciels de la suite office...

et j'ai beau chercher sur le net... personne ne semble s'être posé la question comme je me la pose, à savoir :

Comment faire appelle à une instruction VBA (Excel ou autre) depuis un code VB ?
de manière générale

2 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Re,
    Tu dois spécifier l'objet auquel tu adresse la requête.
    Déclarer un objet Excel ex -> MyExcell
    Un Object Classeur ex -> MyBook
    Un obect Feuille ex -> MySheet
    et ensuite toutes les commandes doivent s'y rapporter.
    With MySheet
    Do While .Cells(1, y) <> ""
    .........
    A+
    1
    1. Phoenellion Messages postés 131 Statut Membre 33
       
      Bonjour,
      désolé pour un tel retard, j'ai du mettre le programme en question de côté pour un temps.

      J'ai testé un peu ce que tu disais Lermite, en effet, c'était bien quelque chose comme ça, par contre, les objets Classeur et Feuille sont erronés, il donnent une erreur, mais sur sur ta théorie, j'ai utilisé un with sur l'application excel elle même et c'est passé.

      Merci pour ton aide en tout cas.
      @ bientôt
      Phoe
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Ce lien vous emmene sur le site de developpez.com avec une idee de ce qui possible de faire en partant de VB.NET vers un classeur excel

    ftp://ftp2.developpez.be/developps/dotnet/office/OfficeVb.pdf

    De toute facon vous devrez adapter un minimum les instructions du VBA

    Bonne suite
    0
    1. Phoenellion Messages postés 131 Statut Membre 33
       
      Bonjour,

      merci pour le lien, je vais éplucher un peu ça pour commencer, je vous dirai si j'ai trouvé mon bonheur.

      Pour ce que j'ai lu jusque là, on est obligé de créer une instance de l'appli dont on veut utiliser les fonctions. Donc si je développe en codant des fonctions qui n'existe qu'à partir de Excel 2007, le programme ne sera utilisable que si le PC utilisateur dispose d'Excel 2007 ou plus.
      Exact ?
      Ça empêchera tout utilisateur de mon programme de l'utiliser sur un PC ne disposant que de Excel 2003 voir pas du tout.
      0
    2. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Bonjour,
      Suffit de n'employer des fonctions disponibles sous Excel 2003 et ça tournera sur 97-2003 aussi
      A+
      0
    3. Phoenellion Messages postés 131 Statut Membre 33
       
      Bonjour,

      enfin de retour, désolé pour le délai, j'ai dû laisser l'appli VB.NET de côté.

      j'ai fait quelques essais, j'arrive ouvrir un classeur, en créer un, l'enregistrer, par contre, travailler dedant s'avère une autre paire de manches.

      j'ai des erreur avec les instructions comme
      cells(x,y).end(xlToLeft).row
      Do While Cells(1, y) <> "",

      et à peu près tout ce que j'ai l'habitude d'écrire en VBA.

      je sens que ça va pas être de la tarte de retranscrire mes macro en DOTNET !!
      0
    4. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      et à peu près tout ce que j'ai l'habitude d'écrire en VBA.
      cells(x,y).end(xlToLeft).row
      Si c'est comme ça que tu pratique !! Row c'est pour les lignes et xlToLeft c'est pour les colonnes, et tu t'étonne que ça va pas ??
      Et il est possible que les constantes ne fonctionnent pas (je suis pas certain)
      En plus, dans ton titre tu parle de VBS et maintenant de VB.Net ?
      Si tu avais expliquer ça depuis le début ça aurait été plus simple.
      A+
      0