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 :

[E-03] faire s'arrêter une boucle


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut [E-03] faire s'arrêter une boucle
    Bonsoir,

    J'ai un problème tout simple, mais qui me pose déjà des soucis...

    Dans le fichier joint, j'aimerais, à chaque fois que le numéro de commande change, insérer une ligne en dessous avec dans la colonne B le mot "total" (donc en B21 pour la première commande par exemple) et la somme de la commande dans le colonne D.

    Ensuite, j'aimerais qu'une deuxième ligne soit insérée au dessous et simplement copier la première ligne... et continuer cette boucle jusqu'à la fin du tableau. Malheureusement, je n'arrive pas à trouver la bonne méthode pour continuer cette boucle.

    Je serais bien preneur de quelques conseils.

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    voici peut-être une piste à suivre :

    Boucle parcourant le fichier.
    Avec un "buffer" tu prends la première ligne de la commande et tu descends jusqu'à la prochaine commande (si la ligne en cours <> la ligne précédente).
    Ajoutes ta ligne ici et fais une somme du buffer jusqu'à la ligne en cours.
    Ensuite, pour continuer la boucle, n'ouiblies pas d'augmenter ton compteur de une ligne de plus, sinon tu continueras dans la ligne de la somme!
    N'oublies pas de changer ton buffer avec la ligne suivant pour avoir le début de la prochaine commande.

    Quand tu auras un bout de code de commencé et si tu as des questions ensuite, tu ne montreras ce que tu as fait!

    Bonne chance!

  3. #3
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    et la fonction sous-total de excel elle ne te convient pas ?
    Elle fera les totaux/comptages et autres ajout de "total" automatiquement.
    Si c'est juste une question de mis en forme et de colonne, il te suffit d'une simple boucle de recherche pour déplacer ton "total" vers une autre cellule.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Finalement, j'ai trouvé d'où venait mon erreur (de débutant). Je réinitialisais ma variable de départ à chaque fois. Voilà le bout de code que j'ai monté. Je suppose qu'il peut être grandement amélioré, surtout la dernière partie.

    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
    Sub SousTotalParDevis()
     
    Dim i, j, k, l As Integer
     
    ' Pour faire les sous-totaux par devis
        i = 2
    Do
        j = i
            Do
                If Cells(i, 1) = Cells(i + 1, 1) Then
                    i = i + 1
                End If
            Loop Until Cells(i, 1) <> Cells(i + 1, 1)
     
                l = i + 1
                Rows(l).Insert Shift:=xlDown
                    Cells(l, 2) = "Total:"
                    Cells(l, 4) = Application.Sum(Range(Cells(j,4), Cells(i, 4)))
                Rows(l + 1).Insert Shift:=xlUp
                Rows("1:1").Copy
                Rows(l + 1).Select
                ActiveSheet.Paste
                i = i + 3
        Loop While Cells(i, 1) <> ""
    k = ActiveCell.Row
    Rows(k).Delete Shift:=xlUp
    End Sub

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bravo,

    tu viens de réécrire la fonction Excel Sous-total, mais à ta manière....

    Ci-dessous un exemple d'utilisation de la varie fonction, pas adapté à tes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Range(Start_Range_Id).Select
    'Subtotals for Week Ctrs
         Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16, 17, 18 _
            , 19, 20, 21), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    C'est plus court ....
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

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

Discussions similaires

  1. Arrêter une boucle infinie
    Par green_fr dans le forum Administration et Installation
    Réponses: 1
    Dernier message: 26/08/2008, 14h44
  2. 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
  3. Réponses: 3
    Dernier message: 04/04/2007, 16h22
  4. Comment faire pour créer une boucle ?
    Par Arko76 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 02/04/2007, 17h14
  5. Réponses: 5
    Dernier message: 06/10/2006, 17h55

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