Basculer sur un nouvel onglet

bonjour,

J'avance petit à petit sur mon truc, mais je bloque un petit peu.

J'envoie des données (montant en euros) d'un formulaire vers un tableau qui sont placé en fonction du mois (une colonne par mois) et un onglet par année.

Mon soucis, c'est lorsqu'on dépasse l'année 2017 (donc à partir de janvier 2018), j'ai besoin de changer d'onglet pour insérer les lignes correspondante:

tab4

J'ai donc un onglet correspondant à l'année qui suit reprenant le schéma de l'onglet 2017

Il faudrait que toutes les lignes qui dépasse l'année 2017 soit recopiées sur l'année 2018 en partant du début de l'année

Mon code actuel:

Private Sub test()
 Dim Copie(33) As String, j%, i%, k%, p%, y%, derLigne As Integer, derLigne2 As Integer, plop As Integer, previ As Worksheet, prev As Worksheet, name As Range, dateref As Date, montant(33), dateact As Range

  With ThisWorkbook.Worksheets("Clients")
    dateref = .Range("B17")
    Copie(0) = .Range("B4")
    For i = 1 To 6
            Copie(i) = .Range("A" & i + 15)
            montant(i) = .Range("C" & i + 15)
    Next i
    k = 6
    For j = 7 To 33
        If (.Range("B" & j + 17)) <> "" Then
            k = k + 1
            Copie(k) = .Range("A" & j + 17)
            montant(k) = .Range("D" & j + 17)
        End If
    Next j
End With

Workbooks.Open "C:\Users\XXXX\Desktop\Ent\TABLEAUX AVANCEMENT PAIEMENT.xlsx" '
y = Year(dateref)

Set previ = ActiveWorkbook.Worksheets("Prev " & y)
Set prev = ActiveWorkbook.Worksheets("Prev " & y)
derLigne = previ.Range("b" & Rows.Count).End(xlUp).Row + 1
plop = previ.Range("b" & Rows.Count).End(xlUp).Row + 1

previ.Cells(derLigne, 1).Value = Copie(0)

For k = LBound(Copie) + 1 To UBound(Copie)
    p = Month(dateref) + 2
    If (Copie(k) = "Fact1" Or Copie(k) = "Fact2") Then
        p = p + 4
    ElseIf (Copie(k) = "Fact3" Or Copie(k) = "Fact4" Or Copie(k) = "Fact5" Or Copie(k) = "Fact6") Then
        p = p + 8
    ElseIf Copie(k) = "Fact7" Then
        p = p + 7
    ElseIf (Copie(k) = "Fact8" Or Copie(k) = "Fact8" Or Copie(k) = "Fact10") Then
        p = p + 9
    ElseIf Copie(k) = "Fact11" Then
        p = p + 10
    ElseIf Copie(k) = "Fact12" Then
        p = p + 11
    ElseIf (Copie(k) = "Fact13" Or Copie(k) = "Fact14") Then
        p = p + 14
    ElseIf Copie(k) = "Fact15" Then
        p = p + 15
    End If
    If p < 14 Then
        previ.Cells(derLigne, 2).Value = Copie(k)
        previ.Cells(derLigne, p).Value = montant(k)
        derLigne = derLigne + 1
    Else
        y = y + 1
        p = p - 12
        prev.Cells(derLigne, 2).Value = Copie(k)
        prev.Cells(derLigne, p).Value = montant(k)
        derLigne = derLigne + 1
    End If
Next k

derLigne2 = previ.Range("b" & Rows.Count).End(xlUp).Row

With Sheets("Prev " & y).Range(Cells(plop, 1), Cells(derLigne2, 14))
    .Borders.Weight = xlThin
    .Borders(xlInsideVertical).Weight = xlMedium
    .Borders(xlEdgeBottom).Weight = xlMedium
End With

With Sheets("Prev " & y).Range(Cells(plop, 1), Cells(derLigne2, 1))
    .Merge
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With

End Sub

Je tente un changement d'onglet avec:

Else
        y = y + 1
        p = p - 12
        prev.Cells(derLigne, 2).Value = Copie(k)
        prev.Cells(derLigne, p).Value = montant(k)
        derLigne = derLigne + 1
    End If

Où est l'expression qui détermine l'année et le mois ?

De l'année tu tires le nom de l'onglet, et du mois la colonne...

Rechercher des sujets similaires à "basculer nouvel onglet"