Bonjour,
Je souhaite automatiser avec une macro la recherche d'une valeur dans une base de donnée Excel. Puis d'isoler la ou les lignes pour n'avoir que celles-ci visibles.
Merci !![]()
Bonjour,
Je souhaite automatiser avec une macro la recherche d'une valeur dans une base de donnée Excel. Puis d'isoler la ou les lignes pour n'avoir que celles-ci visibles.
Merci !![]()
Bonjour,
Mais encore?
Pourrais tu poster ton code actuel? Tes données sont bien dans un tableau structuré, le nom de la colonne à filtrer ?,...
C'est un peu lights comme info.
L'enregistreur de macro pourrait aussi être une base de travail intéressante.
Bat,
Je complète ma demande.
J'ai une base de données clients avec 50 champs (colonnes ) et près de 2000 enregistrements (lignes)
Lorsque je filtre sur une colonne seules la ou les colonnes filtrées apparaissent. il est plus facile de remplir ou de modifier les enregistrements. Pas de risque de changement de ligne involontaire.
J'utilise en plus une formule pour mettre en surbrillance toute la ligne, ce qui limite également les erreurs.
L'enregistreur de Macro n'enregistre pas les commandes Ctrl+F ou bien les "filtres textuels, Est égale à... "dans les colonnes. C'est la première chose que j'ai tenté.
on devrait pouvoir créer une macro qui va jusqu'au au moment ou il faut introduire la valeur recherchée (comme Ctrl+F), ou bien une autre qui pointerait sur un champs (code client, par exemple) non ? et qui du coup isolerai la ou les lignes qui contiennent la ou les valeurs recherchées.
Licence Office 365 complète, donc Excel 2019.
Merci pour ton aide !
![]()
Salut.
XL365 donc je suppose que tu travailles avec des tableaux structurés...
Avec le tableau suivant nommé Tableau1
Tu peux utiliser le code suivant, à adapter à ton cas. Note que sans ShowAllData, le filtre s'ajoute au précédent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub setFilter() Dim ls As ListObject Set ls = Range("tableau1").ListObject With ls .AutoFilter.ShowAllData .Range.AutoFilter .ListColumns("Nom").Index, "Térieur" End With End Sub
Bien sûr, on pourrait (devrait?) rendre cela générique.
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
Bon,
Si j'ai bien compris, il n'est pas possible d’arrêter une macro pour introduire la valeur recherchée. introduire une boite de dialogue pour la saisir ?
trop compliqué. je reste sur mes commandes manuelles !
Merci pour ton aide.
![]()
Tu peux demander à l'utilisateur de transmettre une valeur à la macro avec Inputbox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub setFilter() Dim ls As ListObject Dim Value As String Value = InputBox("Valeur du filtre svp") Set ls = Range("tableau1").ListObject With ls .AutoFilter.ShowAllData .Range.AutoFilter .ListColumns("Nom").Index, Value End With End Sub
Sans voir ton code, difficile de t'aider mieux. Si tu découpes ton code en petites "briques" constituées de procédures et fonctions qui s'appellent durant le déroulement de ton "programme", tu pourras facilement faire intervenir l'utilisateur quand tu le souhaites. Le but serait d'avoir une procédure qui filtre ton tableau en fonction d'une valeur reçue en paramètre
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 Sub setFilter(CustomerName As String) Dim ls As ListObject Set ls = Range("tableau1").ListObject With ls .AutoFilter.ShowAllData .Range.AutoFilter .ListColumns("Nom").Index, CustomerName End With End Sub Sub MaMacro() Dim CustomerName As String '... '... CustomerName = InputBox("Nom du client pour le filtre svp") setFilter CustomerName '... '... '... End Sub
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
Partager