Boucle Par Groupe

Bonjour a tous

je sollicite votre aide afin de creer une boucle en integrant le changement de groupe en me basant sur la colonne "B" ce qui me permettrai de l'ajuster avec le reste de mon code vba

explication du resultat attend: une fois ma boucle While end Wend est lance on traite le premier groupe jusqu’à la fin et ensuite on reprend des que le numero de tortes en colonne b change ( plus precis sur le fichier joint

Merci

7classeur1.xlsx (11.07 Ko)

Bonjour,

Tu en parles savamment mais...

1) pas de code ?

2) aucune indication sur le traitement à appliquer ?

je vais essayer d'etre plus precis

j'ai ceci

DateWork TORTES RTE STD 17MAR17 A pos ULD svce cons

26-août-16 3289H TR3289 17MAR17 A 1 AMJ61937FX IE 220368117033

26-août-16 3289H TR3289 17MAR17 A 2 AMJ56666FX IE 220368117044

26-août-16 3535H TR3535 17MAR17 A 3 AMJ42501FX IE 212866115353

26-août-16 3535H TR3535 17MAR17 A 4 AMJ50227FX IE 304911021931

je souhaiterai executer ma macro sur la colonne b qui traite sur l'exemple le Groupe de Valeur 3289H et une fois fini je refais la meme chose sur le groupe de valeur 3535H

en resume a chaque chagement de groupe je re execute ma macro

merci

Certes, ça on l'avait compris ! Mais ça ne dit toujours pas quel est le traitement !

voila un debut de code mais par contre tu verra c'est le laguage est special puisque je travail avec bluezone associe a excel

ce code me permet de copier de excel ces donnees ci dessous vers bluezone

While ActiveCell.Value <> ""

BZ.WriteScreen ActiveCell.Offset(0, 3).Value, 2, 29

BZ.WriteScreen ActiveCell.Offset(0, 4).Value, 2, 51

BZ.WriteScreen ActiveCell.Offset(0, 5).Value, 5, 5

BZ.WriteScreen ActiveCell.Offset(0, 9).Value, 5, 11

BZ.SendKey "@E"

Thks.

OK !

Sub test()
    Dim i%, j%, n%
    With Worksheets("Feuil1")
        n = .Range("B" & .Rows.Count).End(xlUp).Row
        For i = 1 To n
            j = 0
            Do
                'ton code... Exemple :
                BZ.WriteScreen .Cells(i + j, 5).Value, 2, 29
                'tu choisis la colonne qui convient pour chaque ligne de code
                j = j + 1
            Loop While .Cells(i + j, 2) = .Cells(i + j - 1, 2)
            i = i + j - 1
        Next i
    End With
End Sub

Re bonsoir Mferrant,

dans cette ligne de code pourrais tu me dire comment mettre Range a Partir de B2

"n = .Range("B" & .Rows.Count).End(xlUp).Row"

et peux tu m'expliquer le code ci dessous svp

Merci

n est la ligne de fin. Si tu pars de la ligne 2 (B2) pour le parcours de la boucle, tu remplaces 1 par 2 dans son initialisation :

        For i = 2 To n

et peux tu m'expliquer le code ci dessous svp

Merci

Oui ? Lequel ?

Celui que tu m'a fait

Sub test()

Dim i%, j%, n%

With Worksheets("Feuil1")

n = .Range("B" & .Rows.Count).End(xlUp).Row

For i = 1 To n

j = 0

Do

'ton code... Exemple :

BZ.WriteScreen .Cells(i + j, 5).Value, 2, 29

'tu choisis la colonne qui convient pour chaque ligne de code

j = j + 1

Loop While .Cells(i + j, 2) = .Cells(i + j - 1, 2)

i = i + j - 1

Next i

End With

End Sub

Les balises Code sont faites pour conserver l'indentation du code, maintenir ainsi sa lisibilité, et l'améliorer. Il serait bon de les utiliser systématiquement !

Sur quoi as-tu besoin d'une explication : il s'agit de 2 boucles impbriquées, la boucle interne (Do... Loop) défile les lignes successives d'un groupe, la boucle externe (For... Next) procède par saut de la 1re ligne d'un groupe à la 1re ligne du groupe suivant, son pas d'incrémentation de 1 étant corrigé en fonction du nombre de lignes parcourues par la boucle interne, ce qui rend de fait l'incrémentation variable pour s'ajuster à la dimension des groupes.

Rechercher des sujets similaires à "boucle groupe"