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

Contribuez Discussion :

Equivalent Filtre() de Google Sheet en VBA


Sujet :

Contribuez

  1. #1
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Equivalent Filtre() de Google Sheet en VBA
    Bonjour à tous

    Débutant en Excel/VBA je cherchais un équivalent à la fonction filtre() de Google Sheet.

    "L'équivalent" que j'ai pu trouvé est la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(LIGNE()-1>NB.SI($A:$A;D$1);"";INDEX($B:$B;PETITE.VALEUR(SI($A:$A=D$1;LIGNE(A:A);"");LIGNE()-1)))
    J'ai donc préféré faire une fonction perso en VBA mais j'aimerais avoir vos avis :

    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
    Public Function JGFiltre(tableau, Donnée, Colonne) As Variant
     
    Dim compteur As Integer
    compteur = 1
     
     
    Dim i As Integer
    Dim MonTableau
    Dim TableauSortie()
     
    MonTableau = tableau
     
    For i = 1 To UBound(MonTableau, 1)
    ReDim Preserve TableauSortie(1 To compteur + 1)
        If MonTableau(i, 1) = Donnée Then
            TableauSortie(compteur) = MonTableau(i, Colonne)
            compteur = compteur + 1
        End If
     
    Next
    JGFiltre = WorksheetFunction.Transpose(TableauSortie)
    End Function
    donnant, pour l'exemple, ceci :

    Nom : jgfiltre.JPG
Affichages : 1068
Taille : 37,1 Ko

  2. #2
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Là, je cherche le moyen de virer les 0 et les #N/A

  3. #3
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Version quasi finale et donc voici l'aide qui accompagne la fonction :

    Nom : jgfiltreaide.JPG
Affichages : 999
Taille : 61,6 Ko

    et son code :

    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
    Public Function JGFiltre(tableau, Donnée, Colonne_entree, Colonne_sortie) As Variant
     
    Dim compteur As Integer
    compteur = 1
     
    Dim i As Integer
    Dim MonTableau
    Dim TableauSortie()
     
    MonTableau = tableau
     
    For i = 1 To UBound(MonTableau, 1)
        If MonTableau(i, Colonne_entree) = Donnée Then
            TableauSortie(compteur) = MonTableau(i, Colonne_sortie)
            compteur = compteur + 1
        End If
    ReDim Preserve TableauSortie(1 To compteur + i)
    Next
    JGFiltre = WorksheetFunction.Transpose(TableauSortie)
    End Function
    Les retours et avis sont plus que bienvenus.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 929
    Points
    55 929
    Billets dans le blog
    131
    Par défaut
    Salut Marc (re-content de te voir ici...)

    Excel propose les filtres avancés, que l'on peut piloter par VBA... (Voir le tuto de Philippe Tulliez)


  5. #5
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut Marc (re-content de te voir ici...)

    Excel propose les filtres avancés, que l'on peut piloter par VBA... (Voir le tuto de Philippe Tulliez)

    Re-Salut!

    Le problème est surtout que filtre est une étape dans un processus où l'on rentre une feuille de données fournie par un logiciel et il en ressort un devis avec toutes les données filtrées automatiquement.

    Mais il faut que les personnes l'utilisant puisse facilement faire de petites modifications et ils n'ont pas du tout le niveau pour comprendre des EQUIV/INDEX mais l'ont pour comprendre le filtre() de GoogleSheet :/

    Du coup, autant reprogrammer le filtre() ^^

    Mais le but de la feuille est que rien ne soit fait "manuellement" en dehors de quelques cases à cocher "ça je garde", "ça je garde pas".

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 929
    Points
    55 929
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par VanlindtMarc Voir le message
    [...]

    Le problème est surtout que filtre est une étape dans un processus où l'on rentre une feuille de données fournie par un logiciel et il en ressort un devis avec toutes les données filtrées automatiquement.[...]
    Cela n'empêche pas, selon moi, l'utilisation du filtre automatique ou avancé via VBA. A nouveau, le VBA vient simplement en appui de l'interface, et rien n'interdit de manipuler le filtre (automatique ou avancé) en VBA en lui passant les données choisies par l'utilisateur (qui garde ou ne garde pas telles données).

    Cela dit, je ne connais pas bien les filtres du GoogleMachin, et j'irai y jeter un coup d'oeil, mais bon, pour un filtre sur une feuille de calcul, on ne sait pas être d'une inventivité débordante en terme d'interface, pensé-je...

Discussions similaires

  1. [Google Sheets] Activer / désactiver le filtre
    Par siuol dans le forum APIs Google
    Réponses: 0
    Dernier message: 29/08/2017, 18h34
  2. [Google Sheets] Traduire une macro Excel VBA en JS
    Par GastonRicard dans le forum APIs Google
    Réponses: 1
    Dernier message: 26/01/2017, 16h47
  3. [Toutes versions] Adapter une macro VBA sur une google sheet
    Par Kiouane dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/04/2016, 17h39
  4. VBA vs JAVA (google sheet)
    Par vincendie dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 28/03/2016, 15h21
  5. filtre sur plusieurs colonnes en vba
    Par caloumaya dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/05/2007, 14h05

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