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

  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.

  7. #7
    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
    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.
    J'ia fais exactement comme indiqué donc merci mais je n'ai pas besoin de tes jugements. Je demande de l'aide gentillement et si c'est pour me faire juger plutôt que de recevoir de l'aide je t'en remercie. Nous sommes pas tous aussi doué en code que toi et du coup j'ai compté les 7 répétitions et je suis tombé sur le if que je t'ai indiqué.

    Comme il t'a été dit plusieurs fois, beaucoup de participants à ce forum n'ouvrent pas les fichiers joints.
    C'est pour cela qu'en plus des pièces jointes j'ai mis les photos et le code pour essayer d'avoir plus facilement de l'aide.

    Donc, si tu espères que quelqu'un fasse ce que tu te refuses à faire, je pense que cette "urgence" va prendre du temps...
    Je l'ai fais mais je ne connais pas assez le VBA pour être sur de ce que je dis.


    Si tu avais fait tourné le code en pas-à-pas, tu aurais vu pourquoi il passe plusieurs fois sur cette ligne.
    Même remarque que précédemment. Il passe plusieurs fois sur cette ligne selon moi à cause du J mais je ne sais pas pourquoi et comment corriger cette erreur.

    Merci de ton aide.

  8. #8
    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
    Il passe plusieurs fois sur cette ligne selon moi à cause du J mais je ne sais pas pourquoi
    C'est généralement ce qui se produit quand on fait une boucle For To.

  9. #9
    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
    C'est généralement ce qui se produit quand on fait une boucle For To.
    Je t'avoue être perdu du coup et ne plus savoir quoi faire du tout pour régler mon cas. merci pour ton aide...

  10. #10
    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
    Après réflexion, et du à ma partie de code en copier coller j'ai pu grandement simplifié mon code. En revanche, il ne tolère pas cette ligne la: Pourriez-vous m'aider à comprendre pourquoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    J'ai bien vérifié tout les noms des fiches mais je ne comprends pas pourquoi il ne l'accepte pas lorsque je lance le code.

    Voici mon nouveau code complet:
    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
    Sub ZoneTexte1_Cliquer()
    Dim i As Integer
        Sheets("Situation Initiale").Select
        Range("B2:Z7").Select
        Selection.Copy
        Sheets("Situation initiale optimisée").Select
        Range("B2").Select
        ActiveSheet.Paste
        Sheets("Situation Actuelle").Select
        Range("B2:AA7").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Situation actuelle optimisée").Select
        Range("B2").Select
        ActiveSheet.Paste
        Sheets("Solutions").Select
    For i = 2 To 20
         If Cells(8, i) = "Oui" Then
            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("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(8, i) = "Non" Then
                MsgBox ("La solution " & i - 1 & " n'est pas retenue")
        Else
        End If
    Next i
    End Sub

  11. #11
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    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 122
    Par défaut
    Salut

    Il faut impérativement retravailler ton code pour supprimer tous les Select, ça va réduire le code d'1/3.

    Attention aussi au Cells() qui trainent sans précision de la feuille sur laquelle ils sont pris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(lig, Cells(5, i).Value + 2).Value
    le numéro de la colonne serait contenu dans une cellule de l'onglet actif en ligne 5, contenu auquel tu ajoute 2 ? Je ne comprends pas trop.

    ++
    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

  12. #12
    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
    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
    Sub ZoneTexte1_Cliquer()
    Dim i As Integer
        Sheets("Situation Initiale").Select
        Range("B2:Z7").Select
        Selection.Copy
        Sheets("Situation initiale optimisée").Select
        Range("B2").Select
        ActiveSheet.Paste
        Sheets("Situation Actuelle").Select
        Range("B2:AA7").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Situation actuelle optimisée").Select
        Range("B2").Select
        ActiveSheet.Paste
        Sheets("Solutions").Select
    For i = 2 To 20
         If Cells(8, i) = "Oui" Then
            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("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(8, i) = "Non" Then
                MsgBox ("La solution " & i - 1 & " n'est pas retenue")
        Else
        End If
    Next i
    End Sub
    Hello Qwazerty,

    Voici mon code avec les balises. même si je suis pas sur de ce que j'ai fais. Je suis pas expert en code et la première partie je l'ai fais en faisant enregistrer une macro directement. D'où le code.

    J'ajoute 2 à la colonne si tu veux car on dis année 0 mais cette valeur pour avoir la bonne colonne, il faut faire l'année 0 +1 car ya pas de colonne 0 et + 1 car le 1er colonne ce sont les titres.

    J'espère t'avoir permi de mieux comprendre. mais mon problème est vraiment sur la ligne identifié avant.

  13. #13
    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
    En revanche, il ne tolère pas cette ligne la: Pourriez-vous m'aider à comprendre pourquoi?
    Que veux-tu dire par "ne tolère pas" ?
    Il te marque une erreur "ligne rouge" à la saisie ?
    Il génère un message d'erreur à l'exécution ? Quel message ?
    Il ne fait pas le résultat souhaité ? Qu'est-ce qui est souhaité ? Qu'est-ce qui est obtenu ?

  14. #14
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    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 122
    Par défaut
    [Grillé]... de quelques milisecondes![/Grillé]
    En revanche, il ne tolère pas cette ligne la
    Un message d'erreur peut-être à nous transmettre?

    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

  15. #15
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    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 122
    Par défaut
    Et j'insiste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Situation initiale optimisée").Cells(lig, Cells(5, i).Value + 2).Value
    Si ta feuille active est "Solution" par exemple, ton code correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Situation initiale optimisée").Cells(lig, Worksheets("Solution").Cells(5, i).Value + 2).Value
    il faut préciser sur quelle feuille tu va chercher Cells(5, i).Value

    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

  16. #16
    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
    Que veux-tu dire par "ne tolère pas" ?
    Il te marque une erreur "ligne rouge" à la saisie ?
    Il génère un message d'erreur à l'exécution ? Quel message ?
    Il ne fait pas le résultat souhaité ? Qu'est-ce qui est souhaité ? Qu'est-ce qui est obtenu ?
    Voila ce que ca m'affiche pour être précis. Je lance la macro et ça m'affiche cette fenêtre. Lorsque je clique sur débug, ça me met en surligné la ligne suivante: Nom : Capture.PNG
Affichages : 245
Taille : 19,4 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     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

  17. #17
    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
    Parce que ça pique les yeux, toute la partie qui précède ton premier For peut se résumer à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sheets("Situation Initiale").Range("B2:Z7").Copy Sheets("Situation initiale optimisée").Range("B2").
        Sheets("Situation Actuelle").Range("B2:AA7").Copy Sheets("Situation actuelle optimisée").Range("B2").
        Sheets("Solutions").Select
    Et le dernier Else est à supprimer.
    Ou, plus exactement, il faudrait remplacer le dernier ElseIf par un simple Else et supprimer le Else existant.
    (à moins qu'il y ait une autre réponse possible que Oui ou Non).

  18. #18
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     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
    A quel onglet appartient Cells(5, i) dans laquelle tu prends la valeur de colonne ?

  19. #19
    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
    Parce que ça pique les yeux, toute la partie qui précède ton premier For peut se résumer à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sheets("Situation Initiale").Range("B2:Z7").Copy Sheets("Situation initiale optimisée").Range("B2").
        Sheets("Situation Actuelle").Range("B2:AA7").Copy Sheets("Situation actuelle optimisée").Range("B2").
        Sheets("Solutions").Select
    Merci pour ces conseils je viens de faire les modifications du coup.

  20. #20
    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
    A quel onglet appartient Cells(5, i) dans laquelle tu prends la valeur de colonne ?
    Cells(5,i) appartient à l'onglet Solutions normalement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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