Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Pbm de macro access

  • Initiateur de la discussion Adrien
  • Date de début
A

Adrien

Guest
Bonjour à tous,
J'ai un petit problème : lorsque je lance une macro access depuis excel, celle ci se lanse, m interroge sur la date à partir de laquelle je souhaite travailler, sur quel article (tout cela est normal), puis, rien, alor qu'il devrait apparaître un état à ce moment ....
Quelqu'un saurait il à quoi cela est dû ?

voici le code à partir duquel je lance la macro access :

Sub MacroAccess()
Dim acApp As New Access.Application

' Démarrer Access
Set acApp = New Access.Application

' Ouvrir la base de données concernée
acApp.OpenCurrentDatabase ("L:\Nouveau dossier\PERSO Adrien\MCG.mdb")

' Exécuter la macro
acApp.DoCmd.RunMacro "RECHERCHE ARTICLE"

' Quitter Access
acApp.Quit
Set acApp = Nothing
End Sub

Merci d'avance
Adrien
 
A

Adrien

Guest
Merci beaucoup, désormais, ca fonctionne !
Mais pour optimiser l'utilisation, il faudrait rajouter deux petites choses, ki ne doivent pas etre trop compliquées pour qualqu'un qui s'y connait :
lorsque la macro access se lance, elle demande la date. Or, cette date est toujours dans la cellule a1. Comment faire pour que celle ci se colle dans la boite de dialogue ki apparait, et valide ?
De meme comment faire la meme action, avec le code de l'article, sachant que celui ci est toujours dans la colonne b ?
Merci encore
Adrien
 
C

Chris

Guest
Bonjour
Côté Access est-ce une macro ou un module VB ?

Si c'est du VB c'est jouable. Si c'est le cas reposte.

On ne peut passer d'argument à une macro. Il faut passer par une table intermédiaire.
Une solution simple dans ce cas :
Créer un fichier Excel avec une colonne date et une colonne produit avec juste 2 valeurs.
La lier à Access.
Modifier la requête pour que les 2 paramètres soient pris dans cette table.
Ensuite il suffira, dans ton module VB Excel, d'écraser ce classeur Ecel par un nouveau Classeur contenant tes 2 valeurs copiées du classeur en cours.
Chris
 
C

Chris

Guest
Re
Excel : bien qu'on continue à parler de macro, c'est un module VBA et non une macro.
Access : il y a toujours les deux modes de programmation.

Donc soit tu passes au VBA dans ACCESS et dans ce cas tu peux interagir soit tu prends la solution que te t'ai indiquée.

Elle est simple à mettre en oeuvre tant du côté Excel qu'Access.

Chris
 
A

Adrien

Guest
Ben je vais éviter de passer en Vb coté access, j optes donc pour la méthode que tu m as indiquée, le seul truc, c que je ne sais pas comment fair epour lier ma feuille excel a ma base de données !
Mersi encore !
 
C

Chris

Guest
Re
Dans Access
Fichier données externe lier une table : dans la boite de dilaogue indiquer type xls et sélectionner la feuille contenant juste les 2 champs (titre et valeur).

Après ça s'utilise comme une table Access : il te suffit de l'ajouter dans ta requête puis de faire la relation avec les champs ou d'utiliser leur valeur en critère.

Chris
 
A

Adrien

Guest
si j ai bien compris, ca veut dire qu'il considère qu'il ne peut y avoir qu'une seule date dans la table excel, et un seul code article ?
Je fai scomment pour "d'écraser ce classeur Ecel par
un nouveau Classeur contenant les 2 valeurs copiées du classeur en cours." ?
Encore merci
 
C

Chris

Guest
Re
dans ton code VB excel tu copies (ou écris) les titres, les valeurs des cellules a1 et b? qui contiennent les valeurs dans un nouveau classeur que tu enregistres sous le nom connu par Excel (au prélable mets une ligne Kill fichier.xls pour supprimer l'ancien) puis fermes.
Thats'all

Chris
 
A

Adrien

Guest
le probleme, c est que quand jelance la macro access, il ne sait pas quelle date choisir dan sla colonne date....
et de meme pour l article ....
et je fais comment pour "copies (ou écris) les titres, les valeurs des cellules a1 et b? qui contiennent les valeurs dans un nouveau classeur que tu enregistres sous le nom connu par Excel (au prélable mets une ligne Kill fichier.xls pour supprimer l'ancien) puis fermes. " ????
Je sais que ca te sembles stupide, mais je n y connais absolument rien au vb, dc je rame totalement !
Merci encore !
 
C

Chris

Guest
Re
Déjà as tu modifié la requête lancée par la macro : tu dois faire une relation entre le champ date de ta table access et le champ date de ta table liée, idem pour le champ produit.

Pour le vb :
à ajouter avant d'invoquer Access

Range("A1:B1").Copy
Workbooks.Add Template:="Classeur"
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
ActiveCell.FormulaR1C1 = "date"
Range("B1").Select
ActiveCell.FormulaR1C1 = "produit"
Kill "param.xls"
ActiveWorkbook.SaveAs FileName:="param.xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close

sous réserve que ton produit soit en B1 sinon ajustes la ligne Range("A1:B1").Copy.
Ajustes éventuellement les nom de champ et bien sûr le nom du fichier xls qui sert à passer les paramètres.

CHris
 
A

Adrien

Guest
ce que je ne comprends pas, c'est que dans ma table liée, il peut y avoir
une infinité de date, dc si la macro access s exécute, le logiciel ne sait
pas à quelle date se référer. Enfin, c'est ce qu'il semble se passer !
quand j exécute la macro en mode "interne a access, elle se réfère à 1
valeur que j elui donne, pas à une valeur contenue dans une table ....
Je vai sjamais y arriver !
Adrien
 
C

Chris

Guest
Re
C'est ta requête : fais comme je te l'ai indiqué.

Ta table liée n'a qu'une date et un produit donc si les relations ou les critères sont bien mis ça marche.

Chris
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…