Ouverture d'un états Access via une macro Excel [Résolu]

emarck 42 Messages postés dimanche 1 avril 2001Date d'inscription 15 octobre 2017 Dernière intervention - 15 oct. 2017 à 04:51 - Dernière réponse : cs_Le Pivert 4799 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 23 décembre 2017 Dernière intervention
- 16 oct. 2017 à 11:42
Bonjour,
Je code actuellement un formulaire en Excel
qui se connecte à une Bd Access 2016.

J'ai créé un état qui affiche le contenu d'une table que j'alimente
via mon formulaire Excel.

Lorsque j'ouvre Access, je double-clique sur l'état et Elle charge correctement les données.

J'aimerais maintenant ouvrir l'état à partir de mon code vba dans
Excel.

Pour ce faire j'utilise la commande

DoCmd.OpenReport "your report", acViewPreview

La commande semble passer à la compilation, mais rien ne s'affiche.

Pourtant MSAcess.exe est bien dans les processus en cours et le
fichier de Bd est bien ouvert.

Toute idée est bien venu !
Afficher la suite 

7 réponses

Répondre au sujet
cs_Le Pivert 4799 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 23 décembre 2017 Dernière intervention - 15 oct. 2017 à 08:41
Commenter la réponse de cs_Le Pivert
emarck 42 Messages postés dimanche 1 avril 2001Date d'inscription 15 octobre 2017 Dernière intervention - Modifié par emarck le 15/10/2017 à 18:30
0
Utile
Bonjour,
merci de prendre le temps de répondre à ma question.
Je suis allé sur le site internet que vous me suggérer.

J'ai tester les codes il semble fonctionner, mais je n'ai pas d'aperçu à l'écran. Access s'ouvre bien en tant que processus et se ferme à la suite de l'exécution de la macro, mais l'état ne s'affiche pas.

Voici mon code pour ma demande d'impression....

Private Sub impression()
Set cnx = CreateObject("ADODB.Connection")

Dim chemin As String
'chemin est un nom que vous devez associer à une cellule dans
'Excel


Application.Goto Reference:="chemin"
'permet de se positionner sur la cellule se nommant chemin

chemin = ActiveCell 'active la cellule en question

' Nous testons si le fichier est accessible

If Len(Dir(chemin)) > 0 Then
' Déclaration de la variable de connexion



'Définition du pilote de connexion
cnx.Provider = "Microsoft.ACE.OLEDB.12.0;"

'Définition de la chaîne de connexion
cnx.ConnectionString = chemin

'Ouverture de la base de données
cnx.Open

Else
MsgBox "La base n'a pas pu être trouvée" & vbCrLf & _
chemin & vbCrLf & _
"n'est pas un chemin valide.", vbCritical + vbOKOnly
End If

Dim nom_rapport As String
Dim no_requete As Integer

Dim access As access.Application
Set access = New access.Application



access.OpenCurrentDatabase filepath:=chemin


'nom de mon état
nom_rapport = "État_Frm_modif_status"

Lorsque la portion de code ci-dessous s'exécute je n'ai pas d'erreur, MSAccess.exe démarre, mais rien ne s'affiche à l'écran.

access.DoCmd.OpenReport nom_rapport, acViewPreview, , "[États]![État_Frm_modif_status]![No_requetes] =13", acWindowNormal


access.DoCmd.RunCommand acCmdReportView



Lorsque j'ai tester avec la commande ci-dessous, j'obitien une petite fenêtre qui ouvre et ferme aussitôt, mais l'état ne s'affiche pas plus.

'access.DoCmd.RunMacro "Macro1"


Une fois le commande ci-dessous exécuté, Access.exe n'est plus dans les processus tel que voulu.

'je quitte Access
access.Quit
Set access = Nothing
End Sub



Ce code est exécuter via un bouton dans un formulaire Excel 2016.

Lorsque j'appuie sur le bouton, l'enregistrement des champs remplis par l'utilisateur s'ajoute dans ma table et appel le module d'impression ci-dessus.

Le module se connecte à la bd et tente d'ouvrir mon État qui contient des champs lié à ma table rempli par mon bouton.

