Publipostage d'une zone d'impression

Bonjour,

Je viens une nouvelle fois solliciter les connaissances de ce forum car je voudrais arriver à imprimer en publipostage une feuille de calcul.

J'ai créer un simplification de mon fichier.

je voudrais faire sortir une feuille (la zone encadrer) par personne (liste de la colonne A)

Merci d'avance

Bonjour Max0490,

Avec le fichier donné, utilises ce code

Sub ImprimeTout()
  Dim DLig As Long, Lig As Long
  ' Avec la feuille active
  With ActiveSheet
    ' Récupérer la dernière ligne des noms
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Vérifier qu'il s'agit du total
    If InStr(1, .Range("A" & DLig).Value, "Total", vbTextCompare) > 0 Then
      ' si oui, dernière ligne = -1
      DLig = DLig - 1
    End If
    ' Pour chaque ligne
    For Lig = 5 To DLig
      .Range("F22").Value = .Range("A" & Lig).Value
      Application.Calculate ' Mettre à jour les valeurs, au cas ou
      ' Lancer l'impression
      .PrintOut
    Next Lig
  End With
End Sub

A+

ok merci j'essai ça de suite

Merci beaucoup ça fonctionne hyper bien !

Maintenant j'espère que ça ramera pas trop avec ma lite de 500 personnes ^^

Merci encore.

Bonjour,

Suite à une modification de mon classeur je dois modifier la macro mais je ne sais pas par quoi remplacer cette partie de la macro :

With ActiveSheet

vu que maintenant les données ne se trouve plus dans la feuille active mais dans une feuille appelé : "TCD perso".

Merci d'avance pour votre réponse

Je pense avoir trouvé la solution avec ceci :

  ' Avec la feuille TCD perso
  With Worksheets("TCD perso")

Je pensais avoir bon avec ça mais non ^^

Max0490 a écrit :

Je pense avoir trouvé la solution avec ceci :

  ' Avec la feuille TCD perso
  With Worksheets("TCD perso")

Je mets mon fichier en pièces jointe, si qqun peut me faire une macro, le but étant d'avoir une impression type publipostage par conducteur de la zone encadrée svp

Pour l'instant j'ai ça mais elle est à corriger

Sub ImprimeTout()
  Dim DLig As Long, Lig As Long
  ' Avec la feuille TCD perso
  With Worksheets("TCD perso")
    ' Récupérer la dernière ligne des noms
    DLig = .Range("B" & Rows.Count).End(xlUp).Row
    ' Vérifier qu'il s'agit du total
    If InStr(1, .Range("B" & DLig).Value, "Total", vbTextCompare) > 0 Then
      ' si oui, dernière ligne = -1
      DLig = DLig - 1
    End If
    ' Pour chaque ligne
    For Lig = 5 To DLig
      .Range("B22").Value = .Range("B" & Lig).Value
      Application.Calculate 
      ' Mettre à jour les valeurs, au cas ou
      ' Lancer l'impression
      .PrintOut
    Next Lig
  End With
End Sub

Merci

12fichier-forum.xlsm (63.08 Ko)

Bonjour

Voilà ce que c'est que de ne pas mettre les besoins à plat au départ

Essaye ce code

Sub ImprimeTout()
  Dim DLig As Long, Lig As Long
  Dim ShtS As Worksheet
  ' Définir la feuille source = TCD perso
  Set ShtS = Worksheets("TCD perso")
  ' Récupérer la dernière ligne des noms
  DLig = ShtS.Range("B" & Rows.Count).End(xlUp).Row
  ' Vérifier qu'il s'agit du total
  If InStr(1, ShtS.Range("B" & DLig).Value, "Total", vbTextCompare) > 0 Then
    ' si oui, dernière ligne = -1
    DLig = DLig - 1
  End If
  ' Avec la feuille à imprimer
  With Sheets("Feuil1")
    ' Pour chaque ligne de la feuille source à partir de la 7ème
    For Lig = 7 To DLig
      ' Inscrire dans la cellule B22, le nom de la ligne de la feuille source
      .Range("B22").Value = ShtS.Range("B" & Lig).Value
      ' Mettre à jour les valeurs, au cas ou
      Application.Calculate
      ' Lancer l'impression
      .PrintOut
    Next Lig
  End With
End Sub

Merci.

Le soucis c'est que dès le départ la première macro était efficace mais lorsque j'ai montré les différentes manipulations qu'il faillait faire avant de lancer le publipostage (sur les calculs des autres onglets) on m'a demandé de plus automatiser le fichier et donc j'ai du le modifier ce qui rendait inefficace la 1ere macro. :/

Mais en tout cas merci beaucoup pour toute ton aide

La macro ne fonctionne pas elle à sortie 3 feuilles correctes mais à continuer d'en sortir 8 autres fausses

Bonjour

Quelqu'un pour me dépanner ?

Merci d'avance

Bonjour

As-tu au moins essayé de comprendre le code (qui est commenté) et de l'adapter ?

Bonjour

Oui j'ai lu la macro j'en comprend une partie mais certaines lignes m'échappent. Je l'ai aussi comparer à l'ancienne pour mieux comprendre le tout.

Sur ce que je comprends de la macro je n'ai rien trouvé à changer...

J'ai trouvé ce qui n'allait pas en fin de compte.

La macro calculée tout le classeur j'ai changé ça pour qu'elle ne calcule plus que la feuille en cours.

Puis j'avais quelques erreurs de formule suite à la modification de mon fichier.

Sub ImprimeTout()
  Dim DLig As Long, Lig As Long
  Dim ShtS As Worksheet
  ' Définir la feuille source = TCD perso
  Set ShtS = Worksheets("TCD perso")
  ' Récupérer la dernière ligne des noms
  DLig = ShtS.Range("B" & Rows.Count).End(xlUp).Row
  ' Vérifier qu'il s'agit du total
  If InStr(1, ShtS.Range("B" & DLig).Value, "Total", vbTextCompare) > 0 Then
    ' si oui, dernière ligne = -1
    DLig = DLig - 1
  End If
  ' Avec la feuille à imprimer
  With Sheets("Feuil1")
    ' Pour chaque ligne de la feuille source à partir de la 7ème
    For Lig = 7 To DLig
      ' Inscrire dans la cellule B22, le nom de la ligne de la feuille source
      .Range("B22").Value = ShtS.Range("B" & Lig).Value
      ' Mettre à jour les valeurs, au cas ou
     Sheets("Feuil1").Calculate
      ' Lancer l'impression
    .PrintOut
    Next Lig
  End With
End Sub

Merci beaucoup pour toute ton aide BrunoM45 !

Rechercher des sujets similaires à "publipostage zone impression"