VBA - Excel : Suppression onglet suivant date

Résolu/Fermé
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 - 5 mai 2011 à 13:59
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 - 11 mai 2011 à 08:05
Bonjour,
Ci-dessous la macro que j'avais créé (à l'éopque, novice...) avec l'aide de différent forumeur.
Je ne retrouve pas mes papiers, j'aimerai la simplifier.
J'explique :
- je dois supprimer les onglets pour lesquels la cellule G3 (qui contient une date) est supérieur à 8 jours, mais n'est ni un lundi, ne le dernier jour du mois

Application.DisplayAlerts = False
For Each Sheet In Workbooks("1er Trimestre 2011.xls").Worksheets
If Sheet.Range("G3") < Date - 8 Then
If Not Weekday(Sheet.Range("G3")) = 2 Then
If Not Sheet.Range("G3") = DateSerial(2011, 1 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 2 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 3 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 4 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 5 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 6 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 7 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 8 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 9 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 10 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 11 + 1, 0) Then
If Not Sheet.Range("G3") = DateSerial(2011, 12 + 1, 0) Then Sheet.Delete
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If


Next Sheet


Application.DisplayAlerts = True


Merci d'avance
A voir également:

1 réponse

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 mai 2011 à 13:56
Bonjour,

je ne sais pas si c'est plus simple mais voici ma proposition :

For Each Sheet In Workbooks("1er Trimestre 2011.xls").Worksheets
If Sheet.Range("G3") < Date - 8 or Weekday(Sheet.Range("G3"), 2) <> 1 Then
cells(60000,1).select
ActiveCell.FormulaR1C1 = "=FIN.MOIS(R3C7,0)"

if Sheet.Range("G3")) = selection then
Sheet.Delete
end if

weekday : donne le numéro de jour d'une date
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 mai 2011 à 14:04
je me suis trompée, c'est ce code la :
For Each Sheet In Workbooks("1er Trimestre 2011.xls").Worksheets
If Sheet.Range("G3") < Date - 8 or Weekday(Sheet.Range("G3"), 2) <> 1 Then
cells(60000,1).select
ActiveCell.FormulaR1C1 = "=FIN.MOIS(R3C7,0)"

if Sheet.Range("G3")) <> selection then
Sheet.Delete
end if
0
bthenault Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 8 juin 2011 1
11 mai 2011 à 08:05
"or" c'est possible??? j'y crois pas :) trop bien Merci !!!
0