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:
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...