IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

test sur nom de sheet => "error 9 out of range"


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut test sur nom de sheet => "error 9 out of range"
    Bonjour,
    je suis un bleu en vba.
    J'utilise dans mon job une macro qui convertis un input excel.
    le nom d'une sheet à changé dans l'input , quand j'ai voulu adapté cela dans la macro en mettons le nouveau nom dans la macro
    " Private Function getTemplateVersion" ,

    j'ai chaqué fois reçu "error 9 :out of range" !!!!
    merci d'avance pour votre secours.

    _debutant.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Si VB n'accepte pas un nom, change de nom... C'est quoi "getTemplateVersion", un nom de feuille ? Le nom d'un modèle existant ?

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    SAlut et bienvenu parmis nous
    En effet si tu as un tel message c'est que tu essais d'acceder a une sheet qui n'existe pas. Tu dis avoir changé le nom d'un sheet et ensuite d'avoir changé ce nom dans une macro, mais es tu bien d'avoir changé tous les endroits ou apparaissait ce nom de sheet.
    Dans VBA fait une recherche Ctrl+F tape l'ancien nom de ta sheet, et coche l'option "Dans tout le projet en cours" et aller, comme ca tu sera sur que l'ancien nom ne traine nullpart et si tu le retrouve ... ben tu le change
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    En fait , le nom qui a changé dans le fichier excel input de la macro est le nom de la sheet) (I_C est devenu summary) .
    je l'es changé partout dans la macro (donc, I_C devient partout summary)

    voici un bout de macro :
    ---
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Function getTemplateVersion(wb As Workbook) As Integer 
        If wb.Worksheets(1).name = "I_C" Then 
            getTemplateVersion = 1 
        ElseIf wb.Worksheets(1).name = "STATS" Then 
            getTemplateVersion = 2 
        End If 
    End Function
    ---
    run -> out of range !! je ne comprend pas . est ce un probléme de déclaration du nom de la sheet ,si c'es le cas où en définit ce paramétre, pour la changé?
    merci d'avance.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    As-tu vérifié si le nom de la feuille est bien en lettres minuscules comme dans tes modifs? D'après ce que je peux voir, les noms étaient en majuscules à l'origine...

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Les noms des feuilles n'ont aucun rapport avec le problème.

    Si aucune feuille ne porte un des deux noms, la fonction renverra simplement 0.

    Le problème vient du fait que, à mon avis, tu n'as aucune feuille de calcul dans le classeur que tu passes en paramètres.

    Peut-être celui-ci est-il seulement constitué de feuilles graphiques et/ou de feuilles de macros Excel 4.0 et/ou de feuilles de "boite de dialogue"...

    Remplace ton code par celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function getTemplateVersion(wb As Workbook) As Integer
        If wb.Sheets(1).Name = "I_C" Then
            getTemplateVersion = 1
        ElseIf wb.Sheets(1).Name = "STATS" Then
            getTemplateVersion = 2
        End If
    End Function
    C'est-à-dire Worksheets par Sheets et tu ne devrais plus avoir de problème.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    voici la macro:

    ---
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Option Explicit 
     
    Sub convert() 
    On Error GoTo ErrorHandler 
        Dim wb As New Workbook, wsConfig As New Worksheet, wsData As New Worksheet 
        Dim wbImport As New Workbook 
        Dim fso As New FileSystemObject, file As file 
        Dim i As Long 
     
        Application.Cursor = xlWait 
        Set wb = ActiveWorkbook 
        Set wsConfig = wb.Worksheets("Config") 
        Set wsData = wb.Worksheets("Data") 
     
        'Delete previous data 
        wsData.Activate 
        wsData.Rows("2:65536").ClearContents 
     
        wsData.Range("A1").Activate 
     
        i = 0 
     
        For Each file In fso.GetFolder(wsConfig.Range("B1").Value).Files 
            If UCase(Right(file.name, 4)) = ".XLS" Then 
                Set wbImport = Workbooks.Open(file.Path, ReadOnly:=True) 
     
                Select Case getTemplateVersion(wbImport) 
                    Case 1 
                        processVersion1 wbImport, wsData 
                    Case 2 
                        processVersion2 wbImport, wsData 
                End Select 
     
                wbImport.Close savechanges:=False 
     
                i = i + 1 
            End If 
        Next 
     
     
        wsData.Range("A1").Activate 
     
        export wsData, wsConfig.Range("B2").Value, i 
     
        Application.Cursor = xlDefault 
        MsgBox "Companies Processed: " & i 
        Exit Sub 
     
    ErrorHandler: 
        Application.Cursor = xlDefault 
        MsgBox "Error: " & Err.Number & vbNewLine & vbNewLine & Err.Description 
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Function getTemplateVersion(wb As Workbook) As Integer 
        If wb.Worksheets(1).name = "I_C" Then 
            getTemplateVersion = 1 
        ElseIf wb.Worksheets(1).name = "STATS" Then 
            getTemplateVersion = 2 
        End If 
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    Private Sub processVersion1(wbSource As Workbook, wsDestination As Worksheet) 
        wsDestination.Activate 
     
        With wbSource 
        Dim unite As Double 
     
            If .Worksheets("I_C").Range("C18").Value = "000" Then 
               unite = 1000 
            Else 
                unite = 1 
            End If 
            unite = unite / 1000 
     
            'Name 
            ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("A1").Value 
            'MidasId 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("I_C").Range("B20").Value 
            'SYear 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = Year(.Worksheets("P_L").Range("K4").Value) 
            'SMonth 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = Month(.Worksheets("P_L").Range("K4").Value) 
            'CYear 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = 2005 
            'SMonth 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = 12 
            'Current Assets 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K19").Value * unite 
            'Current assets y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I19").Value * unite 
            'Stocks 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K11").Value * unite 
            'Stocks y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I11").Value * unite 
            'Trade debtor 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K9").Value * unite 
            'Trade debtor Y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I9").Value * unite 
            'Creditor<1Y 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K36").Value * unite 
            'Creditor<1Y Y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I36").Value * unite 
            'Trade Creditor 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("J24").Value * unite 
            'Trade Creditor Y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("H24").Value * unite 
            'Tot assets less cur liabilities 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("B_S").Range("K47").Value _ 
                + .Worksheets("B_S").Range("K19").Value _ 
                + .Worksheets("B_S").Range("K54").Value _ 
                - .Worksheets("B_S").Range("K36").Value) * unite 
            'Tot assets less cur liabilities y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("B_S").Range("I47").Value _ 
                + .Worksheets("B_S").Range("I19").Value _ 
                + .Worksheets("B_S").Range("I54").Value _ 
                - .Worksheets("B_S").Range("I36").Value) * unite 
            'Provisions for Liab & Charges 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("J62").Value * unite 
            'Creditors>1y 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K67").Value * unite 
            'Turnover 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("K7").Value * unite 
            'Turnover y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("I7").Value * unite 
            'Profit/loss for period 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("K36").Value * unite 
            'Profit/loss for period y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("I36").Value * unite 
            'Other incomes 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("K19").Value * unite 
            'Other incomes y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("I19").Value * unite 
            'Taxation 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = -.Worksheets("P_L").Range("J28").Value * unite 
            'Depreciation 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("J13").Value * unite 
            'Depreciation y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("H13").Value * unite 
            'Interest paid 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = "" 
            'Interest paid y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("H26").Value * unite 
            'Industry clas 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = "NDY" 
            'Industry definition 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("I_C").Range("B5").Value 
            'User def period 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = "" 
            'FSO 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = "On" 
     
            ActiveCell.Offset(rowOffset:=0, columnOffset:=-34).Activate 
        End With 
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    Private Sub processVersion2(wbSource As Workbook, wsDestination As Worksheet) 
     
     
        wsDestination.Activate 
     
        With wbSource 
     
        Dim unite As Double 
     
            If .Worksheets("STATS").Range("K13").Value = "000" Then 
               unite = 1000 
            Else 
                unite = 1 
            End If 
            unite = unite / 1000 
     
            'Name 
            ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 
            ActiveCell.Value = .Worksheets("STATS").Range("A2").Value 
            'MidasId 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("STATS").Range("C6").Value 
            'SYear 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = Year(.Worksheets("B_S").Range("K3").Value) 
            'SMonth 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = Month(.Worksheets("B_S").Range("K3").Value) 
            'CYear 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = 2005 
            'SMonth 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = 12 
            'Current Assets 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K34").Value * unite 
            'Current assets y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I34").Value * unite 
            'Stocks 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K25").Value * unite 
            'Stocks y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I25").Value * unite 
            'Trade debtor 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K23").Value * unite 
            'Trade debtor Y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I23").Value * unite 
            'Creditor<1Y 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K58").Value * unite 
            'Creditor<1Y Y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("I58").Value * unite 
            'Trade Creditor 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("J48").Value * unite 
            'Trade Creditor Y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("H48").Value * unite 
            'Tot assets less cur liabilities 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("B_S").Range("K19").Value _ 
                 + .Worksheets("B_S").Range("K34").Value _ 
                 + .Worksheets("B_S").Range("K40").Value _ 
                 - .Worksheets("B_S").Range("K58").Value) * unite 
            'Tot assets less cur liabilities y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("B_S").Range("I19").Value _ 
                 + .Worksheets("B_S").Range("I34").Value _ 
                 + .Worksheets("B_S").Range("I40").Value _ 
                 - .Worksheets("B_S").Range("I58").Value) * unite 
            'Provisions for Liab & Charges 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("J65").Value * unite 
            'Creditors>1y 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("B_S").Range("K70").Value * unite 
            'Turnover 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("K12").Value * unite 
            'Turnover y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("I12").Value * unite 
            'Profit/loss for period 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("K46").Value * unite 
            'Profit/loss for period y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("I46").Value * unite 
            'Other incomes 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("K20").Value * unite 
            'Other incomes y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("I20").Value * unite 
            'Taxation 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = -.Worksheets("P_L").Range("J39").Value * unite 
            'Depreciation 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("P_L").Range("J53").Value _ 
                + .Worksheets("P_L").Range("J54").Value) * unite 
            'Depreciation y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("P_L").Range("H53").Value _ 
                + .Worksheets("P_L").Range("H54").Value) * unite 
            'Interest paid 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("P_L").Range("J28").Value _ 
                + .Worksheets("P_L").Range("J25").Value) * unite 
            'Interest paid y-1 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = (.Worksheets("P_L").Range("H28").Value _ 
                + .Worksheets("P_L").Range("H25").Value) * unite 
            'Industry clas 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = "NDY" 
            'Industry definition 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = .Worksheets("P_L").Range("B67").Value 
            'User def period 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = "" 
            'FSO 
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate 
            ActiveCell.Value = "On" 
     
            ActiveCell.Offset(rowOffset:=0, columnOffset:=-34).Activate 
     
     
        End With 
    End Sub
    ---

    I_C n'existe plus, remplacé par SUMMARY.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    ET sur quelle ligne plante-t'elle?
    Dans quelle procédure ou fonction?
    As-tu essayé de déboguer en pas à pas?

    Si I_C a été modifié en summary, tu dois évidemment changer ce nom partout dans ton code, et donc, notamment, dans la fonction processVersion1.

    Il importe d'abord de vérifier cela. Après, si tu souhaites que ton code soit plus lisible, plus maintenable, plus rapide... tu auras intérêt à travailler avec des objets, plutôt que d'activer chaque cellule sur laquelle tu veux travailler.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    j'ai changé partout y compris dans processVersion1
    comment déboguer en pas à pas?
    est ce que t'aurais un exemple pour changer active cellule par objet ?
    thx.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pour démarrer une proc pas à pas, tu places ton curseur dans la proc puis tu presses F8. Dans ton cas, tu places le curseur dans la proc Convert.

    L'exécution va se réaliser ligne par ligne, à chaque pression de F8, ce qui te permettra de suivre son déroulement, de vérifier les variables, et de voir sur quelle ligne tu as l'erreur.

    Pour ce qui est des exemples, réglons d'abord le problème qui se pose à toi. On verra à optimiser le code par la suite...

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    merci les mecs , mon probléme est résolu graçe a vous ...

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par _debutant Voir le message
    ici chez moi il a l'air de bloqué sur :
    Sub convert() ... Dim fso As New FileSystemObject

    au boulot je ne sais pas encore.
    C'est mal parti. Regarde dans Outils/Références pour voir si tu as des références manquantes. Pour utiliser FileSystemObjet de cette manière, la référence à Microsoft Scription Runtime doit être cochée.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    c'est fait,
    maintenant il pointe une erreur :sub ou functon non définie

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    La déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim fso As New FileSystemObject, file As file
    pose évidemment problème. Tu ne peux pas utiliser comme nom de variable des mots réservés de VB.
    Adapte, par exemple, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim fso As New FileSystemObject, Fichier As File
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    just petite précision : drôle comme même
    la macro fonctionne trés bien pour les sheets avec le nom "STATS" ???
    parce qu'il fait trés bien la convertion dans le cas de STATS
    pourquoi pas pour SUMMARY (même aprés avoir changé I_C par SUMMARY)

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par _debutant Voir le message
    just petite précision : drôle comme même
    la macro fonctionne trés bien pour les sheets avec le nom "STATS" ???
    parce qu'il fait trés bien la convertion dans le cas de STATS
    pourquoi pas pour SUMMARY (même aprés avoir changé I_C par SUMMARY)
    Pourrais-tu donner l'entièreté du code TEL QUE TU L'UTILISES ACTUELLEMENT?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    La macro entière est un peu plus haut dans le texte.

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par _debutant Voir le message
    La macro entière est un peu plus haut dans le texte.
    Dans le code dont tu parles, il y a toujours une ou des références à I_C. Si tu souhaites de l'aide, c'est en publiant le code exact que tu utilises que tu as le plus de chances d'obtenir des répondes pertinentes...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 90
    Par défaut
    voici la macro que j'utilise :
    ---

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    Option Explicit
     
    Sub convert()
    On Error GoTo ErrorHandler
        Dim wb As New Workbook, wsConfig As New Worksheet, wsData As New Worksheet
        Dim wbImport As New Workbook
        Dim fso As New FileSystemObject, fichier As file
        Dim i As Long
     
        Application.Cursor = xlWait
        Set wb = ActiveWorkbook
        Set wsConfig = wb.Worksheets("Config")
        Set wsData = wb.Worksheets("Data")
     
        'Delete previous data
        wsData.Activate
        wsData.Rows("2:65536").ClearContents
     
        wsData.Range("A1").Activate
     
        i = 0
     
        For Each fichier In fso.GetFolder(wsConfig.Range("B1").Value).Files
            If UCase(Right(fichier.Name, 4)) = ".XLS" Then
                Set wbImport = Workbooks.Open(fichier.Path, ReadOnly:=True)
     
                Select Case getTemplateVersion(wbImport)
                    Case 1
                        processVersion1 wbImport, wsData
                    Case 2
                        processVersion2 wbImport, wsData
                End Select
     
                wbImport.Close savechanges:=False
     
                i = i + 1
            End If
        Next
     
     
        wsData.Range("A1").Activate
     
        Export wsData, wsConfig.Range("B2").Value, i
     
        Application.Cursor = xlDefault
        MsgBox "Companies Processed: " & i
        Exit Sub
     
    ErrorHandler:
        Application.Cursor = xlDefault
        MsgBox "Error: " & Err.Number & vbNewLine & vbNewLine & Err.Description
    End Sub
     
    Private Function getTemplateVersion(wb As Workbook) As Integer
        If wb.Worksheets(1).Name = "SUMMARY" Then
            getTemplateVersion = 1
        ElseIf wb.Worksheets(1).Name = "STATS" Then
            getTemplateVersion = 2
        End If
    End Function
     
    Private Sub processVersion1(wbSource As Workbook, wsDestination As Worksheet)
        wsDestination.Activate
     
        With wbSource
        Dim unite As Double
     
            If .Worksheets("SUMMARY").Range("C18").Value = "000" Then
               unite = 1000
            Else
                unite = 1
            End If
            unite = unite / 1000
     
            'Name
            ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("A1").Value
            'MidasId
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("SUMMARY").Range("B20").Value
            'SYear
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = Year(.Worksheets("P_L").Range("K4").Value)
            'SMonth
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = Month(.Worksheets("P_L").Range("K4").Value)
            'CYear
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = 2005
            'SMonth
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = 12
            'Current Assets
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K19").Value * unite
            'Current assets y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I19").Value * unite
            'Stocks
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K11").Value * unite
            'Stocks y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I11").Value * unite
            'Trade debtor
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K9").Value * unite
            'Trade debtor Y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I9").Value * unite
            'Creditor<1Y
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K36").Value * unite
            'Creditor<1Y Y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I36").Value * unite
            'Trade Creditor
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("J24").Value * unite
            'Trade Creditor Y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("H24").Value * unite
            'Tot assets less cur liabilities
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("B_S").Range("K47").Value _
                + .Worksheets("B_S").Range("K19").Value _
                + .Worksheets("B_S").Range("K54").Value _
                - .Worksheets("B_S").Range("K36").Value) * unite
            'Tot assets less cur liabilities y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("B_S").Range("I47").Value _
                + .Worksheets("B_S").Range("I19").Value _
                + .Worksheets("B_S").Range("I54").Value _
                - .Worksheets("B_S").Range("I36").Value) * unite
            'Provisions for Liab & Charges
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("J62").Value * unite
            'Creditors>1y
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K67").Value * unite
            'Turnover
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("K7").Value * unite
            'Turnover y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("I7").Value * unite
            'Profit/loss for period
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("K36").Value * unite
            'Profit/loss for period y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("I36").Value * unite
            'Other incomes
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("K19").Value * unite
            'Other incomes y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("I19").Value * unite
            'Taxation
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = -.Worksheets("P_L").Range("J28").Value * unite
            'Depreciation
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("J13").Value * unite
            'Depreciation y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("H13").Value * unite
            'Interest paid
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = ""
            'Interest paid y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("H26").Value * unite
            'Industry clas
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = "NDY"
            'Industry definition
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("SUMMARY").Range("B5").Value
            'User def period
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = ""
            'FSO
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = "On"
     
            ActiveCell.Offset(rowOffset:=0, columnOffset:=-34).Activate
        End With
    End Sub
     
     Private Sub processVersion2(wbSource As Workbook, wsDestination As Worksheet)
     
     
        wsDestination.Activate
     
        With wbSource
     
        Dim unite As Double
     
            If .Worksheets("STATS").Range("K13").Value = "000" Then
               unite = 1000
            Else
                unite = 1
            End If
            unite = unite / 1000
     
            'Name
            ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
            ActiveCell.Value = .Worksheets("STATS").Range("A2").Value
            'MidasId
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("STATS").Range("C6").Value
            'SYear
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = Year(.Worksheets("B_S").Range("K3").Value)
            'SMonth
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = Month(.Worksheets("B_S").Range("K3").Value)
            'CYear
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = 2005
            'SMonth
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = 12
            'Current Assets
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K34").Value * unite
            'Current assets y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I34").Value * unite
            'Stocks
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K25").Value * unite
            'Stocks y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I25").Value * unite
            'Trade debtor
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K23").Value * unite
            'Trade debtor Y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I23").Value * unite
            'Creditor<1Y
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K58").Value * unite
            'Creditor<1Y Y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("I58").Value * unite
            'Trade Creditor
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("J48").Value * unite
            'Trade Creditor Y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("H48").Value * unite
            'Tot assets less cur liabilities
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("B_S").Range("K19").Value _
                 + .Worksheets("B_S").Range("K34").Value _
                 + .Worksheets("B_S").Range("K40").Value _
                 - .Worksheets("B_S").Range("K58").Value) * unite
            'Tot assets less cur liabilities y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("B_S").Range("I19").Value _
                 + .Worksheets("B_S").Range("I34").Value _
                 + .Worksheets("B_S").Range("I40").Value _
                 - .Worksheets("B_S").Range("I58").Value) * unite
            'Provisions for Liab & Charges
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("J65").Value * unite
            'Creditors>1y
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("B_S").Range("K70").Value * unite
            'Turnover
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("K12").Value * unite
            'Turnover y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("I12").Value * unite
            'Profit/loss for period
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("K46").Value * unite
            'Profit/loss for period y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("I46").Value * unite
            'Other incomes
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("K20").Value * unite
            'Other incomes y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("I20").Value * unite
            'Taxation
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = -.Worksheets("P_L").Range("J39").Value * unite
            'Depreciation
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("P_L").Range("J53").Value _
                + .Worksheets("P_L").Range("J54").Value) * unite
            'Depreciation y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("P_L").Range("H53").Value _
                + .Worksheets("P_L").Range("H54").Value) * unite
            'Interest paid
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("P_L").Range("J28").Value _
                + .Worksheets("P_L").Range("J25").Value) * unite
            'Interest paid y-1
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = (.Worksheets("P_L").Range("H28").Value _
                + .Worksheets("P_L").Range("H25").Value) * unite
            'Industry clas
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = "NDY"
            'Industry definition
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = .Worksheets("P_L").Range("B67").Value
            'User def period
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = ""
            'FSO
            ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
            ActiveCell.Value = "On"
     
            ActiveCell.Offset(rowOffset:=0, columnOffset:=-34).Activate
     
     
        End With
    End Sub
    ---
    help.

  20. #20
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    J'ai essayé de reproduire un peu la structure de tes fichiers...

    1. Dans le projet VBA, va sur Debogage/Compiler le projet. Es-tu sûr que ta macro Export est présente?

    2. Il faut que tu t'assures que les fichiers qui sont ouverts possèdent bien les feuilles nommées comme tu les utilises dans ton code, en faisant attention aux majuscules et minuscules. Il faut donc que tu sois certain que les feuilles B_S et P_L soient présentes dans les classeurs qui sont ouverts dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each fichier In fso.GetFolder(wsConfig.Range("B1").Value).Files
     
    ...
    Pour faciliter le débogage, tu vas dans Outils/options et dans l'onglet Général, tu coches Arrêter sur toutes les erreurs.
    Lorsque tu t'es assuré de cela, tu lances convert en pas à pas, et tu nous dis sur quelle ligne cela plante, ainsi que le message d'erreur que tu obtiens.

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/10/2014, 17h46
  2. Test sur le nom d'un dossier
    Par romu69 dans le forum Windows
    Réponses: 1
    Dernier message: 27/09/2006, 16h48
  3. Test sur un nom de fichier
    Par Ribéry dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 11/07/2006, 11h17
  4. test sur le nom d'une fonction
    Par Art19 dans le forum C
    Réponses: 6
    Dernier message: 26/06/2006, 18h29
  5. [XSL] Test sur le nom d'une balise
    Par KibitO dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/12/2005, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo