Se rendre sur la premiére feuille à la fin d'une boucle sur onglets

Bonjour à tous,

J'ai le code de cette boucle qui génére des onglets :

For j = 2 To drnAt 'ateliers
    If ws1.Range("J" & j) > ws1.Range("I" & j) Then
        ate = ws1.Range("H" & j)
        cpt1 = cpt1 + 1 'compte les ateliers à faire
'vérification tirages C2 fait
            nom = ate
            If TestOnglet(nom) = True Then
               MsgBox "Tous les onglets correspondants au 1er tirage doivent être supprimés " & Chr(10) & Chr(10) & _
               " pour refaire un TAS sur le 1er choix."
               Exit Sub
            End If        'rajout onglet
            Sheets.Add after:=Sheets("ecole")
            ActiveSheet.Name = ate  
...
End If
Next
Et la fonction qui va avec:
 Function TestOnglet(zz As String) As Boolean 'fonction Test
 On Error Resume Next
 TestOnglet = Sheets(zz).Name <> ""
 On Error GoTo 0
 End Function

J'aimerais qu'à la derniére page générée le curseur se positionne sur la 1ere page générée.

Cdt

Salut Fronck,

ainsi, sans doute..

Public Sub GenererSheets()
'
Dim sSheet$
'
For j = 2 To drnAt 'ateliers
    If ws1.Range("J" & j) > ws1.Range("I" & j) Then
        ate = ws1.Range("H" & j)
        cpt1 = cpt1 + 1 'compte les ateliers à faire
        'vérification tirages C2 fait
        nom = ate
        If TestOnglet(nom) = True Then
           MsgBox "Tous les onglets correspondants au 1er tirage doivent être supprimés " & Chr(10) & Chr(10) & _
           " pour refaire un TAS sur le 1er choix."
           Exit Sub
        End If        'rajout onglet
        Sheets.Add after:=Sheets("ecole")
        ActiveSheet.Name = ate
        If sSheet = "" Then sSheet = ate
        '...
    End If
Next
If sSheet <> "" Then Worksheets(sSheet).Activate
'
End Sub


A+

Bonsoir Curulis,

Merci pour ta réponse.

J'ai essayé, en module2, pagesAteliersC1, mais çà donne rien.

1orienthur-obf2.zip (504.12 Ko)

Cdt

Salut Fronck,

tu as oublié une ligne indispensable après Sheets.Add...

If sSheet = "" Then sSheet = ate

For j = 2 To drnAt 'ateliers
    If ws1.Range("J" & j) > ws1.Range("I" & j) Then
        ate = ws1.Range("H" & j)
        cpt1 = cpt1 + 1 'compte les ateliers à faire
'vérification tirages C2 fait
            nom = ate
            If TestOnglet(nom) = True Then
               MsgBox "Tous les onglets correspondants au 1er tirage doivent être supprimés " & Chr(10) & Chr(10) & _
               " pour refaire un TAS sur le 1er choix."
               Exit Sub
            End If        'rajout onglet
            Sheets.Add after:=Sheets("ecole")
            ActiveSheet.Name = ate  'ws fonctionne pas
            If sSheet = "" Then sSheet = ate
                        With ActiveSheet.Tab
                            .Color = 10092543 'jaune
                        End With


A+

Bonjour Curulis,

Effectivement çà fonctionne, super.

Mais est-ce que çà serait possible de de placer sur la 1ere page plutôt que la derniére,

sinon je dois changer le déplacement de mon bouton "atelier suivant".

Merci

Salut Fronck,

tu as écrit...

le curseur se positionne sur la 1ere page générée

... la première page générée (Sheets.Add) est donc concrètement la dernière après traitement.
Plus de précisions, stp !


A+

Salut Curulis,

Je te réponds un peu tard, mais mieux vaut tard que jamais

image image

En fait je me suis trompé de sens, il faut que je sois positionné sur la dernière page et pas la première.

Ta solution me positionne sur la page 25 alors qu'il fallait que je me positionne sur la page 27.

En comprenant, j'ai trouvé la solution avec une boucle inversée:

             For i = drnAt To 2 Step -1   'ateliers
                If ws1.Range("J" & i) > ws1.Range("I" & i) Then ate = ws1.Range("H" & i)
                    If sSheet = "" Then sSheet = ate
            Next i
                If sSheet <> "" Then Worksheets(sSheet).Activate

A+

Rechercher des sujets similaires à "rendre premiere feuille fin boucle onglets"