Publipostage uniquement sur Excel en VBA

Bonjour à tous.

Je reviens encore une fois auprès de vous tous pour m'aider sur un projet.

L'idée c'est d'imprimer des étiquettes à coller sur des petites pièces, cette étiquette contient des références/informations qui changent à chaque impression de celle-ci. En gros, je cherche à faire un publipostage mais sans passer par Word, uniquement en VBA. (Je ne développerais pas ici les raisons pour lesquels je ne veux pas passer par le publipostage de Word même si c'est clairement plus simple)

Ma technique c'est donc :

  • dans une feuille, je regroupe toutes les infos nécessaires pour mes étiquettes (donc ma base de donnée)
  • et dans une autre feuille, je fait la mise en forme de l'étiquette.

Avec la fonction =RECHERCHEV, je vais chercher chaque infos qui correspond à un "Numéro Final Livré".

Avec une UserForm, je pensais pouvoir comparer mon "Num Final Livré" à un numéro de page,

et donc sélectionner tel page et imprimer les étiquettes des numéro de tant à tant....

ex : imprime moi l'étiquette n°11100999 à l'étiquette n°11100999 (donc une seule)

ou encore imprime moi l'étiquette n°11563280 à l'étiquette n°11100999 (donc plusieurs)

Sauf que dans l'esprit c'est pas mal, cette technique fonctionne bien si mes "Num Final Livré" sont de petits chiffres dans l'ordre qui se suivent,

mais si ce sont des suites de codes barres dans le désordre et qui ne se suivent pas.... C'est là que ça se complique.

Je vous laisse lire mon code pour mieux comprendre:

81zzzz.xlsm (36.93 Ko)

Je rappelle que mon fichier est une simplification du fichier original

Avez-vous une idée (mise à part me dire de retourner sur Word... ) Une idée qui m'éviterais de rajouter une colonne simplement pour inventer un numéro de page... en soit je pourrais le faire, mais peut-on l'éviter?

Je suis sûr que vous avez plein d'idées.

J’espère que mes explications et le fichier joint suffiront à me faire comprendre, dans le cas contraire n'hésitez surtout pas à me demander de préciser mes propos.

Merci d'avance

Bonjour Famarech,

Je n'ai pas tout compris, mais voici un essai

@+

222famarech-zzzz.xlsm (35.31 Ko)

Bonjour famarech, BrunoM45,

Si j'ai bien compris(?), sans avoir fait l'essai, essayer d'utiliser les listindex des combobox plutôt que leurs valeurs affichées ?

A+

P*t*n, je savais qu'il fallait demander à internet !!!

jamais déçue par ce site!

Je n'ai pas tout compris, mais voici un essai

Tu as carrément tout compris !

Et en plus tu as mis des explications sur chaque lignes ce qui me rends autonomes!

Un grand BRAVO

Si j'ai bien compris(?), sans avoir fait l'essai, essayer d'utiliser les listindex des combobox plutôt que leurs valeurs affichées ?

Même si on a déjà répondu à ma question,

je suis curieux de voir ce dont tu parles, à moins que ce ne soit la même chose

si tu as un peu de temps, peux tu me montrer?

l'essai avec les listindex, testé sur ton classeur du premier post:

Private Sub CommandButton2_Click()
'bouton imprimer
  If ComboBox2.Value < ComboBox1.Value Then
    MsgBox " Le N° de la fiche 2 doit être supérieur à celui de la fiche 1"
    Exit Sub
  End If
  With ThisWorkbook.Sheets("Feuille a imprimer")
    ' Pour chaque N° de fiche
    For lig = ComboBox1.ListIndex To ComboBox2.ListIndex + 1
        ' Inscrire la valeur du numéro
        .Range("H2").Value = ComboBox1.List(lig)
        ' Imprimer la page
        .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
        '.PrintPreview
    Next lig
  End With
End Sub

l'inconvénient c'est qu'il faut un N° en liste 2 > N° liste 1. La boucle for index1 to Index2 ne fonctionne pas si index2 < index1 ( il faudrait alors tester et proposer une autre boucle pour ce cas)

A+

l'essai avec les listindex, testé sur ton classeur du premier post:

Cela fonctionne aussi sans problème, c'est bien aussi de comparer les solutions.

Merci

Rechercher des sujets similaires à "publipostage uniquement vba"