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 :

exécution de la boucle while


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut exécution de la boucle while
    bonjour
    s'il vous plait j'ai un problème d'exécution de la boucle while (do while , while , do untile ...) . le problème c'est que la boucle ne s'exécute pas il reste en mode running , prenant l'exemple suivant :

    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
    Sub hhh()
     
        Dim i As Long
        Dim sum As Long
        Dim nb As Double
        Sheets("EQ DAV D PSG J1 DINA (8P) (2)").Activate
        sum = 0
        nb = Cells(8, 7).Value
    For i = 0 To 53
     
       Do While sum < nb
                 Cells(21 + i, 4).Value = Cells(21 + i, 3).Value
                sum = sum + Cells(21 + i, 3).Value
     
    Loop
     
    Next i
     
    End Sub

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Salut.

    Ta boucle fonctionne, pour autant bien sûr qu'en cells(8, 7) (G8), tu aies une valeur >0, sinon la condition sum < nb n'est jamais remplie et tu ne rentres pas dans la boucle. Au passge, sum = 0 n'est pas nécessaire car sa déclaration en As Long l'initialise à 0.

    Il n'est pas nécessaire d'activer une feuille pour travailler avec ses cellules, et il est vivement conseillé de préfixer les cellules de la feuille qui les contient. J'ai adapté ton code en fonction de cela et j'en ai profité pour l'indenter de façon correcte.

    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
    Sub hhh()
      Dim i As Long
      Dim sum As Long
      Dim nb As Double
      Dim sh As Worksheet
     
      Set sh = Sheets("EQ DAV D PSG J1 DINA (8P) (2)")
      nb = sh.Cells(8, 7).Value
      For i = 0 To 53
        Do While sum < nb
          sh.Cells(21 + i, 4).Value = sh.Cells(21 + i, 3).Value
          sum = sum + sh.Cells(21 + i, 3).Value
        Loop
      Next i
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Nom : Capture.PNG
Affichages : 270
Taille : 41,5 KoNom : Capture.PNG
Affichages : 270
Taille : 41,5 Ko

    si vous voyer j'ai le même problème malgré que j'ai utiliser votre programme sinon merci beaucoup.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Salut. Tu devrais la faire fonctionner en pas à pas pour voir évoluer les valeurs locales. Pou rcela, affiche les valeurs locales via le menu Affichage puis, après avoir cliqué dans la procédure, presse F8. Tu verras alors une ligne jaune sur la première ligne de la proc, et chaque F8 te fera avancer dans la procédure. Tu pourras alors, à chaque F8, vérifier les valeurs des variables locales pour voir si le compteur s'incrémente et si Sum augmente avec les nouvelles valeurs qu'on y ajoute.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Nom : Capture2.PNG
Affichages : 162
Taille : 5,3 Ko
    désole mais sa change rien il reste a 0

  6. #6
    Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Bon j'ai essayer d'utiliser la boucle if il fonctionne mais il arrête au dernier valeur qui ne vérifié pas a la condition .

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénierie de Maintenance
    Inscrit en
    Août 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénierie de Maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 28
    Points : 42
    Points
    42
    Par défaut
    bonjour à tous,

    sum conditionne "Do While sum < nb"

    si sum ne grandit pas nb toujours supérieur à sum et çà boucle à l'infini

    l'idée est de contrôler le type de valeur renvoyé par sh.Cells(21 + i, 3).Value en le forçant en décimal CDec, double CDbl ou autre type numérique.

    sum = sum + CDec(sh.Cells(21 + i, 3).Value)

    et sh.Cells(21 + i, 3).Value renvoie t il autre chose que 0 ?

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Salut TheKat

    si une valeur n'est pas numérique, le code plantera, donc pour moi, CDbl est inutile. Ce qui pourrait ne pas augmenter sum, c'est que sh.Cells(21 + i, 3).Value soit égal à 0...

    Par contre, je voudrais bien savoir ce que lamyae_lamyae essaie de réaliser, car je pose la question de la double boucle avec Do while qui boucle tout le temps sur le même i...


    lamyae_lamyae, si tu nous disais ce que tu souhaites réaliser, en nous montrant une copie de tes données?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/06/2020, 16h20
  2. Exécuter 2 boucles while avec deux variables en même temps.
    Par gagnant16 dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 16/04/2014, 22h04
  3. Poursuivre l'exécution d'une boucle while()
    Par Hobbèse dans le forum Débuter
    Réponses: 14
    Dernier message: 01/02/2014, 00h31
  4. Arrêter une boucle (while) en cours d'exécution
    Par Cybberdupont dans le forum Langage
    Réponses: 19
    Dernier message: 26/06/2008, 14h24
  5. Afficher un waitbar pendant l'exécution d'une boucle while
    Par LMU2S dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 18/03/2008, 19h22

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