Excel VBA — ActiveSheet.ShowAllData, La 1004 : “La méthode ShowAllData de la classe Worksheet a échoué

mmaiga

XLDnaute Nouveau
Bonjour tout le monde,


J'aurais besoin de votre aide. Etant donné que je suis novice en VBA, j'ai un soucis avec mon code et ça m'embête un peu, le code fonctionne mais dès fois le filtre me pose énormément de problème. Et la dernière ligne me génère des problèmes aussi

Pouvez-vous m'aider sur ce sujet et à améliorer le code SVP?

Ci-dessous le code, je voulais envoyer le fichier mais il est trop lourd .

Dans l'attente de vos retour..


VB:
Option Explicit
Sub HO_inter_4G()

Dim fin As Long
Dim fin1 As Long
Dim timerdebut  As Double


If ThisWorkbook.Worksheets("FLUX_HO").FilterMode = True Then
    ThisWorkbook.Worksheets("FLUX_HO").ShowAllData
End If


fin = Range("AL" & Rows.Count).End(xlUp).Row
fin1 = Range("Z" & Rows.Count).End(xlUp).Row
timerdebut = Timer
'
'supprimer le contenu 

Range("A3").CurrentRegion.Offset(2).Resize(Range("A3").CurrentRegion.Rows.Count - 2).ClearContents

' Copy dans les données de la feuil3 et coller dans la feuille active

Sheets("Feuil3").Range("A2").CurrentRegion.Offset(1).Copy Range("A3")
' calcule des données pour la prise des formules

Range("U2:AL2").AutoFill Destination:=Range("U2:AL" & fin)
ActiveSheet.Calculate

' Supprimer la premiere ligne
Range("A2").CurrentRegion.Rows(2).Delete

'filtre par ordre du plus grand au plus petit
   
    With ActiveWorkbook.Worksheets("FLUX_HO").ListObjects("Tableau2").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("Tableau2[[Inter eNB Handover attempts ]]"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
' Filtre la valuer < à 80

ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=25, Criteria1:= _
        "<80", Operator:=xlAnd
MsgBox "Durée : " & (Timer - timerdebut) & " sec."


' Suppression de la dernière ligne
On Error Resume Next
Range("A2").CurrentRegion.Rows(Range("Z" & Rows.Count).End(xlUp).Row).Delete

End Sub
 
Dernière modification par un modérateur:

gbinforme

XLDnaute Impliqué
Bonjour,

Pour le filtre je te propose de remplacer
Code:
If ThisWorkbook.Worksheets("FLUX_HO").FilterMode = True Then
ThisWorkbook.Worksheets("FLUX_HO").ShowAllData
End If

par ceci
VB:
Dim nbf As Integer
    With ThisWorkbook.Worksheets("FLUX_HO").AutoFilter.Filters
        For nbf = 1 To .Count
            If .Item(nbf).On Then ShowAllData: Exit For
        Next nbf
    End With
car ton test ne fonctionne pas s'il n'y a pas de filtre
 

mmaiga

XLDnaute Nouveau
Bonjour,

Pour le filtre je te propose de remplacer
Code:
If ThisWorkbook.Worksheets("FLUX_HO").FilterMode = True Then
ThisWorkbook.Worksheets("FLUX_HO").ShowAllData
End If

par ceci
VB:
Dim nbf As Integer
    With ThisWorkbook.Worksheets("FLUX_HO").AutoFilter.Filters
        For nbf = 1 To .Count
            If .Item(nbf).On Then ShowAllData: Exit For
        Next nbf
    End With
car ton test ne fonctionne pas s'il n'y a pas de filtre
Bonjour,

Merci pour votre reponse rapide. J'ai essayé ça me donnait des erreurs, il a fallu que je rajout ThisWorkbook.Worksheets("FLUX_HO").ShowAllData pour que ça marche.

Pour l'instant ça marche mais dès fois ça bug mais mieux qu'avant:
 

Discussions similaires

Réponses
3
Affichages
910

Statistiques des forums

Discussions
314 714
Messages
2 112 142
Membres
111 437
dernier inscrit
mimitorpez