CharlesSSQ
XLDnaute Junior
Bonjour,
Voici mon code. Il passe presqu'au complet au travers. Au bas du code il se trouve à stopper à " Set X = " et "Set Y ="
S'il vous plaît, pourriez vous jeter un coup d'oeil rapide et peut-être m'éclairer sur le pourquoi du problème. Je crois que l'utilisation de ARRAY est peut-être mal faite?
Merci
Voici mon code. Il passe presqu'au complet au travers. Au bas du code il se trouve à stopper à " Set X = " et "Set Y ="
S'il vous plaît, pourriez vous jeter un coup d'oeil rapide et peut-être m'éclairer sur le pourquoi du problème. Je crois que l'utilisation de ARRAY est peut-être mal faite?
Merci
Code:
'DÉCLARE LES VARIABLES DE TYPES TABLEAUX POUR STOCKER LES DONNÉES
Dim Ticker(1 To 1000) As Variant, tickerfonds As Variant, tickerrecherche As Variant
Dim fichierDATA As String, fichierGDF As String, valeur(1 To 100) As String
Dim LD As Variant, frais As Variant, lignedepart As Variant, Ligneticker As Variant, colonnedepart As Variant
Dim DateTravail As Date
Dim tickerdroite(1 To 1000) As Variant, valeurfr(1 To 1000) As Variant, valeurang(1 To 1000) As Variant
Dim CTicker As Variant, Ldate As Variant
'DÉCLARE LES CONSTANTES UTILISÉES DANS LA PROCÉDURE. EN CAS DE MODIFICATIONS DES CODES, CE SONT
'CES CONSTANTES QUE VOUS DEVEZ MODIFIER.
Private Const SHEET_TRAVAIL_GUIDE = "detailFonds" 'Le guide des fonds
Private Const SHEET_FEUIL1_PROCE_GUIDE = "Feuil1" 'onglet feuil1 dans la procédure GDF
Private Const SHEET_FEUIL2_PROCE_GUIDE = "Feuil2" 'Onglet feuil2 dans le Procédure GDF
Private Const WORKBOOK_GUIDE = "guide des fonds.xls" 'Dans la Procédure de saisie
Private Const WORKBOOK_DATA = "DATA.xls" 'Dans le fichier DATA.xls
Private Const SHEET_TRAVAIL_DATA1 = "ALLOCATION - ACT. DOMES." 'Dans le fichier DATA.xls
Private Const SHEET_TRAVAIL_DATA2 = "ALLOCATION - ACT. ETR." 'Dans le fichier DATA.xls
Private Const SHEET_TRAVAIL_DATA3 = "ALLOCATION - REV. FIXES" 'Dans le fichier DATA.xls
Private Const SHEET_TRAVAIL_DATA4 = "ALLOCATION - EQUILIBRES" 'Dans le fichier DATA.xls
Private Const SHEET_TRAVAIL_DATA5 = "ALLOCATION - AUTRES" 'Dans le fichier DATA.xls
Private Const WORKBOOK_PROCEDURE_GUIDE = "Procédure guide des fonds.xls"
'CHEMIN UTILISER DANS LA PROCÉDURE. C'EST LUI QUE VOUS DEVEZ MODIFIER EN CAS DE CHANGEMENTS.
Private Const CHEMIN_DATA = "G:\Suivi des fonds\Outils\DATA\DATA.xls"
Private Const CHEMIN_GDF = "G:\Suivi des fonds\Outils\DATA\guide des fonds.xls"
Sub Importation_Repart_Secto()
Application.ScreenUpdating = False
'**********************************************************************************************
'OUVERTURE DU DATA PRINCIPAL
'**********************************************************************************************
'Pour ouvrir le fichier DATA - Caisses.xls. S'il est déjà ouvert, alors la macro se poursuivra, sinon, elle l'ouvrira.
fichierDATA = "non"
For Each Fichier In Application.Workbooks 'On parcours chacun des classeurs Excel ouverts.
If Fichier.Name = WORKBOOK_DATA Then 'S'il y en a 1 qui s'appelle DATA.xls, alors on tourne la switch à oui.
fichierDATA = "oui" 'Switch
GoTo Commencer 'Sort de la boucle
End If
Next Fichier 'Passe au prochain fichier
If fichierDATA <> "oui" Then 'Une fois la boucle complétée, si la Switch n'a pas été tournée à oui, alors ouvre le fichier DATA.xls
Workbooks.Open CHEMIN_DATA 'CHEMIN_DATA est déclaré en constante, c'est le chemin à utiliser pour ouvrir le fichier DATA.xls
End If
Windows(WORKBOOK_DATA).Activate 'On active le DATA.xls
Application.Run "'DATA.xls'!AfficherDATA"
' voir Module Fonctionnement pour "AfficherDATA"
Commencer:
'**********************************************************************************************
'OUVERTURE DU GUIDE DES FONDS
'**********************************************************************************************
'Pour ouvrir le fichier Guide des fonds.xls. S'il est déjà ouvert, alors la macro se poursuivra, sinon, elle l'ouvrira.
fichierGDF = "non"
For Each Fichier In Application.Workbooks 'On parcours chacun des classeurs Excel ouverts.
If Fichier.Name = WORKBOOK_GUIDE Then 'S'il y en a 1 qui s'appelle guide des fonds.xls, alors on tourne la switch à oui.
fichierGDF = "oui" 'Switch
GoTo Commencer1 'Sort de la boucle
End If
Next Fichier 'Passe au prochain fichier
If fichierGDF <> "oui" Then 'Une fois la boucle complétée, si la Switch n'a pas été tournée à oui, alors ouvre le fichier guide des fonds.xls
Workbooks.Open CHEMIN_GDF 'CHEMIN_GDF est déclaré en constante, c'est le chemin à utiliser pour ouvrir le fichier guide des fonds.xls
End If
Windows(WORKBOOK_GUIDE).Activate 'On active le DATA.xls
Application.Run "'Procédure guide des fonds.xls'!AfficherGDF"
' voir Module Fonctionnement pour "AfficherGDF"
Commencer1:
'*******************************************************************************************
' On commence l'importation des répartitions vers le guide des fonds.
'*******************************************************************************************
'On trouve la bonne ligne de date dans chacun des onglets de DATA ci-dessous
DateTravail = Workbooks(WORKBOOK_PROCEDURE_GUIDE).Sheets(SHEET_FEUIL1_PROCE_GUIDE).Cells(39, 3).Value
Application.Workbooks(WORKBOOK_DATA).Activate
Sheets(Array(SHEET_TRAVAIL_DATA1, SHEET_TRAVAIL_DATA2, SHEET_TRAVAIL_DATA3, SHEET_TRAVAIL_DATA4, SHEET_TRAVAIL_DATA5)).Select
Set LD = Range("A1:A10000").Find(DateTravail, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not LD Is Nothing Then
LigneDate = LD.Row
End If
' On active GDF et sélectionne le bon onglet
Application.Workbooks(WORKBOOK_GUIDE).Activate
Sheets(SHEET_TRAVAIL_GUIDE).Select
' On s'assure que le format de destination est clearer
With Range("T2:AW200")
.ClearContents
.ClearFormats
End With
'***********************************************************************************************
'Définition des variables dans GDF
' Mets en mémoire les ticker, en allant les chercher au bon endroit
For i = 2 To 200
Ticker(i) = Cells(i, 1).Value
tickerrecherche = Ticker(i)
Set Ligneticker = Range("A1:A10000").Find(tickerrecherche, LookIn:=xlValues, LookAt:=xlWhole)
If Not Ligneticker Is Nothing Then
Fonds = Ligneticker.Row
End If
'on trouve notre colonne de depart pour setter notre plage à updater dans le GDF
Set Col = Range("B1:IV1").Find("repartitionDescFr1", LookIn:=xlValues, LookAt:=xlWhole)
If Not Col Is Nothing Then
colonnedepart = Col.Column
End If
'***********************************************************************************************
'Définition des variables dans procédureGDF et data
'***********************************************************************************************
Application.Workbooks(WORKBOOK_PROCEDURE_GUIDE).Activate
Sheets(SHEET_FEUIL2_PROCE_GUIDE).Select
For j = 3 To 200
tickerdroite(j) = Cells(j, 1).Value
valeurfr(j) = Cells(j, 2).Value
valeurang(j) = Cells(j, 3).Value
'***********************************************************************************************
'fait le copier/coller entre DATA et GDF
'***********************************************************************************************
Application.Workbooks(WORKBOOK_DATA).Activate
Sheets(Array(SHEET_TRAVAIL_DATA1, SHEET_TRAVAIL_DATA2, SHEET_TRAVAIL_DATA3, SHEET_TRAVAIL_DATA4, SHEET_TRAVAIL_DATA5)).Select
Set X = Sheets(Array(SHEET_TRAVAIL_DATA1, SHEET_TRAVAIL_DATA2, SHEET_TRAVAIL_DATA3, SHEET_TRAVAIL_DATA4, SHEET_TRAVAIL_DATA5)).Find((Ticker(i) & tickerdroite(j)), LookIn:=xlValues, LookAt:=xlWhole)
If Not X Is Nothing Then
CTicker = X.Column
End If
Set Y = Sheets(Array(SHEET_TRAVAIL_DATA1, SHEET_TRAVAIL_DATA2, SHEET_TRAVAIL_DATA3, SHEET_TRAVAIL_DATA4, SHEET_TRAVAIL_DATA5)).Find((LigneDate), LookIn:=xlValues, LookAt:=xlWhole)
If Not Y Is Nothing Then
Ldate = Y.Row
End If
For n = 0 To 9
Workbooks(WORKBOOK_GUIDE).Sheets(SHEET_TRAVAIL_GUIDE).Cells(Fonds, colonnedepart + n * 3).Value = Cells(valeurfr(j)).Value
Workbooks(WORKBOOK_GUIDE).Sheets(SHEET_TRAVAIL_GUIDE).Cells(Fonds, colonnedepart + n * 3 + 1).Value = Cells(valeurang(j)).Value
Workbooks(WORKBOOK_GUIDE).Sheets(SHEET_TRAVAIL_GUIDE).Cells(Fonds, colonnedepart + n * 3 + 2).Value = Cells(Date, Ticker).Value
Next n
Next j
Next i
End Sub