IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème pour la méthode Autofilter


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut Problème pour la méthode Autofilter
    Bonjour,

    Je suis confronté à un problème simple mais que je n'arrive pas à résoudre.
    Je souhaite filtrer sur une colonne particulière mais je suis bloqué quelque soit la syntaxe. Avec le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(1, LCDTC1).AutoFilter Field = 1, Criteria1:="A vérifier"
    J'ai le message suivant : La méthode Autofilter de la classe Range a échoué

    En mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(.Cells(1, LCDTC1)).AutoFilter Field = 1, Criteria1:="A vérifier"
    J'ai le fameux message : Application defined or object-defined error.

    Savez-vous comment je peux corriger SVP ?

    Merci d'avance !

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Regardes si la valeur de LCDTC1 ne sort par des limites de ton tableau a filtrer

  3. #3
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour jfontaine,

    Merci pour ta réponse. Malheureusement (ou heureusement) non, la valeur de LCDTC1 ne sort pas du tableau à filtrer, du moins il ne me semble pas.
    Ci-dessous le code en entier. Au besoin, je peux te transmettre le fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Sub Compare_data()
     
    Dim LRDB1 As Long
    Dim StartRange As Range, ColToInsert As Byte, LastColumn As Byte, ColGap As Byte, FirstRow As Integer, LastRow As Long
    Dim LCDTC1 As Byte
     
    Application.ScreenUpdating = False
     
    'Concaténer les 7 dimensions analytiques en colonne A
     
        With Sheets("Data Base")
     
        LRDB1 = .Range("A" & .Rows.Count).End(xlUp).Row
     
        .Range("A1").EntireColumn.Insert
     
            With .Range("A2:A" & LRDB1)
                .Formula = "=CONCATENATE(RC[1],RC[2],RC[3],RC[4],RC[5],RC[6],RC[7])"
                .Value = .Value
            End With
     
        End With
     
    'Rechercher la 1ère des 7 colonnes contenant les données de dimension analytique et définir la dernière colonne
     
        With Sheets("Data to check")
     
        Set StartRange = .Cells.Find("Resp*", LookIn:=xlValues)
        ColToInsert = StartRange.Column
        LastColumn = StartRange.End(xlToRight).Offset(0, 2).Column
        ColGap = LastColumn - ColToInsert
        FirstRow = StartRange.Row + 1
        LastRow = StartRange.End(xlDown).Row
     
    'Insérer une clonne et conténer les 7 dimensions
     
        StartRange.EntireColumn.Insert
     
            With .Range(.Cells(FirstRow, ColToInsert), .Cells(LastRow, ColToInsert))
                .Formula = "=CONCATENATE(RC[1],RC[2],RC[3],RC[4],RC[5],RC[6],RC[7])"
                .Value = .Value
            End With
     
    'déterminer via une RECHERCHEV si les dimensions sont existantes ou à vérifier
     
            With .Range(.Cells(FirstRow, LastColumn), .Cells(LastRow, LastColumn))
                .Formula = "=IF(ISERROR(VLOOKUP(RC[" & -ColGap & "],'Data Base'!C1,1,0)),""A vérifier"",""OK"")"
                .Value = .Value
            End With
     
    'Supprimer ligne des concaténations et déterminer dernière colonne pour filtrer sur "A vérifier"
     
        StartRange.Offset(0, -1).EntireColumn.Delete
     
        LCDTC1 = .Cells(2, .Columns.Count).End(xlToLeft).Column
     
        .Cells(1, LCDTC1) = "Dimensions à vérifier"
     
        .Range(.Cells(1, LCDTC1), .Cells(LastRow, LDTC1)).AutoFilter Field = 1, Criteria1:="A vérifier"
     
        End With
     
    End Sub

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    As tu essayé comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(1,1).AutoFilter Field = 1, Criteria1:="A vérifier"

  5. #5
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    J'ai fait une erreur en tapant LDTC1 au lieu de LCDTC1... Avec ta technique maintenant ça fonctionne.
    Merci jfontaine, bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème pour exploiter une méthode (DataTable)
    Par jacko842 dans le forum C#
    Réponses: 8
    Dernier message: 14/05/2014, 10h13
  2. Problème pour utiliser la méthode d'une classe
    Par Freddrick dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/09/2012, 18h43
  3. [PR-2007] Problème pour trouver méthode d'ajout de date et de durée
    Par Miguel973 dans le forum VBA Project
    Réponses: 0
    Dernier message: 15/04/2011, 16h46
  4. Réponses: 1
    Dernier message: 24/05/2010, 11h22
  5. Problème pour appeler une méthode d'une autre classe
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 7
    Dernier message: 03/03/2006, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo