Répéter une boucle n fois

paseg

XLDnaute Nouveau
Bonjour,
Je souhaite répéter une boucle plusieurs fois mais je ne sais pas à l'avance "combien de fois".
J'ai cette solution (fichier joint) mais je dois changer les "integer" i et j à chaque fois. Je souhaiterais que cela soit automatique.
J'ai bien essayé avec quelque chose comme ça (désolé pour l'approximation):
For i = 1 To Range.("A65536").End(xlUp).Row
Erreur...
Pourriez-vous m'aider ?
Merci d'avance
Paseg
 

Pièces jointes

  • Modèle Boucle.xls
    27.5 KB · Affichages: 84

JNP

XLDnaute Barbatruc
Re : Répéter une boucle n fois

Bonjour Paseg :),
Pas évident de suivre ton problème, vu que ton i et ton j ne servent à rien :confused:...
Si j'ai compris ce que tu cherche, ce code contient tout ce dont tu as besoin. Fait un essai et dit nous.
Code:
Sub Test()
Dim I As Integer, J As Integer, PremL As Integer, DerL As Integer
With Sheets("Code")
For I = 1 To 3
PremL = .Range("A:A").Find("Cont " & I).Row
J = PremL
While .Cells(J, 1) <> ""
J = J + 1
Wend
DerL = J - 1
MsgBox "La zone s'étend de la ligne " & PremL & " à la ligne " & DerL
Next I
End With
End Sub
Bon WE :cool:
 

paseg

XLDnaute Nouveau
Re : Répéter une boucle n fois

Bonjour JNP,
Merci de t'intéresser à mon cas.
Je me suis effectivement mal exprimé. Ma macro, telle qu'elle est rédigée fonctionne.
Elle trie d'abord en ordre croissant selon la colonne C puis selon la colonne F pour "Cont 1", puis elle passe à "Cont 2"...
mon "i" et mon "j" me semble utiles donc.

Seulement, quand il n'y a plus de "Cont" (de séries si on veut), elle s'arrête or, je souhaiterais que la cellule active redevienne "A1" à la fin de ces calculs.
Je change donc manuellement les integer selon le nombre de séries (c'est très variable, de 3 à 500), je pourrais le faire avec une Msg Box mais je pensais qu'il y avait certainement une procédure "universelle" qui ferait que :

lorsqu'il n'y a plus de séries à trier, la cellule A1 redevient active sans que j'ai besoin de changer les integer.

A me relire, je sens encore la confusion.
Si ce n'est toujours pas clair, je reviendrai.
Merci d'avance
Paseg
 

kjin

XLDnaute Barbatruc
Re : Répéter une boucle n fois

Bonjour,
Pas sûr de comprendre vraiment
Code:
Sub Macro1()
dl = Range("A65000").End(xlUp).Row
x = 1
Do
    y = Range("A" & x).End(xlDown).Row
    Set plg = Range("A" & x & ":H" & y)
    plg.Sort Key1:=Range("C" & x), Order1:=xlAscending, Key2:=Range("F" & x) _
        , Order2:=xlAscending, Header:=xlYes
    x = y + 2
Loop Until x > dl

End Sub
A+
kjin
 

paseg

XLDnaute Nouveau
Re : Répéter une boucle n fois

Je change...

Je conserve ma macro même si elle n'est pas optimisée...

Sub Tri_Deuxième_Epreuve()

Range("A1").Select

Dim i As Long
For i = 1 To Range.["A65536"].End(xlUp).Row
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Range("A1:H1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=ActiveCell.Offset(0, 2).Range("A1"), Order1:= _
xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Next i

End Sub

Je souhaiterai ajouter une condition :
- si la cellule active est remplie par une valeur quelconque alors on rentre dans la boucle
- si la cellule active est vide, on sort de la boucle, la cellule active devient A1

Merci pour vos éclaircissements
Paseg
 

pierrejean

XLDnaute Barbatruc
Re : Répéter une boucle n fois

bonsoir paseg
salut JNP
Salut Kjin

Difficile de savoir ce tu souhaites
Teste:
Code:
Sub tri()
For n = 1 To Range("A65536").End(xlUp).Row
  If InStr(Range("A" & n), "Cont") <> 0 Then
    x = Range("A" & n).End(xlDown).Row
    Range("A" & n + 1 & ":H" & x).Sort Key1:=Range("C" & n + 1), Order1:= _
        xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom
  End If
Next n
End Sub
 

Discussions similaires

Réponses
12
Affichages
630

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22