Imprimer plusieurs étiquettes identiques
A partir d’un état qui imprime une planche d’étiquettes, comment faire en sorte que chaque étiquette soit imprimée plusieurs fois ?
Mise en place
Pour plus de souplesse, on va passer par un peu de code Visual Basic. Au moins 2 avantages avec cette technique :
- le nombre d’étiquettes sera très facile à paramétrer ;
- on ne touche pas aux enregistrements de la table (même si vous avez besoin de 5 étiquettes par client, on ne stockera qu’un seul client dans la table).
Je suppose que vous avez déjà construit l’état qui maquette la planche d’étiquettes standard (1 étiquette par client, dans notre exemple). On va aménager cet état pour obtenir des étiquettes multiples :
- Ouvrez votre état en mode Création.
- Faites apparaître les propriétés de la zone Détail, onglet Evénement.
- Réglez l’événement
Sur impression
surProcédure événementielle
, à l’aide de la liste déroulante. - Cliquez sur les points de suspension à droite de cette liste. Vous accédez au code Visual Basic de l’événement.
- Aménagez le code Visual Basic pour obtenir :
1 2 3 4 5 6 7 8 |
Private Sub Détail_Print(Cancel As Integer, PrintCount As Integer) If intCompteur >= Nz(Me.OpenArgs, 1) - 1 Then intCompteur = 0 Else intCompteur = intCompteur + 1 Me.NextRecord = False End If End Sub |
Au-dessus de ce bloc de code (avant le bloc Sub
), déclarez la variable globale intCompteur
de cette manière :
1 |
Dim intCompteur As Integer |
Impression des étiquettes
Le nombre d’étiquettes est paramétré à l’aide des arguments de l’état (OpenArgs
), ce qui permet de conserver un fonctionnement standard pour l’état. Si vous double-cliquez sur l’état pour l’ouvrir manuellement, 1 seule étiquette sera imprimée, comme d’habitude. Vous obtenez le même résultat si vous imprimez les étiquettes en VBA par la commande :
1 |
DoCmd.OpenReport "rpt Etiquettes Clients", acViewPreview |
Maintenant, si vous souhaitez 3 étiquettes pour chaque client, il suffit de donner une valeur à OpenArgs
(6ème paramètre de OpenReport
), de cette manière :
1 |
Docmd.OpenReport "rpt Etiquettes Clients", acViewPreview, , , ,3 |
(vous devez avoir 4 virgules avant le nombre 3).
OpenArgs
pour les états Access remonte à Access 2002. Le code ne marchera donc pas directement sur des versions plus anciennes.
Bravo pour ton site qui est pour moi une référence et merci pour tous ces tuyaux!