Lorsque j'exécute mon état dans l'interface d'acces, elle s'affiche en aperçu avant impression sans problème.

Lorsque j'exécute la macro dans l'interface d'accès elle s'affiche aussi sans difficulté.

C'est comme si Access attendait une autre commande pour afficher l'état....

Toute suggestions est bienvenue !



emarck
Commenter la réponse de emarck
cs_Le Pivert 4799 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 23 décembre 2017 Dernière intervention - 15 oct. 2017 à 19:01
0
Utile
3
J'ai une listview qui est alimentée par une bdd comme ceci, si cela peut t'aider:

'cochez la référence Microsoft ActiveX Data Objects 2.7 Library
Sub Lecture()
    Dim oCon As New ADODB.Connection
    Dim oRs As New ADODB.Recordset
 
    With oCon
        .ConnectionString = "DSN=MS Access Database;DBQ=" & ActiveWorkbook.Path & "\bdd.accdb" 'adapter chemin base access
        .Open
    End With
 
    oRs.Open "select * from Contact", oCon, adOpenDynamic, adLockBatchOptimistic 'adapter nom table
  
   oRs.Close
    oCon.Close
    Set oRs = Nothing
    Set oCon = Nothing
End Sub

Sub Ecriture()
    Dim oCon As New ADODB.Connection
    Dim oRs As New ADODB.Recordset

    With oCon
        .ConnectionString = "DSN=MS Access Database;DBQ=" & ActiveWorkbook.Path & "\bdd.accdb" 'adapter chemin base access
        .Open
    End With
 
    oRs.Open "select * from Contact", oCon, adOpenDynamic, adLockBatchOptimistic 'adapter nom table
    With oRs
   .AddNew
   .Fields("NOM") = TextBox1
   .Fields("Prénom") = TextBox2
   .Fields("Adresse") = TextBox3
   .Fields("Ville") = TextBox4
   .Fields("Code postal") = TextBox5
    End With
    oRs.UpdateBatch
 
    oRs.Close
    oCon.Close
    Set oRs = Nothing
    Set oCon = Nothing
End Sub

emarck 42 Messages postés dimanche 1 avril 2001Date d'inscription 15 octobre 2017 Dernière intervention - 15 oct. 2017 à 21:38
Pour cette portion du code tout fonctionne bien.

Je suis en mesure de lire et d'alimenter mes textbox et liste déroulante sans problème dans mon formulaire Excel.

Je suis aussi en mesure de lire l'info dans une table et de la transférer sur mon formulaire et d'enregistrer le résultat du formulaire dans une seconde table.

La seule portion qui ne semble pas fonctionne à 100% est l'affichage de mon État access à l'écran en aperçu avant impression.

Et j'avoue ne pas savoir pour quoi..

Cette ligne de code me bloque complètement.

access.DoCmd.OpenReport nom_rapport, acViewPreview, , "[États]![État_Frm_modif_status]![No_requetes] =13", acWindowNormal


Pourtant quand je fouille sur internet elle revient sur tout les sites comme étant la solution à l'affichage de mon État via Excel.

Je continu à tester...
emarck 42 Messages postés dimanche 1 avril 2001Date d'inscription 15 octobre 2017 Dernière intervention - 15 oct. 2017 à 23:10
J'ai enfin trouvé !

Par défaut lorsque nous appelons l'ouverture d'Access en mode automation, le critère visible est à false !

j'ai ajouter une ligne de plus après l'ouverture de la bd.


access.OpenCurrentDatabase filepath:=chemin
access.visible = true 'Permet de faire afficher l'état à l'écran

cs_Le Pivert 4799 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 23 décembre 2017 Dernière intervention > emarck 42 Messages postés dimanche 1 avril 2001Date d'inscription 15 octobre 2017 Dernière intervention - 16 oct. 2017 à 11:42
C'est élémentaire mon cher Watson!
Commenter la réponse de cs_Le Pivert
vb95 1392 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 23 décembre 2017 Dernière intervention - 15 oct. 2017 à 23:32
0
Utile
bonjour
si c'est solutionné pensez à mettre le post en Résolu
Merci
Commenter la réponse de vb95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.