Macro copie/coller

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

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
 

kjin

XLDnaute Barbatruc
Re : Macro copie/coller

Bonsoir,
Code:
'....
Tablo = Array(SHEET_TRAVAIL_DATA1, SHEET_TRAVAIL_DATA2, SHEET_TRAVAIL_DATA3, SHEET_TRAVAIL_DATA4, SHEET_TRAVAIL_DATA5)
For n = LBound(Tablo) To UBound(Tablo)
Set X = Sheets(Tablo(n)).Find((Ticker(i) & tickerdroite(j)), LookIn:=xlValues, LookAt:=xlWhole)
    If Not X Is Nothing Then
    CTicker = X.Column
    '....sans doute qq chose ici ?!
    End If
Next n
'....
Après comment tout ça s'articule, sans fichier c'est une autre histoire...
A+
kjin
 

Statistiques des forums

Discussions
312 287
Messages
2 086 825
Membres
103 396
dernier inscrit
Laurent34