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 :

Correction de Code.


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
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 66
    Par défaut Correction de Code.
    Bonjour,

    Je me permets de vous demander de l'aide car j'ai créé une macro excel qui test l'effet de solutions sur un projet. Or, je ne sais pas pourquoi mais la quand je sélectionne toutes les solutions, le levier 6 et 7 ne sont pas pris en compte. On le voit car les gains sur le coût de possession sont les mêmes si l'on les sélectionne ou non.
    Pourriez-vous m'aider à me dire pourquoi c'est le cas? Je vous mets mon fichier en pièces jointes sachant que les onglets concernés sont situation actuelle optimisé, situation actuelle et solutions.
    Le code se situe dans l'onglet développeur dans le module 2.

    je vous remercie pour votre aide.

    Cordialement,

    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
    Ce n'est pas les photos les plus récentes mais c'est le même principe et voila le code en question:
    For i = 2 To 20
        If Cells(8, i) = "Oui" Then
     
            lig = ligne() ' voir dans module1
            'on selectionne ici l'onglet qui est contenue dans B4 au coordonnées voulu
            'Cas où on étudie le premier levier
            If i = 2 Then
             'Cas où l'on étudie l'on fait varier le Coût moyen par site
                If Cells(6, i).Value = "Coût moyen par site initial" Then
                    If Cells(4, i) = "Situation Initiale" Then
                        Worksheets("Situation initiale optimisée").Cells(7, 2).Value = Worksheets("Solutions").Cells(3, i).Value
                        Else
                        Worksheets("Situation actuelle optimisée").Cells(7, 2).Value = Worksheets("Solutions").Cells(3, i).Value
                    End If
            ElseIf Cells(4, i) = "Situation Initiale" Then
            'On selectionne le bon onglet où affecter les modifications
                Worksheets("Situation initiale optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets(Cells(4, i).Value).Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
                Else
                Worksheets("Situation actuelle optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets(Cells(4, i).Value).Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
            End If
     
            'Cas où l'on étudie les autres leviers
            Else: For j = 2 To (i - 1)
           'Cas où l'on étudie l'on fait varier le Coût moyen par site
                If Cells(6, i).Value = "Coût moyen par site initial" Then
                    If Cells(4, i) = "Situation Initiale" Then
                        Worksheets("Situation initiale optimisée").Cells(7, 2).Value = Worksheets("Solutions").Cells(3, i).Value
                        Else
                        Worksheets("Situation actuelle optimisée").Cells(7, 2).Value = Worksheets("Solutions").Cells(3, i).Value
                    End If
                ElseIf Cells(5, j).Value = Cells(5, i).Value Then
                    If Cells(6, j).Value = Cells(6, i).Value Then
                        If Cells(4, i) = "Situation Initiale" Then
            'Cas où il existe déjà une modification sur cette cellule
                Worksheets("Situation initiale optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets("Situation initiale optimisée").Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
                        Else
                Worksheets("Situation actuelle optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets("Situation actuelle optimisée").Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
                        End If
                        ElseIf Cells(4, i) = "Situation Initiale" Then
     
            'Cas où l'on ne retrouve que la même période impacté
                Worksheets("Situation initiale optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets(Cells(4, i).Value).Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
                    Else
                Worksheets("Situation actuelle optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets(Cells(4, i).Value).Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
                    End If
                ElseIf Cells(4, i) = "Situation Initiale" Then
     
            'Cas où aucune des informations ne sont les mêmes
                Worksheets("Situation initiale optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets(Cells(4, i).Value).Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
                Else
                Worksheets("Situation actuelle optimisée").Cells(lig, Cells(5, i).Value + 2).Value = Worksheets(Cells(4, i).Value).Cells(lig, Cells(5, i).Value + 2).Value + Worksheets("Solutions").Cells(7, i).Value - Worksheets("Solutions").Cells(3, i).Value
                End If
        Next j
                End If
        ElseIf Cells(8, i) = "Non" Then
                MsgBox ("La solution " & i - 1 & " n'est pas retenue")
        Else
        End If
    Next i
    End Sub
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il serait peut-être intéressant de mettre quelques Debug.Print à des endroits stratégiques de ton code pour vérifier par quels endroits passe l'exécution.
    Par exemple au début de chaque For To en demandant l'affichage de la variable et des valeurs qui vont être testées dans les If suivants.

    Si ça ne suffit pas, tu peux essayer de faire tourner ton code en pas-à-pas avec la fenêtre de variable locales ouverte pour regarder évoluer la valeur des variables en regardant par où passe l'exécution.

    Bref, du travail de débugage classique.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 66
    Par défaut
    Bonjour,

    Tout d'abord merci pour ton aide mais j'ai déjà essayé de débogué sans réussite. Et je n'ai pas réussi à trouver mon problème.

    Cordialement,

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par lebouscat Voir le message
    j'ai déjà essayé de débogué sans réussite. Et je n'ai pas réussi à trouver mon problème.
    Tu veux dire que tu as fait tourner en pas-à-pas sans voir ce qui se passe quand i atteint 7 ???

    Par quel If/Else If passe l'exécution avec i=7 ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 66
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Tu veux dire que tu as fait tourner en pas-à-pas sans voir ce qui se passe quand i atteint 7 ???

    Par quel If/Else If passe l'exécution avec i=7 ?
    D'après ce que j'ia vu ça va dans le cas où aucune n'est pareil que celui-ci. Si je ne me trompe pas.

    Cordialement,

    Mais au délà du fait que ca ne compte pas les leviers 6 et 7 je ne comprends pas non plus pourquoi sa écrit plusieurs fois sur la ligne Cout CDP est-ce car il réalisé plusieurs fois l'opération à cause de mon j?

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par lebouscat Voir le message
    D'après ce que j'ia vu ça va dans le cas où aucune n'est pareil que celui-ci. Si je ne me trompe pas.
    Si tu avais fais comme j'ai indiqué, tu en serais sûr.
    Mais j'ai l'impression que tu n'as pas envie d'être très actif dans la résolution de ce problème.

    Comme il t'a été dit plusieurs fois, beaucoup de participants à ce forum n'ouvrent pas les fichiers joints.
    Donc, si tu espères que quelqu'un fasse ce que tu te refuses à faire, je pense que cette "urgence" va prendre du temps...

    Mais au délà du fait que ca ne compte pas les leviers 6 et 7 je ne comprends pas non plus pourquoi sa écrit plusieurs fois sur la ligne Cout CDP est-ce car il réalisé plusieurs fois l'opération à cause de mon j?
    Si tu avais fait tourné le code en pas-à-pas, tu aurais vu pourquoi il passe plusieurs fois sur cette ligne.

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

Discussions similaires

  1. correction du code
    Par fraisa1985 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/07/2008, 15h55
  2. Correction du code
    Par punisher999 dans le forum Langage
    Réponses: 8
    Dernier message: 28/01/2007, 21h26

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