XL 2013 Automatisme pour remplir des TABs

Sigmund173

XLDnaute Occasionnel
Bonjour à tous,

j'aurais besoin d'un petit coup de pouce sur mon fichier excel.
Ce que je voudrais faire c'est la démarche suivante:
Je dois créer une liste d'exclusion afin de ne pas couper les accès à certains utilisateurs.
Pour ce faire j'ai une liste de dossier partagé (G Drive) et une liste des personnes qui seront transféré dans une autre institution (Transfer list).

Maintenant à partir de ces deux listes je souhaite que les responsables des dossiers (Folder Owner) soit identifié et mis automatiquement dans le TAB Folder Owner.
Si le dossier n'est pas listé, je souhaite qu'il aille dans la bonne section, Ressource Humain dans le TAB HR, Finance dans Finance et tout le reste dans Other.
J'ai mis dans le fichier le résultat souhaité, comment faire pour que ce soit automatique.
D'avance je vous remercie de votre aide
Cordialement

Olivier.
 

Pièces jointes

  • Book1.xlsx
    14 KB · Affichages: 63

Sigmund173

XLDnaute Occasionnel
Bon je vais pas vous embêter avec un détail technique aussi petit pour vous, je vais chercher et trouver une solution.
J'aurais plus besoin de vos connaissances sur la création du pdf.
Est-il possible de rajouter dans le pdf automatiquement lors de sa création un titre avec le nom du projet qui se trouve dans summary et le mettre dans le pdf et de récupérer le nom du fichier que vous avez mis dans le code, ensuite si possible de mettre également tout en haut à droite le site code qui est aussi dans summary
Il serait bien aussi d'avoir la date et les numéros des pages, comme vous pouvez le constater si on génère le pdf dans HR il y a plusieurs lignes et on en aura beaucoup.

Enfin et ça c'est encore plus technique, est ce qu'on peut rajouter dans le bas de la liste bien entendu on ne sait pas combien de ligne il y aura (exemple dans TAB HR) une box qu'ils doivent remplir et deux box signature ?
Les box c'est l'idée de comment on voudrait que ça se présente, bien entendu si vous avez une idée pour le faire autrement dans ce genre là je suis preneur.
Ce qui compte c'est que dans le pdf généré on puisse trouver, un titre, une date, le site code, numéro de page, business justification et un emplacement signature
 

Pièces jointes

  • GigognesSigmund173.xlsm
    477.5 KB · Affichages: 7

Sigmund173

XLDnaute Occasionnel
Voilà l'idée si c'est possible bien sur ça serait génial ^^
Peut-être un rêve et qu'on atteint les limites d'excel
Comme dit les fameuses box peut-être faites dans le pdf directement si c'est possible, ils peuvent déjà écrire le business justification dans le pdf
 

Pièces jointes

  • Exclusion list Other.pdf
    223.2 KB · Affichages: 8
Dernière édition:

Dranreb

XLDnaute Barbatruc
Les macros n'ont jamais touché aux titres jusqu'à présent, et dans la feuille "Finance Exclusion" celui en A1 est toujours à ramasser à la petite cuillère. Si j'y copie et colle celui de la feuille "Finance", il demeure ensuite. Je ne sais pas ce que vous fabriquez pour que ça ne marche pas.
Pour des titres et les numéros de pages vous pouvez régler tout ça sur la mise en page de la feuille comme pour n'importe quelle autre feuille.
Pour des encarts à mettre à la fin, il faudrait les prévoir comme modèle dans une autre feuille, leur mettre un nom dans le classeur, et les copier coller à la suite du Rng.Copy Destination:=WshCbl.[A2]
Ou alors des zones de texte pour être indépendant des largeurs de colonne ?
Rappel: si c'était plus facile de passer par une seule feuille "Support PDF" (donc une seule mise en page à mettre au point) plutôt que par 3 feuilles "xxx Exclusion" ce serait possible.
 

Sigmund173

XLDnaute Occasionnel
Oui je ne sais pourquoi ça ne voulait pas avant, mais maintenant ça fonctionne, le tite est de retour ... bref

Effectivement, je suis tellement parti sur le vba que j'en oublie les choses simple pour la mise en page ... pfff, désolé :-(

