Imprimer plusieurs étiquettes identiques
Par Hervé Inisan le mardi 17 novembre 2009, 13:11 - Etats - Lien permanent
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).
- 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 impressionsurProcé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 :
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 :
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 :
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 :
(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.



Nouveau !
Commentaires
Bravo pour ton site qui est pour moi une référence et merci pour tous ces tuyaux!