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 avec les filtres


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Par défaut Problème avec les filtres
    Bonjour,
    J'ai actuellement un problème avec mon code qui est le suivant :

    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
    Sub Cherche_Commun()
     
        'sur la portion Excel qui m'intéresse
        For i = 4728 To 4731
     
            'si la cellule est coloriée
            If Sheets("Avancement").Range("A" & i).Interior.TintAndShade <> 0 Then
     
                'j'attribue à material la valeur de la clé
                material = Range("A" & i).Value
     
                'je trie tous mes tableaux en fonction de la clé (pour voir si la valeur que je cherche y est)
                Sheets("DATA").Select
                ActiveSheet.Range("$A$4:$AB$12414").AutoFilter Field:=11, Criteria1:=material
                Sheets("ParameterQuery").Select
                ActiveSheet.Range("$A$25:$V$63590").AutoFilter Field:=5, Criteria1:=material
                Sheets("Spend+ UPI+Parameters").Select
                ActiveSheet.Range("$A$36:$CD$12444").AutoFilter Field:=11, Criteria1:=material
     
                'si jamais ma valeur, qui est forcément un entier, apparait dans au moins un tableau
                If IsNumeric(Sheets("DATA").Range("K12416").End(xlUp).Value) Or IsNumeric(Sheets("ParameterQuery").Range("E63592").End(xlUp).Value) Or IsNumeric(Sheets("Spend+ UPI+Parameters").Range("K12446").End(xlUp).Value) Then
     
                'la technique que j'ai utilisé ci dessus est la suivante: je me place sous le tableau, ensuite je regarde
                'quelle est la première cellule écrite en remontant, et si je tombe sur un nombre c'est qu'il y a au moins
                'une ligne, si je tombe sur un string, c'est qu'il n'y a rien et que je suis sur l'intitulé des colonnes
     
                'alors je mets rien
                Sheets("avancement").Range("E" & i).Value = ""
     
                'sinon (si elle n'y est pas) je mets rien du tout
                Else
                    Sheets("avancement").Range("E" & i).Value = "Rien du tout"
     
                End If
     
            End If
     
        Next i
     
     
    End Sub
    Le problème c'est que ça marche de temps en temps, mais pas tout le temps ! En fait ça marche pour le premier et c'est tout...
    J'ai essayé de changer le test (j'ai fait un test sur la valeur de la ligne lorsque l'on remonte), j'ai aussi essayé de rajouter une boucle avec un timer pour laisser du temps entre la fabrication du test et les tables, mais rien n'y fait ....
    Si vous avez une idée... je suis preneur !

    I need your help !

  2. #2
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonsoir,


    pour le test tu peux le faire avec ce code sans filtrer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim liste
        liste = Array("Data!$A$4:$AB$12414", "ParameterQuery!$A$25:$V$63590", "Spend+ UPI+Parameters!$A$36:$CD$12444")
     
        If WorksheetFunction.SumIf(Range(liste(0)).Columns(11), materiel, Range(liste(0)).Columns(11)) _
        Or WorksheetFunction.SumIf(Range(liste(1)).Columns(5), materiel, Range(liste(1)).Columns(5)) _
        Or WorksheetFunction.SumIf(Range(liste(2)).Columns(11), materiel, Range(liste(2)).Columns(11)) Then
    'Sheets("avancement").Range("E" & i).Value = ""
    Else
    'Sheets("avancement").Range("E" & i).Value = "Rien du tout"
    End if

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Par défaut
    Merci pour ta réponse,

    Ca me va bien d'éviter de faire les filtres pour les tests, cependant j'ai encore un problème, le message d'erreur suivant apparait (à propos de la ligne du test) :

    Run-time error '1004':
    Method 'Range' of object '_Global' failed
    :S

  4. #4
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonjour,

    cela veut tout simplement dire que les chaines de nom de plage ne sont pas valides. vérifie l'orthographe ou la saisie. je suis un peu pressé.

    essaie sur une feuille ceci: pour t'assurer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Dim t
        t = "Feuil1!A1:C10"
        Range(t).Columns(3).Select

Discussions similaires

  1. [XL-2007] problème avec les filtres
    Par dodo69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/03/2011, 15h15
  2. Problème avec les filtres de Sobel
    Par TNT89 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 17/08/2010, 11h17
  3. Problème avec les filtres
    Par ranell dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 19/07/2010, 11h10
  4. [XL-2007] Problème avec les filtres.
    Par Mielure dans le forum Excel
    Réponses: 6
    Dernier message: 03/12/2009, 16h24
  5. [JDOM] Problème avec les filtres
    Par Djay_jee dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 09/03/2007, 17h59

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