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 :

Filtrer tableau dynamique (virtuel) sur VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Filtrer tableau dynamique (virtuel) sur VBA
    Bonjour à tous !

    Je suis un débutant sur vba et je rencontre un gros problème.

    Je dois créer un fichier qui récupère des données dans une base de données, jusque-là tout va bien, ce fichier comporte un peu plus de 60 000 lignes et tous les jours des lignes se rajoutent.

    Pour les exécuter rapidement j'ai déclaré le tableau en virtuel sur VBA.

    Mon gros problème est que je dois filtrer (2 filtres: date, numéro) les données dans mon tableau, mais je n'arrive pas à trouver une fonction qui filtre ou alors un programme qui permet de filtrer sur VBA, pour ensuite recopier ce tableau sur une feuille Excel.

    Merci beaucoup.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    voir peut-être du côté de l'aide VBA de la fonction Filter

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    La fonction filter ne s'utilise que sur un tableau à 1 dimension et le mien en a 2.
    Cette fonction peut quand même être utilisé ?

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    exemple à améliorer car vite fait
    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
    Sub exemple()
    Dim Dl As Range, Tbl, tblFiltre(), x As Long, NbF As Long, y As Long
    y = 0
    With Sheets("Feuil1")
      Set Dl = .Range("A" & .Rows.Count).End(xlUp)
      Tbl = .Range("A2", Dl)
      'filtre demandé
      NbF = WorksheetFunction.CountIf(.Range("A2", Dl), "le filtre")
      ReDim tblFiltre(1 To NbF, 1 To 2)
      For x = 1 To UBound(Tbl, 1)
        If Tbl(x, 1) = "le filtre" Then
          y = y + 1
          tblFiltre(y, 1) = Tbl(x, 1)
          tblFiltre(y, 2) = Tbl(x, 2)
        End If
      Next
    End With
    Sheets("Feuil2").Range("A2").Resize(UBound(tblFiltre, 1), UBound(tblFiltre, 2)) = tblFiltre
     
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour cette réponse rapide !
    j'éssaye de le mettre dans mon programme, si j'ai bien compris le but est de chercher les bonnes valeurs dans un premier tableau, et ensuite de les incrémenter dans un autre tableau ?

    Du coup je voulais aussi savoir si quelqu'un sait comment utiliser la fonction FILTER = Filter(sourcesrray, match[, include[, compare]])
    Car je ne sais pas trop quoi mettre à la place de "Match", "Include", "compare".

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Je ne ferais pas mieux vis à vis de l'explication pourtant claire dans son aide !

    Sinon il y a un exemple vers la fin de ce tutoriel : Manipuler les chaînes de caractères en VB6 et VBA Excel

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Re,

    je reprends dès le départ :
    ...je dois filtrer (2 filtres: date, numéro) ...
    ou sont les filtres : même colonne, colonnes différentes ?

    La fonction filter ne s'utilise que sur un tableau à 1 dimension et le mien en a 2.
    2 dimensions mais combien de colonnes ?

    Du coup je voulais aussi savoir si quelqu'un sait comment utiliser la fonction FILTER = Filter(sourcesrray, match[, include[, compare]])
    Car je ne sais pas trop quoi mettre à la place de "Match", "Include", "compare".
    c'est une autre question ou a t'elle rapport avec le problème actuel ?

    Ce que j'ai envoyé n'est qu'un exemple (1 seul filtre sur une colonne) qu'on peut adapter à tous les filtres qu'on souhaitent sur n'importe quelle colonne. (on utilisera "Countifs" à la place de" Countif")

    N'hésites pas à donner de plus amples explications.

    Bon courage

  8. #8
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup !
    Mon programme marche!
    Il filtre mes données.
    Mais il reste un petit problème comment je peux faire pour le forcer a continue de chercher ?

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Mais il reste un petit problème comment je peux faire pour le forcer a continue de chercher ?
    à continuer de chercher ou ? si tu veux répéter l'opération par la suite, insères un bouton de commande(activeX) sur ta feuille et rentre le code ou dans son Private Sub, ecris tout simplement "exemple" soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    exemple
    End Sub
    bien sur parce que c'est ce nom que j'ai donné au code, sinon je ne vois pas ce que tu veux dire

  10. #10
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour à tous!

    Ce matin mon programme marche super bien et je vous remercie, mais mon problème est que quand il arrive l'étape filtre et que la valeur demandé n'est pas dans la première ligne il me sort rien...
    Car j'ai créé un userform ou on rentre les valeurs des numéros (colonne 2) et il y a 8 sortes de numéro (27 , 28 , 29 , 30 , 31 , 33).
    Le tableau se présente un peu comme ça :
    Numéros :
    27
    27
    28
    28
    29
    29
    30
    30
    31
    ...

    Quand je rentre 27 dans l'userform il me reporte bien les bonnes valeurs dans mon deuxième tableau, mais quand je mets 30 il me sort rien ...
    C'est pour cela que hier je vous parlez d'un forçage, pour qu'il continue à lire jusqu'à la fin.

    Merci

  11. #11
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    Que te répondre ?, envoies ton travail avec des données bidon si tu veux, je vérifierai dès qu je serai disponible

  12. #12
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Voila, mon filtre marche super bien je n'ai plus aucun problème, par contre est-il possible de filtrer plusieur variable en meme temps sur la même colonne ?
    exemple: numéros "27 , 28"

  13. #13
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Comme tu ne communiques toujours pas, je restes sur mon exemple, remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Tbl(x, 1) = "le filtre" Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Tbl(x, 1) = "le filtre" Or Tbl(x, 1) = "le filtre2" Then

Discussions similaires

  1. Changer la source de donnée d'un tableau dynamique croisé en VBA
    Par lytog dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/05/2015, 11h41
  2. VBA - Filtrer tableau croisé dynamique
    Par germ75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2011, 18h07
  3. Tableau Dynamique pointant sur Tableau Statiques
    Par ShaiLeTroll dans le forum Langage
    Réponses: 15
    Dernier message: 16/11/2009, 14h56
  4. Réponses: 2
    Dernier message: 06/09/2007, 15h08
  5. besoin d'aide sur tableau dynamique
    Par littlesquall dans le forum C
    Réponses: 16
    Dernier message: 02/11/2005, 02h50

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