Avoir liste imprimantes sous Access97
Fermé
sahaso
Messages postés
33
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
7 août 2020
-
20 juil. 2004 à 11:19
SupraDolph - 31 janv. 2008 à 15:49
SupraDolph - 31 janv. 2008 à 15:49
A voir également:
- Avoir liste imprimantes sous Access97
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Supprimer liste déroulante excel ✓ - Forum Excel
5 réponses
Bonjours, j'ai exactement le meme probleme
j'essaye vainement depuis 3 jours
j'arrive a afficher l'imprimante par default, mais pas la liste complete
je suis tes reponses
a+
j'essaye vainement depuis 3 jours
j'arrive a afficher l'imprimante par default, mais pas la liste complete
je suis tes reponses
a+
pour ma part, j'ai crée une barre d'outil avec un bouton "Imprimante par défaut" et un autre "Choix Imprimante" (+ 1 pour "fermer l'état").
Je fais afficher cette barre d'outil à l'ouverture de l'état avec "DoCmd.ShowToolbar "Impression Etat", acToolbarYes" dans la sub Form_Open de l'état. Elle se refermera avec "DoCmd.ShowToolbar "Impression Etat", acToolbarNo" dans la sub Form_Close.
Les boutons de la barre d'outils sont liés à une macro "Impression Etats" avec une sous macro "Imprimer" et une macro "Choix", dont l'action est "exécuter code". Il faut désigner un nom de fonction dans le bas de la fenêtre de macro.
Pour l'imprimante par défaut, j'ai créé la fonction "ImpressionEtatDéfaut ()", et pour faire ouvrir la boîte de dialogue d'impression, la fonction "ImpressionEtatChoixPrt ()", dont voici les codes respectifs placé dans un module à part
Function ImpressionEtatDéfaut()
On Error GoTo ImpressionEtatDéfaut_Err
Dim Mabase As Database, EtatNom As String
Set Mabase = CodeDb
EtatNom = Screen.ActiveReport.Name
DoCmd.SelectObject acReport, EtatNom, False
DoCmd.PrintOut acPrintAll, , , acHigh, 1
ImpressionEtatDéfaut_Exit:
Exit Function
ImpressionEtatDéfaut_Err:
If Err.Number <> 2501 Then
MsgBox Error$
End If
Resume ImpressionEtatDéfaut_Exit:
End Function
'***
Function ImpressionEtatChoixPrt()
On Error GoTo ImpressionEtatChoixPrt_Err
Dim Mabase As Database, EtatNom As String
Set Mabase = CodeDb
EtatNom = Screen.ActiveReport.Name
DoCmd.SelectObject acReport, EtatNom, False
DoCmd.RunCommand acCmdPrint
ImpressionEtatChoixPrt_Exit:
Exit Function
ImpressionEtatChoixPrt_Err:
If Err.Number <> 2501 Then
MsgBox Error$
End If
Resume ImpressionEtatChoixPrt_Exit:
End Function
'***
Lorsque l'état s'affiche ( avec DoCmd.OpenReport "NomDoc", acViewPreview), la barre d'outil s'affiche et il est alors possible d'imprimer en cliquant sur le bouton correspondant.
Bon courage
Je fais afficher cette barre d'outil à l'ouverture de l'état avec "DoCmd.ShowToolbar "Impression Etat", acToolbarYes" dans la sub Form_Open de l'état. Elle se refermera avec "DoCmd.ShowToolbar "Impression Etat", acToolbarNo" dans la sub Form_Close.
Les boutons de la barre d'outils sont liés à une macro "Impression Etats" avec une sous macro "Imprimer" et une macro "Choix", dont l'action est "exécuter code". Il faut désigner un nom de fonction dans le bas de la fenêtre de macro.
Pour l'imprimante par défaut, j'ai créé la fonction "ImpressionEtatDéfaut ()", et pour faire ouvrir la boîte de dialogue d'impression, la fonction "ImpressionEtatChoixPrt ()", dont voici les codes respectifs placé dans un module à part
Function ImpressionEtatDéfaut()
On Error GoTo ImpressionEtatDéfaut_Err
Dim Mabase As Database, EtatNom As String
Set Mabase = CodeDb
EtatNom = Screen.ActiveReport.Name
DoCmd.SelectObject acReport, EtatNom, False
DoCmd.PrintOut acPrintAll, , , acHigh, 1
ImpressionEtatDéfaut_Exit:
Exit Function
ImpressionEtatDéfaut_Err:
If Err.Number <> 2501 Then
MsgBox Error$
End If
Resume ImpressionEtatDéfaut_Exit:
End Function
'***
Function ImpressionEtatChoixPrt()
On Error GoTo ImpressionEtatChoixPrt_Err
Dim Mabase As Database, EtatNom As String
Set Mabase = CodeDb
EtatNom = Screen.ActiveReport.Name
DoCmd.SelectObject acReport, EtatNom, False
DoCmd.RunCommand acCmdPrint
ImpressionEtatChoixPrt_Exit:
Exit Function
ImpressionEtatChoixPrt_Err:
If Err.Number <> 2501 Then
MsgBox Error$
End If
Resume ImpressionEtatChoixPrt_Exit:
End Function
'***
Lorsque l'état s'affiche ( avec DoCmd.OpenReport "NomDoc", acViewPreview), la barre d'outil s'affiche et il est alors possible d'imprimer en cliquant sur le bouton correspondant.
Bon courage
à la place de "sub Form_Open" et "sub Form_Close", il faut bien sûr comprendre "sub Report_Open" et sub Report_Close", puisqu'il s'agit d'un Etat. Sorry
Une autre solution bricolarde, pour peu que l'on ne change pas son parc d'imprimantes tous les deux jours, consiste à créer des états bidons, autant qu'il y a d'imprimantes installées sur le poste en les nommant, pourquoi pas, respectivement du même nom que les imprimantes.
On peut faire un état minimaliste, que l'on recopie autant de fois que nécessaire, puis renommer chaque état d'un nom d'imprimante.
La combine consiste ensuite à ouvrir chacun des états, tour à tour, en prenant soin de faire imprimer chaque état avec l'imprimante homonyme, puis à enregistrer l'état tel quel avant de le refermer;
procédure:
-ouvrir un état,
-faire "Fichier/Imprimer" et choisir dans la boîte de dialogue "impression" l'imprimante correspondante, puis cliquer Ok.
-faire "Fichier/Enregister"
-fermer l'état
Bien sûr, renouveler pour chaque état/chaque imprimante.
De ce fait, chaque état dispose d'une propriété PrtDevNames personnelle, contenant les informations relatives à l'imprimante choisie dans la boîte de dialogue Imprimer, conservées lors de son dernier enregistrement
Après quoi il n'y a plus qu'à faire l'échange de cette propriété PrtDevNames entre un de ces états bidons et l'etat beaucoup plus sérieux qu'on veut réellement imprimer.
Cette fonction fait très bien le travail:
Function ChangeImprimante(EtatàChanger As String, Etatd'Impression As String)
'***déclarer deux états
Dim rpt1 As Report, rpt2 As Report
'***ouverture des deux états en mode création
DoCmd.OpenReport EtatàChanger, acViewDesign
DoCmd.OpenReport Etatd'Impression, acViewDesign
'***indiquer à quoi correspondent les deux états déclarés
Set rpt1 = Reports(EtatàChanger)
Set rpt2 = Reports(Etatd'Impression)
'***les caractéristiques d'imprimante de l'état à changer prennent celles de l'état d'impression choisie
rpt1.PrtDevNames = rpt2.PrtDevNames
'***on referme l'etat modèle d'imprimante
DoCmd.Close acReport, Etatd'Impression, acSaveNo
'***on ouvre l'état qu'on veut imprimer en mode aperçu
DoCmd.OpenReport EtatàChanger, acViewPreview
End Function
On peut choisir, par exemple, l'imprimante dans un combobox (zone de liste modifiable) qui aurait comme RowsourceType: Liste Valeurs et rentrer dans cette liste les mêmes noms que ceux des Etats/Imprimantes modèles. Nommons cette liste "ChoixImprimante"
Ayant choisi une "imprimante" dans cette liste, on peut ensuite lancer l'impression de tout état à l'aide d'un bouton (ou autre manière) avec une Sub qui fait appel à la fonction ChangeImprimante, exemple:
Private Sub Imprimer_Click()
'***copie de PrtDevNames du modèle vers l'état à imprimer et affichage de ce dernier
Call ChangePrinter("EtatQueJeVeuxImprimer", Me.ChoixImprimante) '**Me suppose ici qu'on se trouve dans un formulaire...
'***affichage MsgBox de confirmation d'impression, si nécessaire
If MsgBox("Imprimer l'Etat ?", vbYesNo) = vbYes Then
DoCmd.PrintOut
End If
DoEvents
'***refermer l'etat après impression (ici acSaveNo pour ne pas garder le nouveau PrtDevNames, sinon acSaveYes pour conserver à l'etat imprimer sa dernière "imprimante"
DoCmd.Close acReport, "FilmsSurSallesFax", acSaveNo
End Sub
On peut faire un état minimaliste, que l'on recopie autant de fois que nécessaire, puis renommer chaque état d'un nom d'imprimante.
La combine consiste ensuite à ouvrir chacun des états, tour à tour, en prenant soin de faire imprimer chaque état avec l'imprimante homonyme, puis à enregistrer l'état tel quel avant de le refermer;
procédure:
-ouvrir un état,
-faire "Fichier/Imprimer" et choisir dans la boîte de dialogue "impression" l'imprimante correspondante, puis cliquer Ok.
-faire "Fichier/Enregister"
-fermer l'état
Bien sûr, renouveler pour chaque état/chaque imprimante.
De ce fait, chaque état dispose d'une propriété PrtDevNames personnelle, contenant les informations relatives à l'imprimante choisie dans la boîte de dialogue Imprimer, conservées lors de son dernier enregistrement
Après quoi il n'y a plus qu'à faire l'échange de cette propriété PrtDevNames entre un de ces états bidons et l'etat beaucoup plus sérieux qu'on veut réellement imprimer.
Cette fonction fait très bien le travail:
Function ChangeImprimante(EtatàChanger As String, Etatd'Impression As String)
'***déclarer deux états
Dim rpt1 As Report, rpt2 As Report
'***ouverture des deux états en mode création
DoCmd.OpenReport EtatàChanger, acViewDesign
DoCmd.OpenReport Etatd'Impression, acViewDesign
'***indiquer à quoi correspondent les deux états déclarés
Set rpt1 = Reports(EtatàChanger)
Set rpt2 = Reports(Etatd'Impression)
'***les caractéristiques d'imprimante de l'état à changer prennent celles de l'état d'impression choisie
rpt1.PrtDevNames = rpt2.PrtDevNames
'***on referme l'etat modèle d'imprimante
DoCmd.Close acReport, Etatd'Impression, acSaveNo
'***on ouvre l'état qu'on veut imprimer en mode aperçu
DoCmd.OpenReport EtatàChanger, acViewPreview
End Function
On peut choisir, par exemple, l'imprimante dans un combobox (zone de liste modifiable) qui aurait comme RowsourceType: Liste Valeurs et rentrer dans cette liste les mêmes noms que ceux des Etats/Imprimantes modèles. Nommons cette liste "ChoixImprimante"
Ayant choisi une "imprimante" dans cette liste, on peut ensuite lancer l'impression de tout état à l'aide d'un bouton (ou autre manière) avec une Sub qui fait appel à la fonction ChangeImprimante, exemple:
Private Sub Imprimer_Click()
'***copie de PrtDevNames du modèle vers l'état à imprimer et affichage de ce dernier
Call ChangePrinter("EtatQueJeVeuxImprimer", Me.ChoixImprimante) '**Me suppose ici qu'on se trouve dans un formulaire...
'***affichage MsgBox de confirmation d'impression, si nécessaire
If MsgBox("Imprimer l'Etat ?", vbYesNo) = vbYes Then
DoCmd.PrintOut
End If
DoEvents
'***refermer l'etat après impression (ici acSaveNo pour ne pas garder le nouveau PrtDevNames, sinon acSaveYes pour conserver à l'etat imprimer sa dernière "imprimante"
DoCmd.Close acReport, "FilmsSurSallesFax", acSaveNo
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question