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. #21
    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 ?
    Faut-il que je le précise dans le code?

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

    Ta variable Lig, depuis ta dernière grande modification, elle n'est plus initialisée.

    Modifie les CodeNames de tes feuilles, ça permet de les utiliser directement dans le code que ça allège grandement
    Nom : CodeName.png
Affichages : 117
Taille : 17,0 Ko

    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
    Sub ZoneTexte1New_Cliquer()
    Dim iCol As Integer
     
     
        wsInitiale.Range("B2:Z7").Copy wsInitialeOpti.Range("B2")
        wsActuelle.Range("B2:AA7").Copy wsActuelleOpti.Range("B2")
     
        With wsSolution
            For iCol = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Rows
                 If .Cells(8, iCol) = "Oui" Then
                    If .Cells(6, iCol).Value = "Coût moyen par site initial" Then
                            If .Cells(4, iCol) = "Situation Initiale" Then
                                wsInitialeOpti.Range("B7").Value = .Cells(3, iCol).Value
                            Else
                                wsActuelleOpti.Range("B7").Value = .Cells(3, iCol).Value
                            End If
                    ElseIf .Cells(4, iCol) = "Situation Initiale" Then
                    'On selectionne le bon onglet où affecter les modifications
                        wsInitialeOpti.Cells(lig, .Cells(5, iCol).Value + 2).Value = wsInitialeOpti.Cells(lig, .Cells(5, iCol).Value + 2).Value + .Cells(7, iCol).Value - .Cells(3, iCol).Value
                    Else
                        wsActuelleOpti.Cells(lig, .Cells(5, iCol).Value + 2).Value = wsActuelleOpti.Cells(lig, .Cells(5, iCol).Value + 2).Value + .Cells(7, iCol).Value - .Cells(3, iCol).Value
                    End If
                ElseIf Cells(8, iCol) = "Non" Then
                        MsgBox ("La solution " & iCol - 1 & " n'est pas retenue")
                End If
            Next iCol
        End With
    End Sub
    ++
    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

  3. #23
    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 Qwaz,

    J'ai renommé comme toi les feuilles et j'ai copié-coller ton code.
    En revanche, quand je lance le code j'ai le message d'erreur suivant qui apparaît. Est-ce un problème de version Excel: Nom : Capture.PNG
Affichages : 119
Taille : 22,4 Ko.

  4. #24
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    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 128
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For iCol = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column
    Mais ton problème ne saurait se résoudre sans définir Lig

    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

  5. #25
    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 Qwazerty Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For iCol = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column
    Mais ton problème ne saurait se résoudre sans définir Lig
    Je le définis à ce moment la le ligne().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function ligne()
        For i = 2 To 7 ' boucle a modifier si tu rajoute des coût ( ou tu peux parcourir toute ta colonne)
          If Cells(6, 2).Value = Worksheets("Situation Initiale").Cells(i, 1) Then
            ligne = i  'ici on récupère la coordonnée du Coût impacté
            End If
          Next
    End Function

  6. #26
    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
    Mets un Option Explicit avant ton premier Sub.
    Ca t'obligera à déclarer tes variables.
    A mon avis, ton erreur vient de lig : à moins que j'ai mal regardé, cette variable n'est ni déclarée, ni renseignée.

  7. #27
    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
    Mets un Option Explicit avant ton premier Sub.
    Ca t'obligera à déclarer tes variables.
    A mon avis, ton erreur vient de lig : à moins que j'ai mal regardé, cette variable n'est ni déclarée, ni renseignée.
    Effectivement, après avoir mis Option Explicit, on me dit variable non définie. Mais comment se fait la définition de cette variable?

    Merci d'avance pour cette réponse. Après cela je pense que ce sera bon.

  8. #28
    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
    Effectivement, après avoir mis Option Explicit, on me dit variable non définie. Mais comment se fait la définition de cette variable?
    De la même façon que la variable iCol.
    https://msdn.microsoft.com/fr-fr/VBA.../dim-statement

    Merci d'avance pour cette réponse. Après cela je pense que ce sera bon.
    C'est peu probable.
    Définir une variable, c'est bien. La renseigner, c'est mieux.
    Si lig est déclarée, ça reste une coquille vide qui a peu de chance de convenir comme paramètre de Cells.

  9. #29
    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
    De la même façon que la variable iCol.
    https://msdn.microsoft.com/fr-fr/VBA.../dim-statement


    C'est peu probable.
    Définir une variable, c'est bien. La renseigner, c'est mieux.
    Si lig est déclarée, ça reste une coquille vide qui a peu de chance de convenir comme paramètre de Cells.
    J'ai toujours une incompatibilité de type à cette ligne là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For iCol = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Rows
    Mais plus de message d'erreur sur le lig.

    Voici mon 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
    Option Explicit
    Function ligne()
        For i = 2 To 7 ' boucle a modifier si tu rajoute des coût ( ou tu peux parcourir toute ta colonne)
          If Cells(6, 2).Value = Worksheets("Situation Initiale").Cells(i, 1) Then
            ligne = i  'ici on récupère la coordonnée du Coût impacté
            End If
          Next
    End Function
    Sub ZoneTexte1_Cliquer()
    Dim iCol As Integer
     
        wsInitiale.Range("B2:Z7").Copy wsInitialeOpti.Range("B2")
        wsActuell.Range("B2:AA7").Copy wsActuelleOpti.Range("B2")
     
        With wsSolution
            For iCol = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Rows
                 If .Cells(8, iCol) = "Oui" Then
                    If .Cells(6, iCol).Value = "Coût moyen par site initial" Then
                            If .Cells(4, iCol) = "Situation Initiale" Then
                                wsInitialeOpti.Range("B7").Value = .Cells(3, iCol).Value
                            Else
                                wsActuelleOpti.Range("B7").Value = .Cells(3, iCol).Value
                            End If
                    ElseIf .Cells(4, iCol) = "Situation Initiale" Then
                    'On selectionne le bon onglet où affecter les modifications
                        wsInitialeOpti.Cells(ligne(), .Cells(5, iCol).Value + 2).Value = wsInitialeOpti.Cells(ligne(), .Cells(5, iCol).Value + 2).Value + .Cells(7, iCol).Value - .Cells(3, iCol).Value
                    Else
                        wsActuelleOpti.Cells(ligne(), .Cells(5, iCol).Value + 2).Value = wsActuelleOpti.Cells(ligne(), .Cells(5, iCol).Value + 2).Value + .Cells(7, iCol).Value - .Cells(3, iCol).Value
                    End If
                ElseIf Cells(8, iCol) = "Non" Then
                        MsgBox ("La solution " & iCol - 1 & " n'est pas retenue")
                End If
            Next iCol
        End With
    End Sub

  10. #30
    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 toujours une incompatibilité de type à cette ligne là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For iCol = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Rows
    Le "s" final.
    Rows fait référence à l'ensemble des lignes, pas au numéro de ligne.
    En plus, avec une recherche vers la gauche, ce n'est pas du numéro de ligne que tu as besoin mais du n° de colonne.

    PS : tu devrais prendre un peu plus que 5 min à chercher par toi-même avant de demander qu'on fasse ton travail.
    Parce que perso, ce jeu de ping-pong ne va pas tarder à ma gaver.

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

    Remonte et regarde le message #24, tu y trouveras la ligne corrigée... prend le temps de regarder les messages stp.

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

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

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

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