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 :

Addin faisant référence à un fichier excel fermé


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Points : 65
    Points
    65
    Par défaut Addin faisant référence à un fichier excel fermé
    Bonjour,

    Je tente de créer une fonction qui sera inclue dans un addin (.xlam) pour que je puisses l'ajouter à n'importe quel autre fichier Excel de la compagnie. Toutefois, j'aimerais que cette fonction fasse référence à un fichier de paramètres.

    J'ai tenté de toutes sortes de manières de faire référence à mon fichier à partir de cette fonction mais ça ne fonctionne pas. En fait, je n'ai pas de message d'erreur mais ça n'y fait juste pas référence.

    Voici mon code et merci pour votre aide à l'avance.

    Ah oui, dans mon code, j'utilise Workbooks.Open mais dans mon monde idéal, j'aimerais pouvoir lire le fichier sans l'ouvrir.

    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
     
    Function calculPrime(ByVal annee As Integer, ByVal choixLimite As Integer, ByVal cotRisque As Double) As Double
     
     
    Dim borneInferieure As Double
    Dim borneSuperieure As Double
    Dim myRangeName As String
    Dim myRange As Range
    Dim nbRows As Integer
    Dim txPrimeInferieur
    Dim txPrimeSuperieur
    Dim i As Integer
     
    Dim wbk As Workbook
     
     
     
    myRangeName = "Taux" & annee
     
    borneInferieure = -1
     
    i = 1
     
    Set wbk = Workbooks.Open("L:\CSST\Outils\Addins\Parametres\ParamTauxPrime.xlsx")
    Set myRange = wbk.Names(myRangeName)
     
    nbRows = myRange.Rows.Count
     
     Select Case choixLimite
        Case Is = 150
           colonneChoix = 2
        Case Is = 200
           colonneChoix = 3
        Case Is = 250
           colonneChoix = 4
        Case Is = 300
           colonneChoix = 5
        Case Is = 400
           colonneChoix = 6
        Case Is = 500
           colonneChoix = 7
        Case Is = 600
           colonneChoix = 8
        Case Is = 700
           colonneChoix = 9
        Case Is = 800
           colonneChoix = 10
        Case Is = 900
           colonneChoix = 11
        End Select
     
    Application.ScreenUpdating = False
     
    While borneInferieure < 0
     
        If cotRisque < myRange.Cells(i, 1).Value Then
     
            borneInferieure = 0
            borneSuperieure = myRange.Cells(i, 1).Value
     
            calculPrime = myRange(i, colonneChoix)
     
        End If
     
        If cotRisque >= myRange.Cells(nbRows, 1).Value Then
     
            borneInferieure = myRange.Cells(nbRows, 1).Value
            borneSuperieure = myRange.Cells(nbRows, 1).Value
     
            calculPrime = myRange(nbRows, colonneChoix)
     
        End If
     
        If cotRisque >= myRange.Cells(i, 1).Value And cotRisque < myRange.Cells(i + 1, 1).Value Then
     
            borneInferieure = myRange.Cells(i, 1).Value
            borneSuperieure = myRange.Cells(i + 1, 1).Value
     
            txPrimeInferieur = myRange(i, colonneChoix)
            txPrimeSuperieur = myRange(i + 1, colonneChoix)
     
            calculPrime = txPrimeInferieur - ((cotRisque - borneInferieure) * (txPrimeInferieur - txPrimeSuperieur)) / (borneSuperieure - borneInferieure)
     
        End If
     
        i = i + 1
     
    Wend
     
    End Function

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Points : 65
    Points
    65
    Par défaut
    Finalement, j'ai trouvé ma solution. J'ai utilisé la fonction GetObject et ça fonctionne à merveille.

    Voici mon code final pour ceux que ça interesse:

    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
     
    Function calculPrime(ByVal annee As Integer, ByVal choixLimite As Integer, ByVal cotRisque As Double) As Double
     
    Application.Volatile
     
    Dim borneInferieure As Double
    Dim borneSuperieure As Double
    Dim myRangeName As String
    Dim myRange As Range
    Dim nbRows As Integer
    Dim txPrimeInferieur
    Dim txPrimeSuperieur
    Dim i As Integer
     
    Dim wbk As Workbook
     
     
     
    myRangeName = "Taux" & annee
     
    borneInferieure = -1
     
    i = 1
     
    Set wbk = GetObject("L:\CSST\Outils\Addins\Parametres\ParamTauxPrime.xlsx")
    Set myRange = wbk.Worksheets("ParamTaux").Range(myRangeName)
     
    nbRows = myRange.Rows.Count
     
     Select Case choixLimite
        Case Is = 150
           colonneChoix = 2
        Case Is = 200
           colonneChoix = 3
        Case Is = 250
           colonneChoix = 4
        Case Is = 300
           colonneChoix = 5
        Case Is = 400
           colonneChoix = 6
        Case Is = 500
           colonneChoix = 7
        Case Is = 600
           colonneChoix = 8
        Case Is = 700
           colonneChoix = 9
        Case Is = 800
           colonneChoix = 10
        Case Is = 900
           colonneChoix = 11
        End Select
     
    Application.ScreenUpdating = False
     
    While borneInferieure < 0
     
        If cotRisque < myRange.Cells(i, 1).Value Then
     
            borneInferieure = 0
            borneSuperieure = myRange.Cells(i, 1).Value
     
            calculPrime = myRange(i, colonneChoix)
     
        End If
     
        If cotRisque >= myRange.Cells(nbRows, 1).Value Then
     
            borneInferieure = myRange.Cells(nbRows, 1).Value
            borneSuperieure = myRange.Cells(nbRows, 1).Value
     
            calculPrime = myRange(nbRows, colonneChoix)
     
        End If
     
        If cotRisque >= myRange.Cells(i, 1).Value And cotRisque < myRange.Cells(i + 1, 1).Value Then
     
            borneInferieure = myRange.Cells(i, 1).Value
            borneSuperieure = myRange.Cells(i + 1, 1).Value
     
            txPrimeInferieur = myRange(i, colonneChoix)
            txPrimeSuperieur = myRange(i + 1, colonneChoix)
     
            calculPrime = txPrimeInferieur - ((cotRisque - borneInferieure) * (txPrimeInferieur - txPrimeSuperieur)) / (borneSuperieure - borneInferieure)
     
        End If
     
        i = i + 1
     
    Wend
     
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/08/2009, 15h01
  2. recuperation cellules fichiers excel fermes
    Par vbanovice dans le forum Excel
    Réponses: 1
    Dernier message: 26/06/2009, 15h19
  3. Réponses: 5
    Dernier message: 27/05/2008, 18h43
  4. [VBA-E]Importer des données de fichiers excel fermés
    Par bart64 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/04/2006, 11h35

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