Copie des données filtrées à une autre feuille de calcul où l'utilisateur entrait des critères de filtrage via Combobox (userForm ou ActiveX) strong> finalement, je souhaite copier sélectionner des données à partir d'une feuille de travail à un autre feuille de travail. Pour isoler les données pertinentes pour la copie à travers je planifie d'utiliser des filtres. Je souhaite inclure un objet de liste déroulante dans la feuille de calcul qui permettra à l'utilisateur de sélectionner les critères de filtrage p> Il s'agit essentiellement de répliquer la fonction Filtre de données Excel, mais sans être restreint de position postérieure à la colonne filtrée. P> Je suppose que laferform ou ActiveX Combobox est la voie à suivre? Ceci où je manque. Je ne peux pas comprendre comment appeler la valeur sélectionnée à partir du ComboBox par l'utilisateur pour informer la procédure Autofilter. P> Sub M_00()
Dim wB As Workbook
Dim wS1, wS2 As Worksheet
'Dim x As ???
Dim rng3 As Range
Dim lrowS3 As Long
Set wB = This.Workbook
Set wS1 = wB.Sheets(1)
Set wS3 = wB.Sheets(3)
'define range for Combo Box drop down list from data on Sheet 3
lrowS3 = wS3.Cells(Rows.Count, 1).End(xlUp).Row
Set rng3 = wS3.Range(Cells(2, 2), Cells(lrowS3, 2))
'Don't know how to
' a) assign my rng3 values to the ComboBox drop down list
' b) call the selection from the ComboBox to inform my AutoFilter
wS1.ComboBox1.List = rng3.Value
x = wS1.ComboBox1.Selection
' turn off any autofilters that may already be active in Sheet 1
wS1.AutoFilterMode = False
' filter column 4 based on combo box selection
wS1.UsedRange.AutoFilter Field:=4, Criteria1:=x
'Once filtered I plan you assign the visible data to an array and copy
'it to the required sheet.
End Sub
3 Réponses :
Fondamentalement, quelle autofiltre est-ce que cela cache les entières qui ne correspondent pas au droit de sélection. Dans cet exemple, je vais aspercuserai les informations que vous recherchez si dans la colonne B Enfin, yo set ANOTHE SUB pour interdire les lignes P> for i = 2 to lr
activesheet.range("B"&i).hidden = false
next i
Je ne suis donc pas sûr d'avoir 100% de ce que vous essayez de faire, mais voici une façon de le faire:
L'approche suivante est destinée à fonctionner avec une combinaison ActiveX. P>
Pour des raisons de simplicité, supposons que vous avez la configuration suivante: p>
Les valeurs du filtre sont dans Tout d'abord, vous avez besoin d'un sous-niveau qui initialise le ComboBox. Cela peut être situé dans votre module. Comment ce A1: A8 CODE> et que vous souhaitez filtrer la colonne C, par le nom de la journée. P>
Sub code> est appelé est à vous de choisir. Si la liste doit être mise à jour régulièrement, vous pouvez avoir un bouton dédié pour cela. P>
Sub testFilter(filterValue As String) 'A sub that is located in the module and applies the filter. This is called whenever the Value of the combobox is changed
Dim sht As Worksheet
Dim rngToBeFiltered As Range
Set sht = ThisWorkbook.Worksheets("Name of your Worksheet") 'The worksheet where the range that needs to be filtered is located
Set rngToBeFiltered = sht.Columns("C")
If filterValue = "No Filter" Then
rngToBeFiltered.AutoFilter field:=1 'If No Filter is selected then all data is displayed
Else
rngToBeFiltered.AutoFilter field:=1, Criteria1:=filterValue 'else the filter is applied
End If
End Sub
J'ai fini par diviser l'opération en deux modules, m_00_filter () et m_00_generate ().
Les premiers filtres Les données basées sur la sélection à partir d'un formulaire d'utilisateur ComboBox Staticiquement attribuée à une autre feuille de calcul dans le même classeur. p> Le deuxième module copie les données visibles et les copie sur un autre classeur.
Merci encore pour votre aide. P> Vous apprécierez tous prenant le temps.
Acclamations. p> p>
Notez que si vous
DIM WS1, WS2 comme feuille de calcul CODE> Seul
WS2 code> est de type
de la feuille de calcul code> mais
ws1 code> est
Variante code>. Dans VBA, vous devez spécifier un type pour chaque b> variable:
DIM WS1 en tant que feuille de calcul, WS2 comme feuille de calcul code> sinon il est par défaut sur
variante code>.
Bienvenue à cela. Puis-je demander où se trouve votre code? Est-ce dans un module? Est-ce dans une feuille de calcul? Est-ce dans une formulaire user?
Merci pour vos commentaires. Je n'ai pas réalisé ça. Le code est situé dans le module