Aller au contenu
  • 0
samuel haggai

commander une macro excel avec filemaker

Question

Bonjour,

Nous avons besoin defois de manipuler les fichier excel

Jai cree une macro qui prend en charge les fichier html , csv, xls, xlsx,

Et qui deffusionneautomatiquement le contenu d un dossier même si il y as 200 fichiers dans ce dossier

Il vas defusionner les fusion de celulesSupprimer les lignes et clonnes vides

Et convertir les html, csv, xls, xlsx en xlsx ce qui plus facile a l importation dan fiemaker

Ma question

Il et facile d`ouvrir un fichier filemaker dans un conteneur il suffit de double cliquez sur le fichier excel souvre avec le bon fichier

Mais apres si jai un bouton en c2 qui lance ma macro comment faire pour lancer depuis filemaker Pour lancer la macro qui se trouve dans excel, peut ton commander, soit la macro ,soit lancer le bouton en c2 qui lance cette macro apres avoir ouvert excel, ou peut etre meme excel toujour fermer.

Utopique ou pas

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

17 réponses à cette question

Messages recommandés

  • 0

salut
c'est possible via un .vbs que tu mets dans une rubrique et que tu exporte avec exporter contenu(ouvrir automatiquement)

'Ouverture du fichier excelSet objExcel = CreateObject("Excel.Application" )Set objWorkbook = objExcel.Workbooks.Open("chemin de mon fichier") objExcel.Visible = True 'lancement de la macro dans le fichier excel ouvertobjExcel.run "nom_macro"


 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Ces simple, mais ne pourrais tu pas me faire un exemple svp

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

bonsoir Samuel
Un essai un peu plus élaboré avec vbscript qui va vérifier si excel et ton fichier sont ouverts, sélectionner le fichier ou l'ouvrir le cas échéant, puis exécuter une macro.

 

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Macro_excel (2).zip

Modifié par ericire
changement fichier

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Et bien ton exemple fonctionne très bien,

je voudrais comprendre comment tu as fait pas évident

Mais je te remercie

shmuel

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

ben j'ai mis des commentaires pour le rendre plus compréhensible
en gros le getobject vérifie si excel est ouvert, avec une gestion d'erreur,

si oui on vérifie si ton fichier est ouvert dans une boucle sur les workbooks (les fichiers excels ouverts), et si pas d'objet excel (else), on ouvre ton fichier.
Il y a au moins un cas où ça ne marche pas, c'est quand une cellule est ouverte en formule, la fenêtre excel ne prends pas le focus et donc il faut sortir de la cellule, pour voir la macro qui est en mémoire s'exécuter.
bonne soirée Samuel

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Mercie pour ta réponse je vais regarder un peut plus en détail, et je vais faire des test

Question le nom de la macro et important ?

Merci

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

biensur que le nom est important : il doit se référer au nom de la macro que tu veux exécuter

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Apres vérification je vient d'avoir la confirmation

Merci

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir

... et pour bien faire, il est de bon ton de précéder le nom de la macro par le nom du module !

Une macro peut avoir le même nom dans n modules, mais avec des traitements/actions différentes ( un module reservé à l'html, l'autre au XLS, etc... ou à  des tests)

objXLApp.run "nomModule.nomMacro"

Attention à GetObject(, "Excel.Application") qui retourne la première instance de l'application, si le classeur est ouvert dans une nième instance comme le permet Windows  et que celle-ci est au premier plan  ...

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir,
Oui effectivement s'il y a plusieurs instances d'Excel et que c'est une autre instance qui est active, avec GetObject(, "Excel.Application") cela ne fonctionnera pas.
je lui ait subsitué GetObject(CheminFichier).Application qui ciblera la bonne instance

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Erci

Je suis satisfait de mes test grâce à toi.

Que faut t'il faire si je veux lancer avec Filemaker 2 bouton distincte

Dans ton exemple tu parle de lancer la macro avec son nom (le nom de la macro), dans mon cas j'ai plusieurs boutons donc si je suis ton exemple et que crée un deuxième bouton et que je lance la macro (2 em nom de macro) cela devrais fonctionner.

Mais je ne ses pas trop à quelle endroit dans ton exemple entrée ce deuxième bouton

 

Merci

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

hello
là c'est juste un exemple, le vbs étant paramétré dans le calcul de la rubrique.
dans ton cas tu peux conserver un vbs original dans une rubrique avec les paramètres inscrits en dur, comme "#CHEMIN_DU_FICHIER#", "#NOM_MACRO#"
Ainsi dans ton script, d'abord tu cree des variables avec tes parametres, parametres que tu peux passer au script et que tu extrait avec obtenir(parametre) et  tu fais un definir rubrique d'une autre rubrique que tu va exporter pour lancer le vbs. Dans ce définir rubrique tu fais "substitute ( VBS_Original ; [ " "#CHEMIN_DU_FICHIER#"  ; $chemin ] ; [ "#NOM_MACRO#"  ; $nom_macro ] ; etc ).
Et et reste à créer ton bouton pointant sur le script avec les bons parametres.
bonne soirée Samuel

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Le 02/06/2016 à 18:38, ericire a dit :

hello

là c'est juste un exemple, le vbs étant paramétré dans le calcul de la rubrique.

dans ton cas tu peux conserver un vbs original dans une rubrique avec les paramètres inscrits en dur, comme "#CHEMIN_DU_FICHIER#", "#NOM_MACRO#"

Ainsi dans ton script, d'abord tu cree des variables avec tes parametres, parametres que tu peux passer au script et que tu extrait avec obtenir(parametre) et  tu fais un definir rubrique d'une autre rubrique que tu va exporter pour lancer le vbs. Dans ce définir rubrique tu fais "substitute ( VBS_Original ; [ " "#CHEMIN_DU_FICHIER#"  ; $chemin ] ; [ "#NOM_MACRO#"  ; $nom_macro ] ; etc ).

Et et reste à créer ton bouton pointant sur le script avec les bons parametres.

bonne soirée Samuel

Bonjour Eric,

Est-ce que ta base pour lancer une macro fonctionne sur Mac ?

Bonnes fêtes

Pascal

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

salut Pascal
Ce fichier exécute un VBS (visual basic script) qui est propre à Windows.
Pour mac orientes-toi vers une apple script

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

d'accord !!! je comprends mieux.

Je vais essayer de scripter excel... 

merci Eric.

et bonne année.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×