Macro création pdf en fonction paramètre

Fermé
ghosts11111 Messages postés 5 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 10 avril 2020 - 9 avril 2020 à 15:22
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 10 avril 2020 à 10:04
Bonjour,

j'expose mon soucis,
J'ai 10 matricules de cadre avec un nombre de lignes aléatoires par cadre ( en fonction des
salariés dirigés par ce cadre)

je souhaite créer une capture pdf par cadres mais je ne vois pas comment faire.

en gros
colonne A1et A2 : matricule 1 avec colonne B1 nom salarié 1 B2 nom salarié 2
colone A3; matricule 2 avec colonne B3 nom salarié 3...

sachant que c'est aléatoire puisque certains cadres ont 1 salariés et d'autres 50.

Est ce que quelqu' un aurait une piste de macro avec une boucle que je pourrais adapter.

Merci de votre aide

Anthony









Configuration: Windows / Chrome 62.0.3202.94
A voir également:

3 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
9 avril 2020 à 16:19
Bonjour,

voici un exemple à adapter en vba:

Sub Save_pdf()
Dim nom As String
Dim chemin As String
Dim Plage As Range
Set Plage = Application.InputBox("Sélectionnez plage cellules:", Type:=8)
chemin = ActiveWorkbook.Path & "\" 'chemin du dossier destination à adapter
nom = InputBox("Saisissez le nom du PDF : ", "NOM PDF", "essai")
Plage.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        chemin & nom & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
Set Plage = Nothing
        MsgBox "Enregistrer" 'on peut supprimer
End Sub



0
ghosts11111 Messages postés 5 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 10 avril 2020
9 avril 2020 à 18:43
Merci pour ton retour rapide,

ton code demande la selection une par une des plages.

J'ai 280 managers donc je voulais un code avec une boucle qui a chaque changement de manager me crée un pdf.

est ce que l'on peut au niveau de set plage adapter cette boucle ?

J'ai la même macro qui me colle la selection dans le mail mais je voudrais la même pour générer les pdf.

Est ce que mettre le code de mon vba mail peut aider à voir ce que je cherche?


Cdt
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
9 avril 2020 à 18:51
Si tu as une macro qui colle la sélection on doit pouvoir l'adapter pour créer un PDF
Il faut un pdf par sélection?
Mets la donc je vois se que je peux faire
0
ghosts11111 Messages postés 5 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 10 avril 2020 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
10 avril 2020 à 09:25
Bonjour,

je t'ai pas répondu entièrement hier.

c'est mon soucis, il me faut un pdf par sélection (sélection faite à chaque changement de manager).

ma macro mail étant en format html je ne peux pas appliquer les mises en formes conditionnelles particulières.

donc je souhaite passer par la génération d'un pdf puis par une macro d'envoi mail avec pièce jointe que j'ai déjà.

mon seul soucis reste cette génération de pdf.

Merci de ton retour.
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > ghosts11111 Messages postés 5 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 10 avril 2020
10 avril 2020 à 10:04
Je ne pense pas que cela soit possible. Trop long 280 pdf à générer!

Il te faut trouver une autre solution.

Bon courage

@+ Le Pivert
0
ghosts11111 Messages postés 5 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 10 avril 2020
9 avril 2020 à 19:06
Les données sont prises dans un onglet excel classique,
et à chaque changement de matricule, un mail est généré. ( dans ce mail ressorte autant de ligne correspondant aux managers)


Sub CongésManagers()
'Macro permettant d'envoyer les mails avec les données dans cellules personnalisées et par matricule


Dim managers As String
Dim nblignes_managers As Long
Dim nb_lignes_fichier As Long
Dim compteur As Long

Application.ScreenUpdating = False
'initialisation de la variable compteur à zéro
compteur = 0
'lignes pour balayer l'ensemble des managers
nblignes_managers = Sheets("Managers").Range("b1").CurrentRegion.Rows.Count


Sheets("Matricules").Select
Range("a1").Select
While ActiveCell.Row <> nblignes_managers - 1
nom_Matricules = ActiveCell
Sheets("Managers").Select
Range("a2").Select
While ActiveCell.Offset(0, 0)
If ActiveCell = nom_Matricules Then
compteur = 1
tableur = tableur & créer_tableau_dynamique
End If
ActiveCell.Offset(1, 0).Select
Wend
If compteur = 0 Then
Sheets("Matricules").Select
ActiveCell.Offset(1, 0).Select
End If
If compteur >= 1 Then



Dim appOutlook As Object 'As Outlook.Application
Set appOutlook = CreateObject("Outlook.Application")
Dim Message As Object 'As Outlook.MailItem
Set Message = appOutlook.CreateItem(olMailItem)

'*****************************************************************************
'
corps_mail = "<HTML><BODY>....</BODY></HTML>"

'*********************************************************************************************


Call Message.Display 'Force l'ajout de la signature par défaut
With Message
'.Display

.To = nom_Matricules & "@C....fr"
.Subject =
.HTMLBody = corps_mail & "<br>" & .HTMLBody 'Insertion du texte plus haut
'.Attachments.Add ("C:\Users\") & nom_Matricules & (".pdf")

'.Send 'Envoi

End With
Set objMail = Nothing
tableur = ""
Sheets("Matricules").Select
ActiveCell.Offset(1, 0).Select
compteur = 0
End If
Wend

Sheets("Managers").Activate
Sheets("Managers").Range("a3").Select

Application.ScreenUpdating = True
End Sub

' fonction qui va rechercher les données à coller dans le corps de mail
Function créer_tableau_dynamique()

Dim nbl As Long
Dim nbc As Byte
Dim tableau As String
Dim nb_lignes As Long


nbl = 1
nbc = 1
For i = 1 To nbl
tableau = tableau & "<TR align = center>"
For j = 1 To nbc
tableau = tableau & "<TD>" & ActiveCell.Offset(0, 4) & .....</TD>"
Next j
tableau = tableau & "</TR>"
Next i

créer_tableau_dynamique = tableau

End Function
0