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

Dranreb

XLDnaute Barbatruc
Au début :
VB:
Sub TransfertY()
   Const HEncadréFin = 9, NbLpP = 65 ' À vérifier sur la page 2 d'un pdf renseigné sur au moins 3 pages.
Après le WshExclPDF.ResetAllPageBreaks :
Code:
   If (WshExclPDF.Range(WshExclPDF.PageSetup.PrintTitleRows).Row _
      - WshExclPDF.Range(WshExclPDF.PageSetup.PrintArea).Row + LR) Mod NbLpP _
      > NbLpP - HEncadréFin Then WshExclPDF.HPageBreaks.Add Before:=LOt.HeaderRowRange.Offset(LR + 1)
 
Dernière édition:

Sigmund173

XLDnaute Occasionnel
impressionnant et je n'aurais pas trouvé ou le mettre, par contre sur mon document 5 pages, la 5ème contient 7 lignes et ensuite il me met une nouvelle page avec l'encadrement et la signature
J'ai aussi essayé de change If LR > 40 à If LR > 55 mais pareil

VB:
  WshExclPDF.ResetAllPageBreaks
   If (WshExclPDF.Range(WshExclPDF.PageSetup.PrintTitleRows).Row _
      - WshExclPDF.Range(WshExclPDF.PageSetup.PrintArea).Row + LR) Mod NbLpP _
      > NbLpP - HEncadréFin Then WshExclPDF.HPageBreaks.Add Before:=LOt.HeaderRowRange.Offset(LR + 1)
   If LR > 55 Then WshExclPDF.HPageBreaks.Add Before:=LOt.HeaderRowRange.Offset(LR + 1)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Mais nom d'une pipe, pourquoi ajoutez vous deux sauts de page au même endroit ???
Un seul suffit, non plus comme auparavant s'il y avait plus de 55 lignes produites, puisque ça ne vous plaisait pas s'il restait encore assez de place sur la dernière page, mais désormais si le reste de la division du nombre de lignes produites, augmenté du nombre de lignes supplémentaires sur la 1ère page avant la ligne d'entêtes, par le nombre de lignes par page est supérieur à ce nombre de lignes par page diminué de la hauteur de l'encadré de fin. S'il arrive que l'encadré soit coupé, recomptez les lignes dans la page 2 d'un pdf ayant des lignes renseignées sur au moins 3 pages (valeur à attribuer à NbLpP), ainsi que la hauteur en lignes de l'encadré de fin (valeur de HEncadréFin).
 
Dernière édition:

Sigmund173

XLDnaute Occasionnel
C'est ce qui me semblait donc je l'avais enlevé, c'était la ligne qui avait été mise avant.
Ce n'est pas que le vide ne me plaisait pas, c'est surtout que l'encadré se trouve tout seul sur une page et non pas à la suite de la liste des exclusions donc à la fin du tableau
 

Sigmund173

XLDnaute Occasionnel
Par contre j'ai beau changer les valeurs ici rien ne se passe, sur un pdf à 5 pages, je me retrouve avec une 6ème et l'encadré tout seul, alors qu'il y a la place dans la page 5 pour y mettre l'encadré (il y a 10 lignes dans la page 5)

VB:
Sub TransfertY()
   Const HEncadréFin = 9, NbLpP = 65

Code:
Sub TransfertY()
   Const HEncadréFin = 9, NbLpP = 55
 

Dranreb

XLDnaute Barbatruc
Ne les changez pas au pif. Comptez le nombre de lignes exact dans une page de pdf où il n'y que des lignes du tableau renseignées à l'exclusion de tout début spécial ou encadré.
Je me suis peut être trompé sur la valeur de HEncadréFin, ce serait plus proche de 17 que de 9. Remarquez: HEncadréFin pourrait être une variable calculée au lieu d'une constante: c'est le numéro de ligne de la dernière ligne de la zone d'impression moins le numéro de ligne de la dernière ligne du tableau. vérifiez aussi si je ne me suis pas trompé dans la formule, réfléchissez à ce qu'elle doit faire et corrigez là, pour qu'elle signifie bien "s'il reste moins de lignes sur la dernière page que la hauteur de l'encadré de fin". Le nombre de lignes restant c'est le nombre de lignes par page - le nombre de lignes utilisé sur la dernière page, ce dernier étant le reste de la division du nombre total par le nombre de lignes par page (Début + LR) Mod NbLpP, Début étant les nombre de lignes supplémentaire au début si la zone d'impression commence avant la ligne répétée sur chaque page. Moi je n'y réfléchis plus, j'en ai marre, ce n'est pas pour rien que je m'étais borné à ajouter un saut de page au delà d'un certain nombre de lignes pour ne pas risquer que l'encadré soit coupé, c'est parce que je savais que ce serait compliqué de faire mieux.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Oui, problème déjà signalé par un autre demandeur.
Il est devenu impossible de retransmettre à une autre procédure un ParamArray vide.
Alors pour les deux appels à cette procédure je mets un test devant dans ce sens :
VB:
   If UBound(ColOrd) >= LBound(ColOrd) Then InterpréterParam ColOrd, UBound(TDon, 2), Pour:="Gigogne"
…
   If UBound(ColOrd) >= LBound(ColOrd) Then InterpréterParam ColOrd, UBound(TDon, 2), "IndexerParFusion"
Du coup il devient inutile de refaire ce test dedans.
C'est aussi corrigé dans la solution avec le complément. Peut être pourriez vous l'adopter ?
 

Pièces jointes

  • GigIdx.xlsm
    90.2 KB · Affichages: 8
Dernière édition:

Dranreb

XLDnaute Barbatruc
Je le joins.
Mais bong sang pourquoi est-il devenu si volumineux ?
Mais dans tous les classeurs où je propose dorénavant cette solution, je ne fournis que le classeur précurseur du GigIdx.xlam, poste précédent.
Juste après installation, dans les références on coche GigIdx, et plus besoin des modules MGigogne et MTableaux ni du module de classe SsGr. Ils sont tous dedans.
 

Statistiques des forums

Discussions
311 707
Messages
2 081 746
Membres
101 812
dernier inscrit
trufu