Lancer un modèle excel depuis access
thg
-
thg -
thg -
Bonjour,
Je lance une macro depuis access avec exécuter une application;
dans la ligne de commande je donne le chemin excel.exe puis espace avec le chemin du modèle modèle .xltm qui doit me permetttre de créer un nouveau classeur.
PROBLEME: j'obtiens l'ouverture du modèle lui-même mais non pas la création d'un nouveau document issu de ce modèle.
Ligne de commande utilisée:
"C:\Program Files\Microsoft Office\Office12\EXCEL.EXE" C:\Users\utilisateur\Desktop\AdlatusMandats\AttributionMandatAdlatus2.xltm
Merci pour votre aide.
th. godel
Je lance une macro depuis access avec exécuter une application;
dans la ligne de commande je donne le chemin excel.exe puis espace avec le chemin du modèle modèle .xltm qui doit me permetttre de créer un nouveau classeur.
PROBLEME: j'obtiens l'ouverture du modèle lui-même mais non pas la création d'un nouveau document issu de ce modèle.
Ligne de commande utilisée:
"C:\Program Files\Microsoft Office\Office12\EXCEL.EXE" C:\Users\utilisateur\Desktop\AdlatusMandats\AttributionMandatAdlatus2.xltm
Merci pour votre aide.
th. godel
22 réponses
- 1
- 2
Suivant
-
Bonjour,
Au passage, l'extension du fichier: AttributionMandatAdlatus2.xltm
devrait-être xlsm ou xlsx ...! -
Bonjour,
Pouvez-vous mettre une copie de la procédure utilisée? -
Bonjour,
Dans l'ordre d'ouverture du classeur il devrait être.... Workbooks.Add (adrexcel)
au lieu de... Workbooks.Open(adrexcel)
Salutations.
Le Pingou -
Bonjour,
J'utilise les macros (prédéfinies) d'access avec un choix d'actions possibles:
- je choisis "exécuter application" (qui n'est disponible que si on demande d'afficher toutes les actions)
- ensuite j'ai une ligne de commande que je remplis avec
"C:\Program Files\Microsoft Office\Office12\EXCEL.EXE" C:\Users\utilisateur\Desktop\AdlatusMandats\AttributionMandatAdlatus2.xltm
soit commande lancement excel, puis commande ouverture fichier.
Si j'utilise cette ouverture fichier dans le répertoire où il se trouve, j'obtiens un nouveau document avec nom du modèle initial +chiffre1 + xlsx losque je vais l'enregistrer (comme le ferait un modèle word avec document1, ou document2...)
avec le lancement via access j'obtiens l'ouverture du modèle, sous son nom (comme si j'ouvrais un modele.dot dans word).
comme ma commande dans access n'est pas issue de code VB, j'aimerais trouver la commande qui précise que je veux créer un nouveau doc et s'inclut dans la ligne donnée plus haut avec ouv. access + ouverture fichier
ou alors une ligne de code entière qui remplace complètement ma macro...
BUT: lancer un classeur excel qui utilise avec mise à jour les éléments que j'ai préparé dans access et figure dans une table créée et mise à jour à cet effet.
merci.
thg -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Merci pour l'information, donc pas de VBA.
Quelle version Access et Excel ?
Pouvez-vous faire une copie d'écran de la macro en mode création ?
Merci.
Salutations.
Le Pingou -
Bonjour,
Un exemple de procédure pour enregistrer des données Access vers Excel :Sub EngVersExcel_ouvre_classeur() Dim cdb As DAO.Database Dim rstcha As DAO.Recordset Dim strSQL As String Dim xlapp As Excel.Application Dim chemin As String chemin = "C:\Users\utilisateur\Desktop\AdlatusMandats " repclasseur = chemin & "\AttributionMandatAdlatus2.xltm " Set xlapp = CreateObject("Excel.Application") ' partie lire data access Set cdb = CurrentDb strSQL = "SELECT * FROM T_InitialisationAnnees" & _ " WHERE T_InitialisationAnnees.Identification = " & Chr(34) & Form_F_InitConge.Matricule & Chr(34) Set rstcha = cdb.OpenRecordset(strSQL) Dim c As Byte 'partie Excel With xlapp .Workbooks.Add repclasseur .Visible = True .Range("A2:C15").Delete 'Tant que non fin du recordset While Not rstcha.EOF 'Passer au suivant .Range("A" & 2 + c) = rstcha.Fields(0) .Range("B" & 2 + c) = rstcha.Fields(1) .Range("C" & 2 + c) = rstcha.Fields(2) rstcha.MoveNext c = c + 1 Wend End With Set cdb = Nothing Set rstcha = Nothing Set exapp = Nothing End Sub--
Salutations.
Le Pingou -
-
Bonjour,
Via https://www.cjoint.com/ ou http://www.cijoint.fr/ et poster le lien.
Salutations.
Le Pingou
-
-
OK.
Voici la copie écran
http://www.cijoint.fr/cjlink.php?file=cj201103/cijy0acUca.doc
Merci
Cordialement -
Bonjour,
Merci pour les informations.
Je vous propose de faire comme suit (je l'ai testé sans marche):
Placer la procédure dans un module et vous la déclencher depuis un bouton de commande (par événement sur clic) :Sub OuvrirClasseurSelonModele() Dim Xl As Excel.Application Dim Classeur As Excel.Workbook Dim Feuille As Excel.Worksheet 'Ouvre un nouveau classeur selon modèle Set Xl = New Excel.Application Xl.Visible = True chemin = "C:\Users\utilisateur\Desktop\AdlatusMandats " repclasseur = chemin & "\AttributionMandatAdlatus2.xltm " Set Classeur = Xl.Workbooks.Add(repclasseur) Classeur.Worksheets("Feuil3").Activate Set Feuille = Classeur.Worksheets("Feuil3") End Sub--
Salutations.
Le Pingou -
Merci pour les lignes de code.
Mais j'obtiens message d'erreur:
Erreur compilation
Type défini par utilisateur non défini.
copie écran
http://www.cijoint.fr/cjlink.php?file=cj201103/cij3ilhp0Q.jpg -
Merci. Franchi une étape mais problème avec la propriété Add
Désolé...
ecran1
http://www.cijoint.fr/cjlink.php?file=cj201103/cijCEheAQ2.jpg
ecran2
http://www.cijoint.fr/cjlink.php?file=cj201103/cijwNvmTDM.jpg
Salutations.
thg -
Bonjour,
Je suis vraiment désolé, j'ai laissé trainer un espace dans la ligne de codechemin = "C:\Users\utilisateur\Desktop\AdlatusMandats "
juste à la fin, supprimer l'espace entre [S] et ["]
Pendant qu'on y est faite de même à la ligne suivante entre [.xltm] et ["]
-
Bonjour,
Désolé pour le manque de suivi immédiat...
Merveilleux, ça fonctionne.
2 détails :
- petit bog qui réclame à propos d'un indice (?)
copie EcranA
http://www.cijoint.fr/cjlink.php?file=cj201103/cijOeaVLIU.jpg
copie Ecran B
http://www.cijoint.fr/cjlink.php?file=cj201103/cijzGS0H0J.jpg
- 2e point: je n'obtiens plus immédiatement la mise à jour des données liées ; je dois effectuer la commande excel "données", "actualiser tout".
Peut-on - encore... - l'intégrer en fin de code ???
Avec mes remerciements pour votre patience.
thg -
Trouvé l'erreur indice
Il s'agit du nom de la feuille3 qui a en fait été renommée "Saisie".
Et ça joue.
Merci beaucoup.
Toujours preneur d'une ligne pour:
données, actualiser tout
thg -
Bonjour,
Merci pour l'information.
Ma proposition ne comporte que l'ouverture du classeur selon le modèle.
Vous avez certainement une instruction qui exporte les données d'Access vers Excel qu'il faut aussi exécuter.
De l'aide par là : https://cafeine.developpez.com/access/tutoriel/excel/
Salutations.
Le Pingou -
Bonsoir,
En fait ma liaison est résolue.
J'ai une requête création de table dans Access et mon fichier modèle dans excel conserve la table importée dans une feuille du classeur .
Il suffit de faire la mise à jour du classeur excel pour retrouver les données de la table recréée dans access avec les dernières données
D'où la seule opération à faire manuellement qui subsiste après lancement du fchier excel:
clic sur données, clic sur actualiser tout.
Et ... l'espoir d'ajouter une ligne de code qui effectue cette opération après l'ouverture de mon fichier-modèle excel.
De toute manière merci beaucoup pour votre aide.
thg -
Bonsoir,
Si tu te mets en enregistrement de macro après avoir sélectionné une cellule du TCD tu obtiens :
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
eric -
Bonsoir,
Je n'ai pas un tableau croisé.
J'ai un tableau tout simple d'une dizaine de ligne et une vingtaine de colonnes (champs access).
Il est défini comme tableau dans une feuille excel et conserve la liaison avec la table access.
Mais il faut demander "actualiser tout" via "le menu données pour la mise à jour dans excel
Je cherche la ligne qui "refresh" le classeur excel (pas un tableau croisé dyn.)
thg -
Bonjour thg,
C'est vraiment étrange, à vous lire vous avez les données qui se trouvent dans une table et un classeur Excel qui à une liaison avec cette table. Donc vous devez uniquement actualiser le classeur pour avoir les données à jour. En principe pas besoin de procédure.
Au passage,salutations eriiic -
Bonjour,
Tout fonctionnait (fonctionne) sans souci.
Table access, fichier excel avec liaison, création d'un modèle sur ce fichier qui conserve ses liaisons et les met à jour à chaque ouverture.
Seul désir initial:
créer un événement (procédure ou macro) sur mise à jour dans access qui lance excel et effectue toutes les opérations sans intervenir.
De façon à ce que l'utilisateur crée d'office un nouveau fichier (donc ne détruise pas le modèle)
(Ca permet de créer un décompte/facturation excel assez complexe à partir des données clients et employés de la base access; et l'utilisateur travaille a priori dans access et non dans excel)
au départ de la discussion, j'imaginais trouver une ligne de commande particulière dans la macro access qui lance un modèle excel en tant que nouveau document (au lieu d'ouvrir le modèle);
au point actuel, j'ai une procédure qui le fait mais ne met pas à jour la liaison du classeur excel sans une intervention (minime) pour obtenir mon décompte/facturation complet immédiatement avec les données voulues.
thg
- 1
- 2
Suivant