Problème VB avec End(xlUp)

  • Initiateur de la discussion Initiateur de la discussion toony.m
  • Date de début Date de début

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 !

toony.m

XLDnaute Nouveau
Bonjour à tous!

Voici une fonction appliquée à une feuille qui permet de cacher des lignes dont une certaine colonne n'a pas la bonne valeure.
Ce script marche TB.

Code:
Option Explicit

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim i As Integer
With ActiveSheet
    .Rows.Hidden = False
    For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 6 Step -1
        If .Cells(i, 1).Value < 1 Then .Rows(i).Hidden = True
        
    Next i
End With
Application.ScreenUpdating = True
End Sub

'ThisWorkbook.Sheets("Profil1").range("B6").interior.color
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Le problème est que des que j'insère une nouvelle ligne (en faisant un clic droit et insertion sur la colonne des lignes) ce script ne marche plus et j'obtiens une erreur VB n°13 à ce niveau :
Code:
 If .Cells(i, 1).Value < 1 Then .Rows(i).Hidden = False

Idem si je vais ou couper/coller de certaines lignes
Alors que cela fonctionne avec un copier/coller.

La fonction End(xlUp) semble ne pas aimer les modifications de lignes...
D'où pourrait venir le problème ?
Peut-on le contourner ?
 
Re : Problème VB avec End(xlUp)

bonjour,
essaie :
Derlig = .Cells(.Rows.Count, 2).End(xlUp).Row
For i = Derlig To 6 Step -1
CellVal = .Cells(i, 1).Value
If .Cells(i, 1).Value < 1 Then .Rows(i).Hidden = True
Next i

et tu mets un point d'arret sur la ligne contenant CellVal = ...
le code s'arretera à cet endroit et tu pourras vérifier ta condition
 
Re : Problème VB avec End(xlUp)

Merci pour vos réponses !

En attendant voici le fichier en question qui fonctionne bien sans couper/coller ou suppresion/insertion.

Et voici celui qui pose problème.

Mutzik: En tant que débutant que je suis quand même:

Comment met-on un point d'arret ?

Et j'ai essayé en déclarant les variables comme suit:
Code:
Option Explicit

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim i As Integer
Dim Derlig As Integer
Dim CellVal As Integer

With ActiveSheet
    .Rows.Hidden = False
       
    Derlig = .Cells(.Rows.Count, 2).End(xlUp).Row
    For i = Derlig To 6 Step -1
    CellVal = .Cells(i, 1).Value
    If .Cells(i, 1).Value < 1 Then .Rows(i).Hidden = True
    Next i

End With
Application.ScreenUpdating = True
End Sub

Mais j'ai encore l'erreur 13...
 
Dernière édition:
- 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
10
Affichages
284
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
497
Réponses
5
Affichages
185
Retour