recherche sur un tableau

steph30

XLDnaute Nouveau
Bonjour,

Je me suis fais un petit fichier mais je coince sur une macro. Etant totalement novice, je fais mes macros de bric et de broc au fur et à mesure de mes navigations sur des forums mais là rien à faire je trouve pas.

Alors je souhaite faire une recherche dans toute ma feuille "table" d'une valeur contenu dans la cellule C3 de ma feuille "consultation" et donc afficher toutes les lignes où ma valeur est.

Ci joint un exemple édulcoré de la structure du tableau

Est ce que quelqu'un peut m'aider, s'il vous plait ?
 

Pièces jointes

  • Classeur1.xls
    13.5 KB · Affichages: 49
  • Classeur1.xls
    13.5 KB · Affichages: 57
  • Classeur1.xls
    13.5 KB · Affichages: 57

Grand Chaman Excel

XLDnaute Impliqué
Re : recherche sur un tableau

Bonsoir steph30,

Voici un code que tu pourras adapter au besoin.
Note : le code s'exécute quand il y a un changement dans la cellule C3 que j'ai nommé "NoProduit". La recherche se fait dans toutes les colonnes de ton onglet "Table". Si nécessaire, tu peux limiter les recherches uniquement dans les colonnes avec les NoProduit mais il faudrait adapter un peu la macro.

A+
 

Pièces jointes

  • Classeur1_steph30.xls
    41.5 KB · Affichages: 71

Grand Chaman Excel

XLDnaute Impliqué
Re : recherche sur un tableau

Bonjour Steph30,

En effet, je n'avais pas testé cette possibilité.
Voici, ça devrait faire l'affaire :

A+

Edit: fichier version améliorée plus rapide
 

Pièces jointes

  • Classeur1_steph30(1).xls
    43 KB · Affichages: 47
Dernière édition:

steph30

XLDnaute Nouveau
Re : recherche sur un tableau

Bonjour,

Effectivement ça marche beaucoup mieux comme ça :D Merci beaucoup

Par contre, je suis désolée j'abuse un peu, est ce qu'il est possible de modifier le code de façon à ce que quand il n'y a plus rien dans la cellule cible les cellules du tableau se vident ?

Merci encore une fois et merci d'avance pour cette modif.
 

JCGL

XLDnaute Barbatruc
Re : recherche sur un tableau

Bonjour à tous,

Avec le code de notre ami :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False 'évite de raffraîchir continuellement
If Intersect(Target, [NoProduit]) Is Nothing Then Exit Sub
If Not Intersect(Target, [NoProduit]) Is Nothing And [NoProduit] <> "" Then
Sheets("Consultation").Range("A7:O20000").ClearContents 'Vider le tableau de résultats
With ThisWorkbook.Sheets("Table").Range("A1:O20000") 'plage de recherche
Set Produit_Cherché = .Find([NoProduit], lookat:=xlWhole)
If Not Produit_Cherché Is Nothing Then
firstAddress = Produit_Cherché.Address
Do
Lastrow = ThisWorkbook.Sheets("Consultation").Range("A60000").End(xlUp).Row + 1 'ligne où écrire
Sheets("Table").Range("A" & Produit_Cherché.Row & ":O" & Produit_Cherché.Row).Copy Destination:=Sheets("Consultation").Range("A" & Lastrow) 'copie de la ligne
Set Produit_Cherché = .FindNext(Produit_Cherché)
Loop While Not Produit_Cherché Is Nothing And Produit_Cherché.Address <> firstAddress
End If
 
End With
End If
If Not Intersect(Target, [NoProduit]) Is Nothing And [NoProduit] = "" Then Sheets("Consultation").Range("A7:O20000").ClearContents 'Vider le tableau de résultats si C3 est vide
Application.ScreenUpdating = True
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 764
Messages
2 091 860
Membres
105 082
dernier inscrit
saragestion