XL 2013 Boucle qui tourne ds le vide.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Wyrgle

XLDnaute Junior
Bonjour à tous,

Voici un bout de code qui mouline dans le vide.
Je cherche à conserver seules les lignes en col 6 qui égalent l'année choisit ds un UserForm.
Je pars du haut (ligne 2) ou d'en bas (le rang de ma derniere ligne est 19038 environ...), je ne sors jamais ds la 2eme boucle.
(j'ai séparé les 2 boucles pour plus de clarté)

VB:
Last_Line = ActiveSheet.UsedRange.Rows.Count
For i = Last_Line To 2 Step -1
'---Prend l'année seule de la date :
    Cells(i, 6) = Year(Cells(i, 6))
Next i

For i = Last_Line To 2 Step -1
'---Si l'année est différente de Année choisie par le user, on efface la ligne :
    If Cells(i, 6).Value <> Annee_pour_traitement Then Rows(i).EntireRow.Delete
Next i

Ou est l'erreur ?
Merci pour votre aide !!
 
Bonsoir.
À essayer :
VB:
Sub Test()
   Dim Année As Long
   Année = 2019
   LignesOùCondR1C1(Rows(2), "YEAR(RC6)<>" & Année).Delete
   End Sub
Function LignesOùCondR1C1(ByVal LigneDéb As Range, ByVal CondR1C1 As String) As Range
Rem. ——— Lignes entières partant de LigneDéb vérifiant une condition R1C1 CondR1C1.
   Dim Rng As Range
   Set Rng = PlageÀPartirDe(LigneDéb.EntireRow): If Rng Is Nothing Then Exit Function
   Set Rng = Rng.Columns(Rng.Columns.Count + 1)
   Application.ScreenUpdating = False
   On Error Resume Next
   Rng.FormulaR1C1 = "=1/(" & CondR1C1 & ")"
   Set LignesOùCondR1C1 = Rng.SpecialCells(xlCellTypeFormulas, 1).EntireRow
   Rng.Delete xlShiftToLeft
   End Function
Function PlageÀPartirDe(ByVal CelDéb As Range) As Range
Rem. ——— Plage utilisée à partir de CelDéb.
   Dim NbrLig As Long, NBrCol As Long
   With CelDéb.Worksheet.UsedRange:
      NbrLig = .Row + .Rows.Count - CelDéb.Row
      NBrCol = .Column + .Columns.Count - CelDéb.Column
      If NbrLig <= 0 Or NBrCol <= 0 Then Exit Function
      End With
   Set PlageÀPartirDe = CelDéb.Resize(NbrLig, NBrCol)
   End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
697
Réponses
8
Affichages
645
Réponses
4
Affichages
560
Réponses
10
Affichages
490
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
802
Retour