Je dirais qu'une seule page serait la meilleure solution, je ne vois pas trop comment l'intégrer mais c'est le plus simple et logique
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
C'est aussi le plus simple pour la macro. If suffit de ne plus déclarer ni initialiser WshCbl mais d'utiliser à la place ne nom de l'objet Worksheet représentant la feuille à utiliser.
En revanche il y un souci parce qu'on va probablement devoir connaitre le nombre de lignes à remplir avant de faire le copier coller. Et le mieux c'est de ne plus faire comme ça mais plutôt un peu comme dans la ExcluGlob juste en dessous.
Par ailleurs il serait très souhaitable que la liste soit mise sous forme de tableau.
Je propose de ne plus du tout rectifier la mise en page par macro. Définie manuellement, la zone d'impression devra englober les encarts de fin.
La macro pourrait ressembler à ça :
VB:
Sub TransfertY()
   Dim WshSrc As Worksheet, LOt As ListObject, TD(), LD As Long, TR(), LR As Long, C As Long, DiffL As Long
   Set WshSrc = ActiveSheet
   Set LOt = WshExclPDF.ListObjects(1)
   TD = ColUti(WshSrc.[A2:I2]).Value
   ReDim TR(1 To 1000, 1 To 8)
   For LD = 1 To UBound(TD, 1)
      If Not IsEmpty(TD(LD, 9)) Then
         LR = LR + 1
         For C = 1 To 8: TR(LR, C) = TD(LD, C): Next C
         End If: Next LD
   If LR = 0 Then
      LOt.DataBodyRange.ClearContents
      MsgBox "Aucune coche mise" & vbLf & "==> pdf non créé.", vbCritical, "TransfertY"
      Exit Sub: End If
   DiffL = LR - LOt.ListRows.Count
   If DiffL > 0 Then
      WshExclPDF.Rows(2).Resize(DiffL).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
   ElseIf DiffL < 0 Then
      WshExclPDF.Rows(2).Resize(-DiffL).Delete
      End If
   LOt.DataBodyRange.Resize(LR).Value = TR
   WshExclPDF.ExportAsFixedFormat Type:=xlTypePDF, _
      Filename:=ThisWorkbook.Path & "Visa exclusion " & WshSrc.Name & ".pdf", _
      Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, _
      IgnorePrintAreas:=False, _
      OpenAfterPublish:=True
   End Sub
 

Sigmund173

XLDnaute Occasionnel
Hum ça se complique pour moi niveau compréhension, je vais relire ça avec plus de recule et voir comment préparer le fichier comme vous l'avez décrit. Il est difficile de savoir le nombre de ligne à l'avance car suivant la transaction on peut avoir 200 personnes jusqu'à 700 et si on a 120 dossiers bah ça va faire un paquet de ligne.
Donc comme vous pouvez le voir, ce que vous avez préparé va être très utilisé et surtout indispensable pour nous, d'ou l'idée de l'automatisation afin d'éviter les erreurs humaines, sur la dernière transaction je me suis retrouvé avec 45 fichiers excel dont certains avait 30 lignes et d'autres jusqu'à 2400 lignes :)

P.S.: si vous êtes dans la région de Saint-Louis faites moi signe que je vous invite à boire un verre :)
 
Dernière édition:

Sigmund173

XLDnaute Occasionnel
Je ne suis pas contre une revue du fichier, voilà ce que j'ai fait jusqu'à maintenant.
Pour le Header je n'ai pas réussi à trouver la formule qui récupère le nom du projet et le site code, celui que j'ai mis fonctionne pas :-(
Si vous pouviez jeter un coup d'oeil

Et l'invitation tiens pour vous remercier de l'aider énorme apporté ici
 

Pièces jointes

  • GigognesSigmund173.xlsm
    478.2 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
On ne peut pas mettre de formule dans les éléments d'entête/pieds de page.
Alors on va en fin de compte quand même garder quelques instructions de rectification de la mise en page :
VB:
Sub TransfertY()
   Dim WshSrc As Worksheet, LOt As ListObject, TD(), LD As Long, TR(), LR As Long, C As Long, DiffL As Long
   Set WshSrc = ActiveSheet
   Set LOt = WshExclPDF.ListObjects(1)
   TD = ColUti(WshSrc.[A2:I2]).Value
   ReDim TR(1 To UBound(TD, 1), 1 To 8)
   For LD = 1 To UBound(TD, 1)
      If Not IsEmpty(TD(LD, 9)) Then
         LR = LR + 1
         For C = 1 To 8: TR(LR, C) = TD(LD, C): Next C
         End If: Next LD
   If LR = 0 Then
      MsgBox "Aucune coche mise" & vbLf & "==> pdf non créé.", vbCritical, "TransfertY"
      LOt.DataBodyRange.ClearContents
      Exit Sub: End If
   DiffL = LR - LOt.ListRows.Count
   If DiffL > 0 Then
      WshExclPDF.Rows(2).Resize(DiffL).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
   ElseIf DiffL < 0 Then
      WshExclPDF.Rows(2).Resize(-DiffL).Delete
      End If
   LOt.DataBodyRange.Value = TR
   Application.PrintCommunication = False
   With WshCbl.PageSetup
      .LeftHeader = WshSumm.[D2].Value
      .CenterHeader = WshSrc.Name
      .RightHeader = WshSumm.[D3].Value
      .FitToPagesWide = 1
      .FitToPagesTall = False
      End With
   Application.PrintCommunication = True
   WshExclPDF.ExportAsFixedFormat Type:=xlTypePDF, _
      Filename:=ThisWorkbook.Path & "\Exclusion list " & WshSrc.Name & ".pdf", _
      Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, _
      IgnorePrintAreas:=False, _
      OpenAfterPublish:=True
   End Sub
N'oubliez pas de faire subir une mise sous forme de tableau à la plage recouvrant la liste.
 

Sigmund173

XLDnaute Occasionnel
oh bah je n'avais pas vu la réponse entre temps
Est-ce que je peux vous demander une faveur et regarder le dernier fichier attaché et faire la mise en forme de la façon dont c'est requis sur le TAB HR exclusion et je ferais les autres de la même manière, comme ça je suis certain de ne pas faire d'erreur svp
Il y a un texte qu'on voudrait mettre sur chaque début de page, donc pas dans l'header mais juste sur la première page

C'est quand même dingue tout ce qu'on peut faire en vba, je suis stupéfait
 

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha