Lancer macro si cellules visibles ne sont pas vides

Bonjour,

Je bloque sur une partie de macro qui consiste à effectuer une procédure si des cellules après un tri sont vides ou pleines.

Voici mon code,

Worksheets("Recueil ECA").Range("A3:X50000").AutoFilter Field:=4, Criteria1:=Array("*T34 CENTRAL BOX*"), Operator:=xlFilterValues

If Worksheets("Recueil ECA").Range("K4:K" & JDerlig).SpecialCells(xlCellTypeVisible).Value <> "" Then

'Exécuter les étapes 

Else

        ListBoxMODIFS3.Clear
        ListBoxPPMS.Clear
        ListBoxEFFECTIVITY.Clear
        ListBoxECA.Clear
        ListBoxCIECA.Clear
        TextBoxCI.Value = Clear
        ListBoxIMPACTSELEC3D.Clear
        ListBoxIMPACTSELEC2D.Clear

End If

Je fais un filtre sur une colonne en particulier qui peut contenir des données en fonction de ce que l'on filtre.

Si les cellules en colonne K sont pleines, on exécute la macro. Si les cellules sont vides alors on ne fait rien et les listbox restent vides.

J'ai beau essayé de mettre les conditions : On Error Resume Next / If Err<>0 Then Err = 0 ou On Error GoTo 0 mais rien à faire. J'obtiens soit aucune valeur alors qu'il y a des valeurs visibles après filtre, soit j'obtiens les valeurs des cellules cachées.

Comment pourrais-je faire pour corriger ce problème ?

Merci d'avance

GuiGui8731

Hello,

Pas de fichier sous la main ?

R@g

Bonjour,

Voici un fichier allégé.

Quand tu utilises les cellules visibles après filtres, tu as toujours au minimum la ligne des en tetes de visible donc ton :

If Worksheets("Recueil ECA").Range("K4:K" & JDerlig).SpecialCells(xlCellTypeVisible).Value <> "" Then

ne peut pas fonctionner.

Il faut donc comparer après le filtre si ta dernière ligne visible est ta ligne d'en-tete si oui pas de lignes filtrées, si non il y a des lignes filtrées :

Dim i As Integer

JDerlig = Worksheets("Recueil ECA").Range("J" & Rows.Count).End(xlUp).Row

Worksheets("Recueil ECA").Range("A3:X50000").AutoFilter Field:=4, Criteria1:=Array("*T34 CENTRAL BOX*"), Operator:=xlFilterValues

i = Worksheets("Recueil ECA").Range("J" & Rows.Count).End(xlUp).Row

If i > 3 Then 'code

R@g

Bonjour Rag02700,

Merci pour ton aide et ton explication. Ta solution marche parfaitement.

Je tâcherai de me souvenir ce conseil pour les lignes filtrées visibles ou non la prochaine fois.

Merci encore et bonne soirée.

GuiGui8731

Rechercher des sujets similaires à "lancer macro visibles pas vides"