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 :

Une fonction sous Excel 2007 ne fonctionne pas sous Excel 2003


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut Une fonction sous Excel 2007 ne fonctionne pas sous Excel 2003
    J ai écrit un fonction en vba sous excel 2007

    Je réecrit la meme chose sur un poste equipé excel 2003

    Ca ne marche pas!!!!

    le soft a changé mais pas le language!!

    Quelqu'un aurait il une idée?
    JE devient fou
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Essaye à l'avenir de mettre un titre plus explicit.

    Montre nous la fonction, car nous ne sommes pas des devins.

    Starec

  3. #3
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut le code
    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
    Sub Bouton1085_Clic()
     
    On Error GoTo Err
     
    Dim Limite        As Integer
    Dim debut         As Integer
    Dim i             As Integer
    Dim DRE_T           As Double
    Dim SHL_T           As Double
    Dim CBA_T          As Double
    Dim AGA_T          As Double
    Dim SMA_T           As Double
    Dim CMA_T           As Double
    Dim FV      As Double
    Dim KMS      As Double
     
    debut = InputBox("A partir de quelle ligne voulez calculer les montants?")
    Limite = InputBox("Jusqu'à quelle ligne voulez calculer les montants?")
     
        For i = debut To Limite
     
            Select Case (Cells(i, "v").Value)
              Case ("OLD")
                DRE_T = 77.57
                SHL_T = 56.99
                CBA_T = 56.99
                AGA_T = 71.27
                SMA_T = 35.72
                CMA_T = 30.11
                FV = 17
                KMS = 0.45
              Case ("NEW")
                DRE_T = 76.55
                SHL_T = 56.36
                 CBA_T = 56.36
                AGA_T = 70.16
                SMA_T = 34.07
                CMA_T = 28.38
                 FV = 18
                KMS = 0.48
              Case (Default)
                MsgBox "La case Nouveau Contrat n'existe pas ou n'est pas renseigné!\n Voulez-vous le renseigner?", vbCritical = vbYesNo, "attention"
            End Select
     
            'DRE
            If Cells(i, "c").Value = "DRE" Then
                Cells(i, "y").Value = (Cells(i, "m").Value * DRE_T) + (Cells(i, "n").Value * FV) + (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
            End If
            'SHL
            If Cells(i, "c").Value = "SHL" Then
                Cells(i, "y").Value = (Cells(i, "m").Value * SHL_T) + (Cells(i, "n").Value * FV) + (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
            End If
            'CBA
            If Cells(i, "c").Value = "CBA" Then
                Cells(i, "y").Value = (Cells(i, "m").Value * CBA_T) + (Cells(i, "n").Value * FV) + (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
            End If
            'AGA
            If Cells(i, "c").Value = "AGA" Then
                Cells(i, "y").Value = (Cells(i, "m").Value * AGA_T) + (Cells(i, "n").Value * FV) + (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
            End If
            'SMA
            If Cells(i, "c").Value = "SMA" Then
                Cells(i, "y").Value = (Cells(i, "m").Value * SMA_T) + (Cells(i, "n").Value * FV) + (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
            End If
            'CMA
            If Cells(i, "c").Value = "CMA" Then
                Cells(i, "y").Value = (Cells(i, "m").Value * CMA_T) + (Cells(i, "n").Value * FV) + (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
            End If
        Next i
     
    Err:
    'Gére les erreurs
    Select Case Err.Number
     
      Case Else: MsgBox "Erreur in !"
    End Select
     
    End Sub
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Quel est l'erreur et où.

    Starec

  5. #5
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Ce code fonctionne parfaitement sur mon poste (excel 2007) mais pas sur celui de ma collègue à qui il devrait servir...(excel 2003)

    Sur son poste il n'execute pas le calcul pour "DRE" et "CMA"

    mais aucun erreur spécifier d'ou mon incompréhension
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    As-tu inclus ton code dans un autre fichier, ou est-ce avec le même ouvert sous 2003 ?

    Starec

  7. #7
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Je n 'ai pas réessayé depuis que je fais une chose :
    j ai modifier mes variables elle se nommait :
    DRE
    CMA
    AGA...
    comme les chaines de caractères, j ai donc ajouté un _T pour les dissocier meme si je pense que le problème vienne de là.

    Je l ai inclu dans un autre fichier
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Contrôle entre tes deux fichiers si DRE, CMA, etc... sont écrits de la même maniére, et le format des cellules.

    Starec

  9. #9
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Niveau syntaxe pas de problème, j'ai regardé et re_regardé

    par contre, je n ai pas regardé le format de la cellule, mais il y avait bien ecrit CMA...

    je dois revoir son fichier sur le temps du midi, je reposterai après pour annoncer l'avancement du problème.

    Merci de t'etre pencher sur le pb!
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  10. #10
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Problème non résolu

    Sur certaine variables comme CMA principalement le calcul ne s'effectue pas, donc je crois pas que se soit un problème de compatibilté mais plutot de code :

    Voici le dernier code :

    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
    Sub Bouton1085_Clic()
     
    On Error GoTo Err
     
    Dim Limite  As Integer
    Dim debut As Integer
    Dim i As Integer
    Dim DRE_T As Double
    Dim SHL_T As Double
    Dim CBA_T As Double
    Dim AGA_T As Double
    Dim SMA_T As Double
    Dim CMA_T As Double
    Dim FV As Double
    Dim KMS As Double
     
    KMS = 0
    FV = 0
     
    debut = InputBox("A partir de quelle ligne voulez calculer les montants?")
    Limite = InputBox("Jusqu'à quelle ligne voulez calculer les montants?")
     
        For i = debut To Limite
     
            Select Case (Cells(i, "v").Value)
              Case ("OLD")
                DRE_T = 77.57
                SHL_T = 56.99
                CBA_T = 56.99
                AGA_T = 71.27
                SMA_T = 35.72
                CMA_T = 30.11
                FV = 17
                KMS = 0.45
              Case ("NEW")
                DRE_T = 76.55
                SHL_T = 56.36
                CBA_T = 56.36
                AGA_T = 70.16
                SMA_T = 34.07
                CMA_T = 28.38
                FV = 18
                KMS = 0.48
              Case (Default)
                MsgBox "La case Nouveau Contrat n'existe pas ou n'est pas renseigné!\n Voulez-vous le renseigner?", _
                        vbCritical = vbYesNo, "attention"
            End Select
     
            Select Case (Cells(i, "c").Value)
              'DRE
              Case ("DRE")
                Cells(i, "af").Value = (Cells(i, "m").Value * DRE_T) + (Cells(i, "n").Value * FV) + _
                    (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
     
              'SHL
              Case ("SHL")
                Cells(i, "Af").Value = (Cells(i, "m").Value * SHL_T) + (Cells(i, "n").Value * FV) + _
                    (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
     
              'CBA
              Case ("CBA")
                Cells(i, "af").Value = (Cells(i, "m").Value * CBA_T) + (Cells(i, "n").Value * FV) + _
                    (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
     
              'AGA
              Case ("AGA")
                Cells(i, "af").Value = (Cells(i, "m").Value * AGA_T) + (Cells(i, "n").Value * FV) + _
                    (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
     
              'SMA
              Case ("SMA")
                Cells(i, "af").Value = (Cells(i, "m").Value * SMA_T) + (Cells(i, "n").Value * FV) + _
                    (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
     
              'CMA
              Case ("CMA")
                Cells(i, "af").Value = (Cells(i, "m").Value * CMA_T) + (Cells(i, "n").Value * FV) + _
                    (Cells(i, "o").Value * KMS) + Cells(i, "p").Value
     
              Case (Default)
                MsgBox "pb Abrév?", vbCritical = vbYesNo, "attention"
     
            End Select
        Next i
     
    Err:
     Select Case Err.Number
     
        Case Default
                MsgBox "ERREUR INCONNU"
     
    End Select
     
    End Sub
    quand il ne marche pas sur une ligne, il me renvoie erreur inconnu quand je gere les erreurs, sinon il n'affiche rien....
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  11. #11
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Apres avoir mis des msgbox partout pour voir un peu ce qu'il se passait, je me suis rendu compte que ca marche sans souci jusqu au 2em select case (jusque la mes variable sont toutes pleines et avec les valeurs souhaitées.)

    Mais apres il a l'air de ne meme pas passer dans le case et il me jette direct a la sorti --> erreur inconu.


    Si jamais faites moi signe, j abandonne pour ce soir...
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  12. #12
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bonjour
    A première vue, pas d'incohérence dans ton code
    Si tu peux me donner ton fichier (je suis en Excel 2000) je regarderais
    Slts
    Denis

  13. #13
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Pour commencer, Case (Default) dans un Select Case, ça n'existe pas en VB. Les séquence d'échappement \n dans une chaîne de caractères non plus.

    Il faut mettre
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "première ligne" & vbcrlf & "deuxième ligne"
    si tu veux une boîte de message avec réponse de l'utilisateur, tu dois déclarer une variable de type Integer pour recevoir la réponse. Et tu ne peux pas mettre vbCritical = vbyesno. Ça ne marchera pas. C'est un opérateur + qui va là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Reponse As Integer
    Reponse = MsgBox("La case 'Nouveau Contrat' n'existe pas ou n'est pas renseignée !" & _
    vbcrlf & "Voulez-vous le renseigner?", vbCritical + vbYesNo, "Attention")
    Comme tu peux le voir, comme le MsgBox retourne une valeur (puisque c'est une fonction), il faut mettre les parenthèses et affecter le résultat retourné à une variable. Sinon, impossible de savoir sur quel bouton l'utilisateur a cliqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Reponse = vbYes then
        ' on fait ceci
      Else
        ' on fait cela
    End If
    Je n'ai pas trop examiné le reste. Pour l'instant, corrige ce que j'ai indiqué et on verra pour la suite.

  14. #14
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut Bizar, Bizar
    Tout d'abord merci pour votre aide.

    Mais je crois avoir trouvé le problème, enfin je comprend pas pourquoi mais je sais que le problème vient de là...

    La cellule où sont noté les SMA... doit parfois être "corrompu" car après analyse poussée via message box etc...
    Je me rend compte qu'il prend bien la valeur mais qui ne passe pas dans le case. Apres le message de Zaza, j'aurai dit que c'etait un problème de syntaxe du code. Mais apparament non puisque les calculs se font correctement pour les autres (même si quelques problème syntaxique subsiste). J'ai bien évidament regardé la syntaxe et les proproèté cellule et texte : identique aux autres (qui fonctionnent...)

    Enfin, c'est a ni rien comprendre, toujours est-il que quand elle tape à la main dans la case "SMA" ou "DRE"... miracle ca marche...

    Donc elle n'aura qu'a les taper à la main et puis c'est tout
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Espace avant ou après la chaîne...

    Essaye avec Trim(), ça devrait résoudre ce genre de bug.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. [AC-2007] CpteDom ne fonctionne pas sous access 2007 + WDS 7
    Par JacPapa74 dans le forum Access
    Réponses: 3
    Dernier message: 30/10/2013, 23h07
  2. Macro de tableau croisé dynamique ne fonctionne pas avec excel 2007
    Par Sherman750 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/10/2012, 22h42
  3. Fonction ok sous ie6 mais ne fonctionne pas sous firefox
    Par batchi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/10/2010, 14h34
  4. Atteindre une fonction avec CTRL + Clic ne fonctionne pas
    Par DaYonyon dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 18/03/2010, 14h40
  5. Mes codes VBA ne fonctionnent pas sous access 2007
    Par ralfus dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/11/2008, 11h36

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