Re : serie de macros uniquement sur les feuilles de l' année en cours
Bonjour,
Lorsque tu utilises cette fonction :
Sheets("2014").Rows("2:" & Range("A65535").End(xlUp).Row + 1).Clear
tu effaces entièrement les lignes de 2 à ta dernière ligne écrite (contenus + encadrement) ...
1) Si tu ne veux effacer que le contenu en gardant les encadrement, il te faut plutôt utiliser ClearContents
2) Si tu ne veux effacer que les 3 premières colonnes, par exemple, utilise .Range("A2:Cxx") ou xx est ta dernière ligne
je te propose donc ça :
derligne = Sheets("2014").Range("A65535").End(xlUp).Row + 1
Sheets("2014").Range("A2:C" + Trim(derligne)).ClearContents
'Positionne dans un tableau nommé Var les adresses de cellules à traiter
Var = Array("H17", "H18", "E42", "D13", "D13", "D13", "D13", "K33", "K34", "E45", "E11", "E13", "E14", "E15", "F15", "K29", "K35")
'Boucle sur les onglets
For i = 1 To Sheets.Count
'Définit la derniere ligne remplie de la feuille Synthese
If Range("H18").Value = 2014 Then
'Si on n'est pas sur la feuille Synthese donc si on est sur une facture ...
If Sheets(i).Name <> "2014" And Sheets(i).Name <> "1-fact froid" Then
'On boucle sur le Tableau Var qui contient les adresses à traiter dans la facture
For j = 1 To 17
'Range(Var(j - 1)) 'renvoie l'adresse de E1 puis E2 etc ..
'Cells(derligne, j) renvoie l'adresse de la cellule située sur la derniere ligne vide de synthese et j incremente la colonne
Sheets("2014").Cells(derligne, j).Value = Sheets(i).Range(Var(j - 1)).Value
Next
ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 1), Address:="", _
SubAddress:="'" & Worksheets(i).Name & "'!K1", _
TextToDisplay:=Worksheets(i).Name
ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 2), Address:="", _
SubAddress:="'" & Worksheets(i).Name & "'!H17", _
TextToDisplay:=Worksheets(i).Name
End If
End If
Next i
Voilà,
A+
Nota :
Je ne peux pas te dire si le reste du code fonctionne, n'ayant pas assez de bille ...