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 :

Erreur logique: compilation Code VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 20
    Par défaut Erreur logique: compilation Code VBA
    Bonjour,
    j'essaye vainement de faire fonctionner un petit programme VBA mais je tourne un peu en rond. Y aurait il une âme charitable sur ce forum pour m'aider à résoudre ce pb?
    le débogage se passe bien mais seulement rien ne s'affiche ensuite, c'est facheux:-(
    merci d'avance pour vos idées.
    ps: je joins la partie du code de la forme qui doit poser pb. je précise que la partie du code faisant appel au format se trouve bien dans un autre module.

    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
    '*******************************
    '*Function to update the result*
    '*******************************
    Private Sub MyUpdate()
        Dim TempResult, pin, Volume As Variant
        'We convert the entry data
        pin = CDblOrNull(PinBox.Value)
        Volume = CDblOrNull(VolumeBox.Value)
     
        'We check if all the data are available
        TempResult = ConnectorCost(pin, Volume, Platingbox.Value, "TYCO")
        If IsNull(TempResult) Then
            LabTYCO.Caption = ""
            LabMOLEX.Caption = ""
            LabACS.Caption = ""
            LabJST.Caption = ""
            LabFCI.Caption = ""
            LabECAFACT.Caption = ""
            LabAVERAGE.Caption = ""
     
        Else
            TempResult = ConnectorCost(pin, Volume, Platingbox.Value, "TYCO")
            LabTYCO.Caption = CStr(Round(TempResult, 2))
            TempResult = ConnectorCost(pin, Volume, Platingbox.Value, "MOLEX")
            LabMOLEX.Caption = CStr(Round(TempResult, 2))
            TempResult = ConnectorCost(pin, Volume, Platingbox.Value, "ACS")
            LabACS.Caption = CStr(Round(TempResult, 2))
            TempResult = ConnectorCost(pin, Volume, Platingbox.Value, "JST")
            LabJST.Caption = CStr(Round(TempResult, 2))
            TempResult = ConnectorCost(pin, Volume, Platingbox.Value, "FCI")
            LabFCI.Caption = CStr(Round(TempResult, 2))
            TempResult = ConnectorCost(pin, Volume, Platingbox.Value, "ECAFACT")
            LabECAFACT.Caption = CStr(Round(TempResult, 2))
            TempResult = Application.WorksheetFunction.Average(CDblOrNull(LabTYCO.Caption), CDblOrNull(LabMOLEX.Caption), CDblOrNull(LabACS.Caption), CDblOrNull(LabJST.Caption), CDblOrNull(LabFCI.Caption), CDblOrNull(LabECAFACT.Caption))
            LabAVERAGE.Caption = CStr(Round(TempResult, 2))
        End If
    End Sub
    '*************************************************
    '*Functions to update the result in case of event*
    '*************************************************
    Private Sub PinBox_Change()
        Call MyUpdate
    End Sub
    Private Sub VolumeBox_Change()
        Call MyUpdate
    End Sub
    Private Sub PlatingBox_Change()
        Call MyUpdate
    End Sub
    '******************************************
    '*Function to calculate the connector cost*
    '******************************************
    Private Function ConnectorCost(ByVal pin, ByVal Volume, ByVal Plating, ByVal Supplier) As Variant
        Dim CoefSupplier, CoefVolume, AdderPlating, AdderY, AdderX, VolumeTemp, pin_nb As Variant
     
       On Error GoTo ErrorTag
     
        If IsNull(pin) Or (pin = 0) Or IsNull(Volume) Or (Volume = 0) Or _
            (Plating = "") Or (Supplier = "") Then
            GoTo ErrorTag
        End If
    'pin_nb = pin
     
        If Supplier = "TYCO" Then
            CoefSupplier = 1.02
        ElseIf Supplier = "MOLEX" Then
            CoefSupplier = 1.29
        ElseIf Supplier = "JST" Then
            CoefSupplier = 0.65
        ElseIf Supplier = "ACS" Then
            CoefSupplier = 0.5
        ElseIf Supplier = "FCI" Then
            CoefSupplier = 1.1
        ElseIf Supplier = "ECAFACT" Then
            CoefSupplier = 2.5
        Else
            CoefSupplier = 0
        End If
     
        If Supplier = "TYCO" Then
            AdderY = 0.0891
        ElseIf Supplier = "MOLEX" Then
            AdderY = 0.0962
        ElseIf Supplier = "JST" Then
            AdderY = 0.0917
        ElseIf Supplier = "ACS" Then
            AdderY = 0.1297
        ElseIf Supplier = "FCI" Then
            AdderY = 0.0941
        ElseIf Supplier = "ECAFACT" Then
            AdderY = 0.1531
        Else
            AdderY = 0
        End If
     
      If Supplier = "TYCO" Then
            AdderX = 0.0148
        ElseIf Supplier = "MOLEX" Then
            AdderX = 0.0198
        ElseIf Supplier = "JST" Then
            AdderX = 0.0074
        ElseIf Supplier = "ACS" Then
            AdderX = 0.0029
        ElseIf Supplier = "FCI" Then
            AdderX = 0.0164
        ElseIf Supplier = "ECAFACT" Then
            AdderX = 0.0436
        Else
            AdderX = 0
        End If
     
        If Plating = "Gold" Then
            AdderPlating = 0.1
        Else
            AdderPlating = 0
        End If
     
       VolumeTemp = Volume * pin
     
        If VolumeTemp < 25000 Then
            CoefVolume = 1.08
        ElseIf (VolumeTemp >= 25000) And (VolumeTemp <= 100000) Then
            CoefVolume = 1.02
        ElseIf (VolumeTemp > 100000) And (VolumeTemp < 500000) Then
            CoefVolume = 0.97
        ElseIf (VolumeTemp >= 500000) And (VolumeTemp < 1000000) Then
            CoefVolume = 0.94
        ElseIf (VolumeTemp >= 1000000) Then
            CoefVolume = 0.85
        Else
            CoefVolume = 1
            End If
     
        ConnectorCost = CoefSupplier * CoefVolume * (pin * AdderX + AdderY) + AdderPlating
    ErrorTag:
          ConnectorCost = Null
     Exit Function
     
    End Function

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Comme on ne sait pas ce que ton code doit faire, ça va être difficile de trouver la faille. Tu devrais l'exécuter ligne à ligne avec la touche F8.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 20
    Par défaut infos complémentaires erreur logique code VBA
    Bonjour,
    En effet j'ai omis de vous dire ce que je souhaitais faire..
    il s'agit de calculer un coût par une formule "connectorcost" avec comme variables d'entrée, le nombre de pin ou broches de ce connecteur, le volume annuel consommé et la finition " plating". Le résultat doit s'afficher directement apres saisie des 3 variables, et ce pour chacune des entités "TYCO", "MOLEX" etc déclarées dans le code ,en euro.
    j'espère avoir été assez concis.
    Merci pour vos réponses.

    Cordialement,

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

Discussions similaires

  1. [AC-2003] compilation code vba
    Par munity dans le forum VBA Access
    Réponses: 14
    Dernier message: 09/06/2009, 17h09
  2. [XL-2003] Aide pour erreur dans un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/05/2009, 07h48
  3. erreur dans le code vba
    Par jihad33 dans le forum VBA Access
    Réponses: 5
    Dernier message: 03/01/2008, 14h00
  4. Erreur dans un code VBA
    Par steevassie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/12/2007, 20h26
  5. EXCEL/ VBA Erreur sur le code VBA : rediriger l’erreur
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/12/2006, 16h28

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