Trier numéros de semaine chronologiquement avec des années différentes

CharlotteG

XLDnaute Nouveau
Bonjour à tous,

Je suis novice en VBA et j'aurais grand besoin de votre aide pour un point qui me bloque depuis quelques jours...
J'ai un tableau avec 2 colonnes : la première un numéro de semaine, et la deuxième l'année correspondante.
La 1ère cellule du tableau se situe en A2.



Le but est de supprimer toutes les lignes du tableau où la date est supérieure à 2 semaines par rapport à aujourd'hui. Par ex, nous sommes en semaine 34 aujourd'hui, il faut supprimer tout ce qui va de la semaine 36 non comprise à la semaine 53 de 2014 + tout ce qui concerne l'année 2015.

J'ai essayé de coder mais sans succès. Voici ce que ça donne :



Sub Tri()


Dim datejour As Date
Dim numsemaine As Integer
Dim annee As Integer

datejour = Format(Now(),"dd-mm-yyyy")
annee = Format(Now(), "yyyy")

With WorksheetFunction
numsemaine = .WeekNum(datejour)
End With

Range("A2").Select

If ActiveCell.Value > numsemaine + 2 And ActiveCell.Offset(0, 1) = annee Then
selection.EntireRow.Delete

ElseIf ActiveCell.Value= 1 And numsemaine < 51 And ActiveCell.Offset(0, 1) > annee Then
selection.EntireRow.Delete

ElseIf ActiveCell.Value = 2 And numsemaine < 52 And ActiveCell.Offset(0, 1) > annee Then
selection.EntireRow.Delete

ElseIf ActiveCell.Value = 3 And numsemaine < 53 And ActiveCell.Offset(0, 1) > annee Then
selection.EntireRow.Delete

ElseIf ActiveCell.Value = 4 And numsemaine < 54 And ActiveCell.Offset(0, 1) > annee Then
selection.EntireRow.Delete

ElseIf ActiveCell.Value > 4 And numsemaine < 52 And ActiveCell.Offset(0, 1) > annee Then
selection.EntireRow.Delete

Else
ActiveCell(1, 0).Select

End If

End Sub



Je vous serais infinement reconnaissante pour votre aide !!! Merci beaucoup d'avance
 

vgendron

XLDnaute Barbatruc
Re : Trier numéros de semaine chronologiquement avec des années différentes

Bonjour,

Voici une proposition qui ne demande qu'à être améliorée je pense

Code:
Sub Tri()


Dim datejour As Date
Dim numsemaine As Integer
Dim annee As Integer

datejour = Format(Now(), "dd-mm-yyyy")
annee = Format(Now(), "yyyy")

With WorksheetFunction
    numsemaine = .WeekNum(datejour)
End With

Dernier = Cells(65536, 1).End(xlUp).Row

For i = Dernier To 2 Step -1
    
    
    If ((Cells(i, 1).Value > numsemaine + 2) And (Cells(i, 2) = annee)) Then
        Cells(i, 2).EntireRow.Delete
        ElseIf Cells(i, 1).Value = 1 And numsemaine < 51 And Cells(i, 2) > annee Then
            Cells(i, 2).EntireRow.Delete
        ElseIf Cells(i, 1).Value = 2 And numsemaine < 52 And Cells(i, 2) > annee Then
            Cells(i, 2).EntireRow.Delete
        ElseIf Cells(i, 1).Value = 3 And numsemaine < 53 And Cells(i, 2) > annee Then
            Cells(i, 2).EntireRow.Delete
        ElseIf Cells(i, 1).Value = 4 And numsemaine < 54 And Cells(i, 2) > annee Then
            Cells(i, 2).EntireRow.Delete
        ElseIf Cells(i, 1).Value > 4 And numsemaine < 52 And Cells(i, 2) > annee Then
            Cells(i, 2).EntireRow.Delete
        End If
Next i
End Sub
 

CharlotteG

XLDnaute Nouveau
Re : Trier numéros de semaine chronologiquement avec des années différentes

Bonjour,

Merci beaucoup pour le code ! Il est bien plus propre que le mien. Malheureusement il y a une erreur d'exécution 1004 ("la méthode Delete de la classe Range a échoué").

Je ne comprends pas car les variables sont de types justes, et je ne vois pas de faute de syntaxe...
 

vgendron

XLDnaute Barbatruc
Re : Trier numéros de semaine chronologiquement avec des années différentes

Bizarre..
je viens de relancer la macro plusieurs fois de suite et je n'ai pas d'erreur.. en meme temps, je me suis créé un fichier tout simple sans trop de lignes qui ne ressemble sans doute pas au tien.
est ce que l"erreur arrive sur une ligne particulière? (utilise le mode pas à pas (F8) pour essayer de détecter la ligne qui plante)

J'imagine que dans ton cas, la macro essaie de supprimer une ligne qui n'existe pas ou plus...??
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso