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 :

Boucle ne s’arrête pas à la condition voulue


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut Boucle ne s’arrête pas à la condition voulue
    Bonjour au forum,
    J'ai créé du code pour générer une courbe d'avancement, je compare des données planifiées à des données réelles
    Si mon projet prend du retard j'aurai des données Réelles qui s'afficherons plus tard, comme ceci :

    Nom : Situation de départ.jpg
Affichages : 442
Taille : 66,7 Ko

    Je souhaite obtenir ceci

    Nom : Résultat Souhaité.jpg
Affichages : 351
Taille : 81,4 Ko

    Pour y parvenir j'ai créé ces quelques lignes :

    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
    Do Until Col.Offset(8, j).Value = IsEmpty(Col.Offset(8, j).Value)
     
                  If Col.Offset(2, j) = "" Then
                           Col.Offset(2, j) = Col.Offset(8, j) ' Col.Offset(8, j) correspond à la ligne avec les dates réelles (en bas)
                                                                           ' Col.Offset(2, j) correspond à la ligne des dates planifiées (en haut)
                           Col.Offset(2, j).NumberFormat = "[$-409]dd-mmm-yy;@"
                           Col.Offset(3, j) = "0%"
                           Col.Offset(3, j).NumberFormat = "0.00%"
                           Col.Offset(4, j) = Col.Offset(3, j) + Col.Offset(4, j - 1)
                           Col.Offset(4, j).NumberFormat = "0.00%"
                           Col.Offset(5, j) = "0"
                           Col.Offset(5, j).NumberFormat = "$ #,##0.00"
                           Col.Offset(6, j) = Col.Offset(5, j) + Col.Offset(6, j - 1)
                  End If
                            j = j + 1
    Loop
    Problème, lorsque ma condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do Until Col.Offset(8, j).Value = IsEmpty(Col.Offset(8, j).Value)
    devient vraie, ma boucle ne s’arrête pas.
    J'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Col.Offset(8, j).Value <> " "
    , même problème.

    Voici le résultat, si je lance la macro en automatique toutes mes lignes se remplissent et la macro plante, je suis donc en pas à pas avec les "Espions" ou "Watch" qui vont bien.

    Nom : Résultat.jpg
Affichages : 405
Taille : 88,4 Ko

    J'ai surement commis une bétise grosse comme moi, mais tellement grosse que je ne la trouve pas.
    Quelqu'un a-t-il une idée ?
    Merci pour votre aide
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    comme ça ?

    utilisation de While / Wend
    correction de ton test : tu avais mis " " avec un espace, ce qui ne représente pas une chaine vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    While Col.Offset(8, j).Value <> ""
     
    ' tes actions
     
    Wend

  3. #3
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Bonjour Joe et merci,
    C'est effectivement la condition qui n'allait pas, l'espace
    Merci en tout cas pour ton oeil de lynx
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

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

Discussions similaires

  1. [XL-2003] Boucle for ne s’arrête pas pour la valeur fixée
    Par magikmed dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/04/2015, 01h56
  2. condition avec une boucle qui marche pas
    Par lumycaan dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2009, 20h02
  3. Réponses: 4
    Dernier message: 12/10/2006, 12h43
  4. Réponses: 3
    Dernier message: 11/06/2006, 12h09
  5. ma boucle ne fonctionne pas
    Par mélo6 dans le forum ASP
    Réponses: 2
    Dernier message: 17/06/2005, 11h53

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