VBA - filtrer des données par un userform - Excel

VBA - filtrer des données par un userform VBA : Récupération de données dans userform dynamique (textbox) (Résolu) » Forum - VB / VBA VBA effacer données rentrées par userform » Forum - Bureautique VBA - Recherche de données - La méthode find » Conseils pratiques - Visual Basic [Excel VBA] Filtre sur couleur de cellules... (Résolu) » Forum - VB / VBA Access vba filtre date Etat (Résolu) » Forum - Bureautique

Bonjour,

J'ai un fichier Excel avec deux onglets, un "Données" et un "Synthèse"

Je souhaite à l'aide d'un userform trier les valeurs de l'onglet données et les copier dans l'onglet synthèse en les filtrant selon trois combobox : le statut, le secteur et le nom.

Pour l'instant j'ai comme code VBA :


'APPLIQUER UN TRI A L'AIDE DE L'USERFORM
'Définition des variables
Dim compteur As Integer
compteur = 15
dernlign = Sheets("Données").Cells(Rows.Count, 1).End(xlUp).Row



'Faire un tri selon le nom du collaborateur
For ligne = 2 To dernlign
If Sheets("Données").Cells(ligne, 5).Value = liste_nom.Value Then
Sheets("Données").Activate
Sheets("Données").Range(Cells(ligne, 5), Cells(ligne, 5)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 2)
Sheets("Données").Range(Cells(ligne, 8), Cells(ligne, 12)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 3)

compteur = compteur + 1
End If

Next ligne

'Faire un tri selon le secteur
For ligne = 2 To dernlign
If Sheets("Données").Cells(ligne, 3).Value = liste_secteur.Value Then
Sheets("Données").Activate
Sheets("Données").Range(Cells(ligne, 5), Cells(ligne, 5)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 2)
Sheets("Données").Range(Cells(ligne, 8), Cells(ligne, 12)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 3)
compteur = compteur + 1
End If

Next ligne

'Faire un tri selon le statut
For ligne = 2 To dernlign
If Sheets("Données").Cells(ligne, 6).Value = liste_statut.Value Then
Sheets("Données").Activate
Sheets("Données").Range(Cells(ligne, 5), Cells(ligne, 5)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 2)
Sheets("Données").Range(Cells(ligne, 8), Cells(ligne, 12)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 3)
compteur = compteur + 1
End If

Next ligne


Le soucis est qu'avec cette boucle for, mes données se copient de façon cumulative, j'ai ainsi d'abord toute les données correspondant au nom saisi dans l'userform qui se copient puis toutes celles correspondant au secteur puis toutes celles correspondant au statut.

Je voudrais que les conditions se cumulent, que ne se copient que les données qui correspondent au secteur ET au statut ET au nom saisis dans le userform.

J'ai bien essayé avec un AND comme :

For ligne = 2 To dernlign
If Sheets("Données").Cells(ligne, 6).Value = liste_statut.Value and Sheets("Données").Cells(ligne, 3).Value = liste_secteur.Value and Sheets("Données").Cells(ligne, 5).Value = liste_nom.Value Then
Sheets("Données").Activate
Sheets("Données").Range(Cells(ligne, 5), Cells(ligne, 5)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 2)
Sheets("Données").Range(Cells(ligne, 8), Cells(ligne, 12)).Copy Destination:=Sheets("Synthèse").Cells(compteur, 3)
compteur = compteur + 1
End If

Next ligne



Mais le problème avec cette solution est qu'elle m'impose de remplir toutes les données de l'userform ou j'obtient une copie vide. Cependant je voudrais pouvoir importer des données que, par exemple, qu'en saisissant un secteur dans le userform.

Une idée de comment saisir mon code pour obtenir ce que je recherche ?
Je ne peux malheureusement pas vous fournir mon fichier Excel (meme si j'ai bien conscience que ca serait plus simple) car celui ci contient des données confidentielles.

Je vous remercie par avance pour votre aide !

Forum

VBA - filtrer des données par un userform VBA : Récupération de données dans userform dynamique (textbox) (Résolu) » Forum - VB / VBA VBA effacer données rentrées par userform » Forum - Bureautique VBA - Recherche de données - La méthode find » Conseils pratiques - Visual Basic [Excel VBA] Filtre sur couleur de cellules... (Résolu) » Forum - VB / VBA Access vba filtre date Etat (Résolu) » Forum - Bureautique

Web: www.shapebootstrap.net

9 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour

vu la météo dans mon coin.....
proposition
on peut sélectionner 1 ou plusieurs combobox en cochant le ou les checkbox concernés.

l''écriture des résultats dans la synthèse est effectué par une macro parametrée (valeur du combo, sa colonne dans les données (module vba "synthèse")

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Il me semble que ton formulaire convient très bien pour réaliser un filtre élaboré en alignant sur la feuille tes rubriques de filtrage. Ainsi avec un code très réduit, tu peux faire tes sélections sur chacun des 5 éléments remplis ou vides sans souci

https://www.cjoint.com/c/HEqvgW6KyLl

à toi de nos dire si cela correspond

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour

Voir l'indispensable
http://boisgontierjacques.free.fr/

du coté des filtres en cascade


Reply
réponses:
  • auteur

  • auteur

    Bonjour,

    Je vous remercie pour votre réponse et pour ce site où j'ai pu trouver d'autres informations dont j'avais besoin.
    Cependant je pense que vous n'avez pas compris mon problème car je ne souhaite pas faire des filtres en cascade dans mon userform.

  • michel_m

    dont acte....

  • michel_m

    on ne peut que faire de hypothèses compte tenu de l'absr,ce de renseignements précis de ta part

    par ex: comment sélectionnes tu le ou les combo utiles ? sur le clic du combo

    Crées tu une variable regroupant les combos sélectionnés ?
    pâr ex:
    choix= statut, nom
    on suppose que tu as un bouton pour déclencher le processus....

    quels sont les libellés des ent^tes de ta base de données utiles colonnes 5 à ??, 8 à 12 etc
    le but est de voir si on peut utiliser une technologie sans boucle (ADO) ou pas ?
    a propos:
    Sheets("Données").Range(Cells(ligne, 5), Cells(ligne, 5)) tu es s^re ?

    mais tu n'auras au mieux qu'un principe et non une solution

    généralement, les demandeurs livrent un extrait du classeur avec des données bidons comme nom1, nom2, nom3, ect
    petit effort nécessaire pour avoir une aide bénévole

    A toi de voir

  • SolineG

    Voici mon fichier
    https://www.cjoint.com/c/HElpz36z7gb

    Merci de votre aide

  • michel_m

    Bonjour,

    vu la météo ce dimanche dans mon coin.....

    proposition
    on peut sélectionner 1 ou plusieurs combobox en cochant le ou les checkbox concernés.

    l''écriture des résultats dans la synthèse est effectué par une macro parametrée (valeur du combo, sa colonne dans les données (module vba "synthèse")

    https://mon-partage.fr/f/lTYNoAE0/

  • michel_m

    Tiens, je viens de m'apercevoir que j'avais très mal lu la demande !
    si le problème n'est pas résolu et si ca t'intéresse fait signe

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed