Boucle qui remplace un filtre
Bonjour à tous,
Je me permets de revenir vers vous car malgré les tutos et autres explications sur les boucle je bug un peu avec l'une d'entre elle. Enfin c'est plutôt l'ordi qui bug
En effet je cherche à filtrer des données par rapport à une condition (A1 du fichier). L'ensemble des données filtrées si elles sont séparées doivent constituer une nouvelle liste de choix pour une liste déroulante en étant groupé (à partir de E2).
Mon objectif : Avec plusieurs filtres ou tri par sélection de "button" + macro, je dois pouvoir créer un système entonnoir d'information et orienter les choix de mon utilisateur.
Pas certain d'être très clair mais si quelqu'un veut m'aider....j'en serais ravi.
Vous remerciant par avance pour votre aide et votre temps
A très bientôt
Bonjour,
Il est où le code que tu as commencé ?
Une base de données ne doit pas avoir de trous et comme Excel n'est pas un logiciel de base de données, il est nécessaire de dupliquer le champ !
Par exemple tu as en colonne A, B et C:
EP09/G1B/Grain bille
si sur la ligne suivante tu as G1C/Grain cuir et que ces valeurs sont "enfants" de "EP09", ta ligne doit être :
EP09/G1C/Grain cuir
La cellule en colonne A ne doit pas être vide.
C'est de cette façon que tu auras un filtrage efficace.
Bonjour Theze,
Merci pour ta réponse. Désolé de ne pas être revenu plus tôt. Je te réponds avant de faire un break WE 8) .
Bien d'accord sur le principe du filtre mais mon problème est juste là.
En fait j'ai différents codes en colonne B et C mais pas forcément d'affectation. C'est pourquoi je passe par une formule banale de sélection. Ensuite j'ai créé un code que je ne pense pas optimal car l'ordi tourne un long moment et j'ai l'impression que la mémoire sature. Le code est le suivant :
Sheets("db").Select
Range("a1").Copy
Range("b1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Sheets("db").Select
Range("f2:f10000").ClearContents
'Copie les bonnes infos et les tries
Range("e2:e100").Select
Selection.Copy
Range("f2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("DB").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DB").Sort.SortFields.Add Key:=Range("f2:f100"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("DB").Sort
.SetRange Range("f2:f100")
.Header = xlGuess
.MatchCase = True
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'LigneTransf As String
For i = 1 To 100
Range("e65536").End(xlUp)(2).Cells(premierLigne, 1).Select
Selection.Cut
Range("f65536").End(xlUp)(2).Cells(DerniereLigne + 1, 1).Select
ActiveSheet.Paste
Next
Range("a2").Select
Qu'en penses tu ?
Merci d'avance
Salut FranckGail,
ben..., euh..., il n'y a rien à en penser! Désolé!
Ce code ne fait rien ou presque à part tourner dans le vide. Pauvre ordi!
Theze a raison : complète ta BDD! Les macros ont horreur du vide!
Explique-nous clairement le raisonnement de tes entonnoirs et un fichier un peu plus conséquent!
A+