filtrer par macro... et récupérer le resultat !

  • Initiateur de la discussion Initiateur de la discussion missk
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

missk

XLDnaute Nouveau
Bonjour bonjour !

alors voilà je suis en train de chercher un mega raccourci, et j'aurai besoin d'un ptit coup de main...

Voilàààààà :
j'ai une feuille excel contenant 3 colonnes A,B, et C. A, et B contiennent des infos uniques. Et C contient parfois une valeur.
Je souhaite créer une macro qui me renvoie une collection d'item,
1 item par ligne (texte de A & texte de B & texte de C),
pour chaque ligne dont C contient une valeur.

bref, ma solution, pour l'instant est de type :

i=0
while cells(i,1).value <> ""
if cell(i,3)<> "" then
macollection.add cells(i,1) & cells(i,2) & cells(i,3)
end if
i=+1
wend

Le truc est que je suis obligée de scanner toute la feuille. Je me demandais si en passant par un tri, et une selection de colonne, on ne pourrait pas aller plus vite ?

D'ailleurs ma collection semble se limiter à 256 items... est ce normal ??

Bonus question : A l'aide d'une macro, j'ai inséré une liste de validation dans une cellule. Mais j'aimerai savoir s'il est possible de déclencher un evenement si l'utilisateur tape une mauvaise valeur, actuellement j'utilise :

with activeworkbook.sheets(truc).cells(x,y).validation
.errortitle="warning"
.errormessage="mon message d'erreur"
end with

merci de m'avoir lue !
 
Dernière édition:
Re : filtrer par macro... et récupérer le resultat !

Bonsoir MissK,

missk à dit:
Le truc est que je suis obligée de scanner toute la feuille. Je me demandais si en passant par un tri, et une selection de colonne, on ne pourrait pas aller plus vite ?

Si le nombre de cellules dans la colonne C sont nombreuses... OUI un trie te ferais gagner du temps (en association avec le code : Range("C65536").End(xlUp).Row pour le cas où les cellules de colonne C vide soit en bas : tris decroissant)

La sélection de la colonne, je ne sais pas.

missk à dit:
A l'aide d'une macro, j'ai inséré une liste de validation dans une cellule. Mais j'aimerai savoir s'il est possible de déclencher un evenement si l'utilisateur tape une mauvaise valeur, actuellement j'utilise :

Code:
with activeworkbook.sheets(truc).cells(x,y).validation
.errortitle="warning"
.errormessage="mon message d'erreur"
end with

J'aurais utilisé la même idée que toi. Pas mieux.

PS. : a première vu, j'ai l'impression que ta boucle balaye TOUTES les lignes d'Excel et non pas uniquement de ton tableau? Donc oui, avec un trie plus le code ci-dessus, tu gagnerais bcp de temps!

Bonne soirée
 
Dernière édition:
Re : filtrer par macro... et récupérer le resultat !

Bonsoir,
Pour le tri, peut-être
Code:
'...
    With ActiveSheet.UsedRange 'à adapter
        .AutoFilter Field:=1, Criteria1:="<>"
        .AutoFilter Field:=3, Criteria1:="<>"
    Set Plage = .Cells.SpecialCells(xlCellTypeVisible)
        For Each Lign In Plage.Areas
            With Lign
            MaCollection.Add .Cells(Lign.Row, 1) & .Cells(Lign.Row, 2) & .Cells(Lign.Row, 3)
            End With
        Next
    End With
'...
A+
kjin
 
Re : filtrer par macro... et récupérer le resultat !

Bonsoir missk, Excel-lent

En passant par un tableau Excel travaille très vite.
Code testé sur 14323 lignes, la collection a renvoyé 7161 items quasi instantanément.

Code:
Sub Collect()

Dim Tablo, k As Long
Dim Col As Collection

Set Col = New Collection
Tablo = Sheets("Feuil3").Range("A1:C" & Sheets("Feuil3").Range("A65536").End(xlUp).Row)
For k = 1 To UBound(Tablo, 1)
  If Tablo(k, 3) <> "" Then
     On Error Resume Next
     Col.Add Tablo(k, 1) & Tablo(k, 2) & Tablo(k, 3)
     On Error GoTo 0
  End If
Next
MsgBox Col.Count
Set Col = Nothing

End Sub

A+

Edit : Bonsoir Kjin, pas rafraichi
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
705
Réponses
8
Affichages
647
Réponses
4
Affichages
581
Réponses
7
Affichages
361
Retour