Je voudrais savoir s'il est possible de réaliser un publipostage entre 2 fichiers Excel.
Je suis capable de le faire à partir d'un fichier Word qui va chercher les données dans un fichier Excel mais je ne suis pas sûr que cela fonctionne uniquement sur Excel.
Notre secrétaire à un fichier Excel prédéfini pour des ordres de mission et elle doit rentrer les données professeur par professeur, ce qui prend beaucoup de temps.
Nous avons une base de données que nous récoltons via Microsoft Forms et il faut ventiler les informations des lignes qui correspondent à chaque personne dans une feuille différente.
Ou doit-on passer par rechercheV en créant des liens entre classeurs?
Je sais aussi qu'il a possibilité de récupérer les données correspondant à chaque ligne en incrémentant le numéro de ligne dans la feuille cible, mais j'avoue ne plus me souvenir de la formule.
Je vous joins les 2 formulaires anonymisés pour vous donner une idée de ce que l'on veut.
Merci beaucoup pour votre aide.
Paul
Merci beaucoup pour votre aide et le temps passé. Cela marche.
Concernant Excel, je trouverais cela pratique que le programme offre la possibilité d'effectuer une édition de formulaires remplis en un seul document (comme cela est possible avec un document publipostage Word) pour éviter de devoir les imprimer un par un.
Lorsque la liste ne contient que 10-20 noms, ce n'est pas un trop gros inconvénient mais lorsque le nombre de documents à imprimer dépasse la centaine, cela demande plus de temps.
Cordialement
Paul
Merci beaucoup pour votre aide et le temps passé. Cela marche.
Concernant Excel, je trouverais cela pratique que le programme offre la possibilité d'effectuer une édition de formulaires remplis en un seul document (comme cela est possible avec un document publipostage Word) pour éviter de devoir les imprimer un par un.
Lorsque la liste ne contient que 10-20 noms, ce n'est pas un trop gros inconvénient mais lorsque le nombre de documents à imprimer dépasse la centaine, cela demande plus de temps.
Cordialement
Paul
Concernant Excel, je trouverais cela pratique que le programme offre la possibilité d'effectuer une édition de formulaires remplis en un seul document (comme cela est possible avec un document publipostage Word) pour éviter de devoir les imprimer un par un.
Mais il manque des infos il me semble pour avoir tous les champs remplis donc si tu nous donnais les infos manquantes (ou bien lesquelles prendre) excel pourrait le faire
voici un fichier exemple, j'ai inséré uniquement les colonnes faisant référence au nom et prénom et au grade, pour les autres colonnes il suffit d'adapter la formule avec la colonne source
=RECHERCHEV(J5;Table1;4;FAUX)
Ci-dessous le code
VB:
Sub PrintOrdreM()
'https://excel-downloads.com/threads/publipostage-avec-excel.20084597/
Dim first As Variant
Dim r As Range, c As Range, inputRange As Range
' Location of DataValidation cell
Set r = Worksheets("OM 2022 2023").Range("J5")
' Get DataValidation values
Set inputRange = Evaluate(r.Validation.Formula1)
Application.ScreenUpdating = False
' Loop through DataValidation list
For Each c In inputRange
If first = "" Then first = c.Value
If c <> "" Then
r.Value = c.Value
Worksheets("OM 2022 2023").PrintOut
End If
Next c
' Reset
r = first
Application.ScreenUpdating = True
End Sub
voici un fichier exemple, j'ai inséré uniquement les colonnes faisant référence au nom et prénom et au grade, pour les autres colonnes il suffit d'adapter la formule avec la colonne source
=RECHERCHEV(J5;Table1;4;FAUX)
Ci-dessous le code
VB:
Sub PrintOrdreM()
'https://excel-downloads.com/threads/publipostage-avec-excel.20084597/
Dim first As Variant
Dim r As Range, c As Range, inputRange As Range
' Location of DataValidation cell
Set r = Worksheets("OM 2022 2023").Range("J5")
' Get DataValidation values
Set inputRange = Evaluate(r.Validation.Formula1)
Application.ScreenUpdating = False
' Loop through DataValidation list
For Each c In inputRange
If first = "" Then first = c.Value
If c <> "" Then
r.Value = c.Value
Worksheets("OM 2022 2023").PrintOut
End If
Next c
' Reset
r = first
Application.ScreenUpdating = True
End Sub
Merci, je me disais bien que la solution existait en passant par VBA mais là je ne suis pas assez compétent .
Ce que je pense comprendre est que
"For Each c In inputRange
If first = "" Then first = c.Value
If c <> "" Then
r.Value = c.Value
Worksheets("OM 2022 2023").PrintOut
End If"
donne l'ordre vérifier si les cellules dans chaque colonne contiennent des données et si oui "imprimer"
Je suppose que "c" signifie Column?
Ensuite
" r = first "indique le traitement colonne 1 (Que signifie "r"?)
Faut-il ensuite ajouter le code "r=second" "r=third" ...pour poursuivre le processus? Où cela lance t-il la boucle automatiquement jusqu'au moment ou la colonne est vide?
Je me pose aussi la question de pourquoi traiter le fichier colonne par colonne et non ligne par ligne?
Le ligne à ligne permettrait de pouvoir imprimer par exemple de la ligne 5 à 8 en ignorant les autres, comme la fonction dans publipostage de Word "Modifier des documents individuels..." qui permet de produire des documents ciblés sur les lignes du tableau Excel lié, et ensuite de les imprimer en bloc.
En fait, comme pour Word, je pensais que cette fonction pouvait exister pour Excel.
Désolé pour toutes ces questions de novices.
Merci pour votre temps et votre coup de main.
Avec une macro (code VBA) excel sait faire cela aussi mais il faut que tu acceptes les macros quand tu ouvres le fichier excel .
Mais il manque des infos il me semble pour avoir tous les champs remplis donc si tu nous donnais les infos manquantes (ou bien lesquelles prendre) excel pourrait le faire
Bonjour à tous, merci à Paul pour ton retour. Ci-dessous le code mis à jour pour pouvoir choisir la ligne initiale et finale à imprimer. Une petite explication
la macro permet d'imprimer une feuille de calcul pour une sélection de valeurs dans une liste déroulante (validation de données - cellule J5 de la feuille OM 2022 2023).
1. Demande de l'utilisateur : La macro demande à l'utilisateur d'entrer le numéro du premier et du dernier enregistrement à imprimer à l'aide de deux boîtes de dialogue (InputBox).
2. Vérification des annulations : Si l'utilisateur appuie sur "Annuler" dans l'une des boîtes de dialogue, la macro s'arrête.
3. Boucle sur la sélection : La macro parcourt les valeurs de la liste déroulante correspondant aux numéros spécifiés par l'utilisateur (du premier au dernier enregistrement).
4. Impression des feuilles : Pour chaque valeur sélectionnée, la macro met à jour la cellule avec la valeur actuelle et imprime la feuille.
5. Réinitialisation : Après avoir terminé l'impression, la macro réinitialise la cellule avec la première valeur de la liste.
VB:
Sub PrintOrdreM()
'https://excel-downloads.com/threads/publipostage-avec-excel.20084597/
Dim first As Variant
Dim r As Range, c As Range, inputRange As Range
Dim i As Long, startRecord As Variant, endRecord As Variant
' Location of DataValidation cell
Set r = Worksheets("OM 2022 2023").Range("J5")
' Get DataValidation values
Set inputRange = Evaluate(r.Validation.Formula1)
Application.ScreenUpdating = False
startRecord = Application.InputBox("première ligne à imprimer:", Type:=1)
' Exit macro if Cancel is pressed
If startRecord = False Then Exit Sub
endRecord = Application.InputBox("dernière ligne à imprimer:", Type:=1)
' Exit macro if Cancel is pressed
If endRecord = False Then Exit Sub
' Loop through DataValidation list
For i = startRecord To endRecord
If first = "" Then first = inputRange(i).Value
If inputRange(i) <> "" Then
r.Value = inputRange(i).Value
Worksheets("OM 2022 2023").PrintOut
End If
Next i
' Reset
r.Value = first
Application.ScreenUpdating = True
End Sub