Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

plantage VBA Lbound/Ubound

  • Initiateur de la discussion Initiateur de la discussion rafi93
  • 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 !

rafi93

XLDnaute Occasionnel
bonjour à tous

je me bats depuis hier avec un plantage VBA sur une ligne de code :
For iItem = LBound(.Criteria1) To UBound(.Criteria1)
cf copie écran ci dessous

j'avais récupéré cette portion de code "sauve_filtre" sur le forum il y a 2 ans, et l'ai intégrée dans une macro VB qui y fait appel, et qui marchait parfaitement jusqu'hier.
depuis, plantage sur un gros tableau de 30 col x 5000 lignes
après de multiples tests, j'ai réussi à le reproduire sur un fichier restreint à 3 col x 10 lignes

ça ne plante QUE si je filtre les données de la colonne "date"
si pas filtré, ou filtré sur une des autres colonnes pas de pb !

une idée ?

merci !




 

Pièces jointes

  • upload_2018-9-5_15-15-20.png
    14.1 KB · Affichages: 29
Hello

avec ce code.. qui prend le soin d'activer le filtre en début et le désactiver en fin. pas de pb chez moi..
VB:
Sub sauve_filtre()
Dim f As Long
Dim col As Integer
Dim iItem As Long
    Set w = ActiveWorkbook.ActiveSheet
   
    w.Range("Tableau1[[#Headers],[montant]]").AutoFilter

    With w.AutoFilter
        currentFiltRange = .Range.Address
        With .Filters
            col = .Count
            ReDim filterArray(1 To col, 1 To 4)
            For f = 1 To col
                With .Item(f)
                    filterArray(f, 1) = .On
                    If .On Then
                        filterArray(f, 2) = .Operator
                        If .Operator = 7 Then
                            MultiSelect = ""
                            For iItem = LBound(.Criteria1) To UBound(.Criteria1)
                                MultiSelect = MultiSelect & IIf(MultiSelect = "", "", delim) & .Criteria1(iItem)
                            Next iItem
                            filterArray(f, 3) = MultiSelect
                        Else
                            filterArray(f, 3) = .Criteria1
                            If .Operator = 1 Or .Operator = 2 Then
                                filterArray(f, 4) = .Criteria2
                            End If
                        End If
                    End If
                End With
            Next f
        End With
    End With
    w.Range("Tableau1[[#Headers],[montant]]").AutoFilter
End Sub
 
ok
mais si j'enlève le filtre, je ne peux plus le sauvegarder (pour le restaurer après divers traitements avec la procedure inverse restore_filtre ) , ce qui est l'objectif de ce code, non ?

idealement ce serait de trouver pourquoi ce "bug" bizarre, mais pas évident
 
je viens d'essayer avec le code indiqué en #8
j'obtiens aussi une erreur !!
ça plante quand il va chercher ".criteria1" comme avec le code precedent
est ce que ce ".Criteria1" aurait des incompatibilités avec des valeurs de date ?

 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…