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 :

Pb macro definition de nom de cellule si condition respectee [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut Pb macro definition de nom de cellule si condition respectee
    J ai fait une macro pour definir un nom a une cellule (TARGET) si la cellule de la ligne du dessous est a 0 (puis fait un goalseek sur la valeur contenue dans cette cellule mais ca, cela fonctionne bien dans la macro).
    J ai une boucle infinie qui m oblige a stopper excel et je ne comprend pas pourquoi.....
    Une ame charitable verrait elle l erreur que j ai fait ?
    Merci

    Voici la macro:

    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
     
    Sub Set_min_lease_ratio()
     
        Dim sh As Worksheet
        Dim icol As Integer 'Compteur de ligne
     
        With Sheets("Finlease")
        Set sh = Worksheets("Finlease")
        'Initialise à la première ligne de données.
        icol = 10    'Definition la premières ligne de données .
     
        'Boucle verticale exécutant le code tant que que la cellule est diff de 0.
        While sh.Cells(icol, 2) <> "0"
     
            'controle si cell suivante est 0
            If sh.Cells(icol + 1, 2) = "0" Then
            .Names.Add Name:="TARGET", RefersTo:=.Range(Cells(icol, 6), Cells(icol, 6))
     
            Else
     
                'Augmente le compteur de ligne.
                icol = icol + 1
     
            End If
        Wend
     
        Range("FinLeaseSwitch") = 0
     
            Range("NBV_atendPPA").Copy
            Range("NBV_atendPPA_Copy").PasteSpecial xlPasteValues
     
            Range("TARGET").GoalSeek Goal:=Range("NBV_atendPPA_Copy"), ChangingCell:=Range("MIN_LEASE_RATIO")
     
        Range("FinLeaseSwitch") = 1
     
      End With
     
    End Sub
    Et la plage de cellule correspondante (copie ecran en jpeg):
    Nom : excel issue.JPG
Affichages : 166
Taille : 61,6 Ko

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Essaie avec cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While sh.Cells(icol, 2).Value <> 0

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    J avais corrige cette erreur de synthaxe sans remettre a jour la copie de code. Mon probleme est sur la boucle infinie qui m oblige a stopper la macro.

  4. #4
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Re,
    J'ai d'abord cru que c'était cette syntaxe qui causait la boucle infinie, car il n'était pas sur que la valeur 0 soit bien identifiée comme "0".
    Le problème est qu'une fois arrivé sur la ligne qui précède le 0, le nom est défini mais le compteur ne bouge pas... on reste donc indéfiniment sur cette ligne.
    Pour sortir de la boucle, je coderais comme ça :
    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
    Sub Set_min_lease_ratio()
     
        Dim sh As Worksheet
        Dim icol As Integer 'Compteur de ligne
     
        Set sh = Worksheets("Finlease")
        With sh
            'Initialise à la première ligne de données.
            icol = 10    'Definition la premières ligne de données .
     
            'Boucle verticale exécutant le code tant que que la cellule est diff de 0.
            While .Cells(icol, 2) <> "0"
                'controle si cell suivante est 0
                If .Cells(icol + 1, 2) = "0" Then
                    .Names.Add Name:="TARGET", RefersTo:=.Range(Cells(icol, 6), Cells(icol, 6))
                End If
                'Augmente le compteur de ligne.
                icol = icol + 1
            Wend
     
            Range("FinLeaseSwitch") = 0
     
            Range("NBV_atendPPA").Copy
            Range("NBV_atendPPA_Copy").PasteSpecial xlPasteValues
     
            Range("TARGET").GoalSeek Goal:=Range("NBV_atendPPA_Copy"), ChangingCell:=Range("MIN_LEASE_RATIO")
     
            Range("FinLeaseSwitch") = 1
     
        End With
     
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    ca a l air de marcher merci beaucoup pour la solution

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

Discussions similaires

  1. Sauvegarde classeur excel selon nom de cellule à la fin de la macro
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 16/01/2012, 11h25
  2. [XL-2003] Utilisation de nom de cellule dans la formule d'une macro
    Par Armandito dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/07/2009, 17h22
  3. Macro: attribuer un nom a un ensemble de cellules
    Par edonist dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/06/2008, 19h56
  4. [VBA-E]attribution d'un nom à une cellule
    Par capedam dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/02/2006, 05h22
  5. Réponses: 1
    Dernier message: 07/01/2006, 23h33

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