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 :

Filtre VBA avec nombre de lignes variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 47
    Par défaut Filtre VBA avec nombre de lignes variable
    Bonjour,

    Pour mon activité je dois créer un outil en VBA,
    J'ai un soucis avec les filtres et le faite que mon nombre de lignes varient en fonction de l'export de données fait en amont.
    Mon code se finit par un copier/coller des valeurs filtrés sur une autres feuille.

    J'ai donc tenté avec ce code suivant mais cela ne fonctionne pas ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    i = ActiveSheet.UsedRange.Rows.Count
     
        Sheets("Feuil3").Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$V$" & i).AutoFilter Field:=20, Criteria1:=">=2"
        ActiveSheet.Range("$A$1:$V$" & i).AutoFilter Field:=22, Criteria1:="="
        Range("A1").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Sheets("Feuil4").Select
        Range("A1").Select
        ActiveSheet.Paste


    En espérant que l'erreur soit seulement de la syntaxe et est simple à trouver


    Merci d'avance

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ce n'est pas seulement un problème de Syntaxe.

    D'abord, tu utilises de manière un peu trop direct ce qui résulte de l'enregistreur de macro. Les Select/Selection, quand on peut s'en passer, c'est toujours mieux.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Sheets("Feuil3").Select
        Selection.AutoFilter
    Peut s'écrire plus simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Sheets("Feuil3").AutoFilter
    Mais le gros problème que tu vas avoir, c'est que tu sélectionnes des zones complètes contenant des cellules maquées.
    Or, même si elles ne sont pas visibles, ces cellules font quand même partie de la selection et de la copie qui en résulte.

    Remplace la seconde moitié de ton code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Sheets("Feuil3").UsedRange.SpecialCells(xlCellTypeVisible).Copy
        Sheets("Feuil4").Range("A1").PasteSpecial(xlPasteAll)

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 47
    Par défaut
    Bonjour, merci pour ta réponse,

    Du coup mon code est devenue:

    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
    Sub Bouton11_Clic()
    '
    ' Bouton11_Clic Macro
    '
     
    '
     
    Dim i As Integer
    i = ActiveSheet.UsedRange.Rows.Count
     
        Sheets("Feuil3").AutoFilter
        ActiveSheet.Range("$A$1:$V$" & i).AutoFilter Field:=20, Criteria1:=">=2"
        ActiveSheet.Range("$A$1:$V$" & i).AutoFilter Field:=22, Criteria1:="="
        Range("A1").Select
        Sheets("Feuil3").UsedRange.SpecialCells(xlCellTypeVisible).Copy
        Sheets("Feuil4").Range("A1").PasteSpecial (xlPasteAll)
     
    End Sub

    Malheureusement cela ne fonctionne toujours j'ai un débogage sur la première ligne du programme ..

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Malheureusement cela ne fonctionne toujours j'ai un débogage sur la première ligne du programme ..
    Si ta copie de code est identique, il te manque un K

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

Discussions similaires

  1. [MySQL] Tableau de saisie avec nombre de lignes variables
    Par MABILLE dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/11/2015, 14h51
  2. Tableau avec nombre de lignes variable
    Par grrd dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/05/2013, 12h05
  3. Somme.si avec un nombre de lignes variables
    Par puledad1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2013, 16h14
  4. Somme.si avec un nombre de ligne variables
    Par Atofi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/01/2010, 14h30
  5. Formulaire avec nombre de lignes de saisie variable
    Par NadègeG dans le forum Langage
    Réponses: 9
    Dernier message: 03/10/2006, 08h10

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