Merci beaucoup pour toute ton aide sur mon problème.
En effet il n’y a pas moyen de modifier le fichier car il a trop d’informations et du coup est assez lourd en soit, avec plusieurs fichiers imbriqués entre eux.
Je ne sais pas si je peux te montrer le code correspondant qui a quelques commentaires.
Sub maj_plus_gros_porteurs ()
'Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim repertoire As String
Dim passif As String
Dim fso As Object
Dim wb1 As Workbook
Dim wb4 As Workbook
Dim Nom_onglet As String
Dim Nom_fonds As String
Dim Nb_fonds As Integer
Sheets(« plus gros porteurs »).Delete
Sheets(« total redemption »).Delete
Sheets(« Reporting Liquidité »).Delete
Set wb1 = Workbooks(« SETUP Liquidite 2020 V2 »)
Set fso = CreateObject(« Scripting.FileSystemObject »)
repertoire = « X:\Cont-Out\Controle »
passif = wb1.Sheets(« SETUP »).Range(« M18 »).Value
Workbooks.Open Filename:=repertoire & passif
Set wb4 = ActiveWorkbook
’ Mainenant on colle les trois onglets (« plus gros porteur », « redemption » et « Liquidité »)
'on les colle respectivement après l’onglet « Fixed Income » de la feuille « SETUP Liquidite 2020 »
wb4.Sheets(« plus gros porteurs »).Copy After:=wb1.Sheets(« Fixed Income »)
wb4.Sheets(« redemption »).Copy After:=wb1.Sheets(« Fixed Income »)
wb4.Sheets(« Liquidité »).Copy After:=wb1.Sheets(« Fixed Income »)
wb4.Close savechanges:=False
Nb_fonds = wb1.Sheets(Setup).Range(« A7 »).Value
For i = 1 To Nb_fonds
Nom_onglet = Sheets(« SETUP »).Range(« C » & i + 7).Value
Nom_fonds = Sheets(« SETUP »).Range(« D » & i + 7).Value
'on efface d’abord l’ancienne liste de top 5 client sur chaque onglet de fonds
Sheets(Nom_onglet).Range(« Y14 », « Z18 »).ClearContents
'on selectionne le fonds correspondant en faisant un filtre
Sheets(« plus gros porteurs »).Range(« B4 »).AutoFilter Criteria1:=Array(Nom_fonds)
'on fait la boucle qui va selectionner chaque fonds puis copier/coller la liste des 5 plus gros porteurs avec le montant correspondant à chaque fois
If Sheets(« plus gros porteurs »).Range(« B4 »).Value = Nom_fonds Then
Sheets(« plus gros porteurs »).PivotTables(« Tableau croisé dynamique15 »).PivotFields(« Nom du Compte Titre »).AutoSort xlDescending, « Somme de Encours Fin de Periode », Sheets(« plus gros porteurs »).PivotTables(« Tableau croisé dynamique15 »).PivotColumnAxis.PivotLines(1), 1
Sheets(« plus gros porteurs »).Range(« A5 », « A9 »).Copy
Sheets(Nom_onglet).Range(« Y14 »).PasteSpecial xlPasteValues
'ici il est question de mettre une fonction qui va permettre de décaler la cellule à copier vers la droite car étant donné que c’est un TCD, la copie de cellule en dur pourrait poser problème à l’avenir.
Sheets(« plus gros porteurs »).Range(« B5 », « B9 »).Copy
Sheets(Nom_onglet).Range(« Z14 »).PasteSpecial xlPasteValues
Sheets(Nom_onglet).Range(« Z1 ») = Application.WorksheetFunction.SumIf(Sheets(« Inventaire »).Columns(« E »), _
Sheets(Nom_onglet).Range(« Y2 »), Sheets(« Inventaire »).Columns(« AG »))
End If
Next i
End Sub
Dans l’image j’ai surligné la partie dans laquelle je crois qu’on devrait ajouter la fonction pour aller selectionner la cellule de droite comme demandé dans mon message précédant.
J’espère que mon illustration n’est pas trop compliquée à comprendre.
Merci encore.