Ouverture d'un états Access via une macro Excel

Résolu
emarck Messages postés 23 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 15 octobre 2017 - 15 oct. 2017 à 04:51
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 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 !

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 oct. 2017 à 08:41
0
emarck Messages postés 23 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 15 octobre 2017
Modifié le 15 oct. 2017 à 18:30
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 oct. 2017 à 19:01
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

0
emarck Messages postés 23 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 15 octobre 2017
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...
0
emarck Messages postés 23 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 15 octobre 2017
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

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137 > emarck Messages postés 23 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 15 octobre 2017
16 oct. 2017 à 11:42
C'est élémentaire mon cher Watson!
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
15 oct. 2017 à 23:32
bonjour
si c'est solutionné pensez à mettre le post en Résolu
Merci
0
Rejoignez-nous