Aide pour afficher un resultat d'une recherche sur 2 colonnes

s8fx

XLDnaute Nouveau
Salut le forum,

Je viens vous demander un coup de main ou tout du moins un avis extérieur sur un pb.

Le but de ce fichier est d'obtenir une réponse dans un tableau d'une recherche faite sur 2 colonnes.

J'ai pour le moment réussi a faire ma recherche sur une ou l'autre colonne mais pas les 2 en même temps.
Je pense que je n'arrive plus à prendre du recul vis à vis de mon code.
(que j'ai trouvé sur le net et adapté selon mes besoins, je ne suis pas un expert en VBA :confused: )

Pour bien faire vous trouverais un fichier d'exemple en PJ.
Dans ce fichier vous avez l'onglet RCH ou je veux taper ma recherche et l'onglet Base qui contient les infos à afficher.
Vous trouverez aussi une capture d'ecran qui simule le résultat que je voudrais obtenir.

Nous sommes en XP (ou Seven) mais tous sous Office 2010.

Je vous remercie par avance des avis ou de l'aide que vous pourrez m'apporter.
(je ne suis pas fermé alors si vous pensez que ma logique est mauvaise et mon code encore plus :cool: , n'hésitez pas à me soumettre vos idées si le résultat est le même)
 

Pièces jointes

  • Recherche_Base.xlsm
    77.6 KB · Affichages: 46

Paf

XLDnaute Barbatruc
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Bonjour

Je ne m'aventurerai pas dans ces fonctions personnalisées en matriciel.

une solution simple (sur le principe) par macro:

Dans la feuille Base
- trier (grâce au filtre automatique) sur la colonne D (Equipement) puis copier les lignes affichées sur feuille RCH
- annuler le tri précédent puis trier sur la colonne P (Equipement 2) et sur la colonne D ( avec filtre = "différent de") et copier les lignes affichées
- annuler le tri

Pas le temps cet après-midi d'avancer. Mais je regarde, à moins que vous teniez au principe en place

A+
 

job75

XLDnaute Barbatruc
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Bonsoir s8fx, Paf, CHALET53,

Avec le filtre avancé c'est simple :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Address <> "$K$1" Then Exit Sub
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Clear 'RAZ
With Sheets("BASE")
  'si tous les champs ont une en-tête cette ligne est inutile
  .[K1] = "Champ K": .[L1] = "Champ L": .[S1] = "Champ S"
  .AutoFilterMode = False
  .[T2].NumberFormat = "General" 'surtout pas de format Texte...
  .[T2] = "=SEARCH(" & [K1].Address(External:=True) & ",D2&CHAR(1)&P2)"
  .[A:S].AdvancedFilter xlFilterCopy, .[T1:T2], [A3:S3]
  .[T2] = ""
End With
Rows("3:" & Rows.Count).Sort [G3], xlAscending, Header:=xlYes 'tri
End Sub
Il faut que tous les champs aient une en-tête...

Fichier joint.
 

Pièces jointes

  • Recherche_Base(1).xlsm
    79 KB · Affichages: 34

job75

XLDnaute Barbatruc
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Bonjour le fil, le forum,

C'est sans doute mieux en mémorisant la ligne d'en-têtes :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Address <> "$K$1" Then Exit Sub
Dim af As Boolean, titres
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Clear 'RAZ
With Sheets("BASE")
  af = .AutoFilterMode 'mémorise
  titres = .[A1:S1] 'mémorise
  .[A1] = "Champ1": .[A1].AutoFill .[A1:S1], xlFillValues
  .[T2].NumberFormat = "General" 'surtout pas de format Texte...
  .[T2] = "=SEARCH(" & [K1].Address(External:=True) & ",D2&CHAR(1)&P2)"
  .[A:S].AdvancedFilter xlFilterCopy, .[T1:T2], [A3:S3]
  .[T2] = ""
  .[A1:S1] = titres: [A3:S3] = titres
  If af Then .[A1:S1].AutoFilter 'remet le filtre automatique
End With
Rows("3:" & Rows.Count).Sort [G3], xlAscending, Header:=xlYes 'tri
[A:S].Columns.AutoFit 'largeur des colonnes
End Sub
Fichier (2).

Bonne journée.
 

Pièces jointes

  • Recherche_Base(2).xlsm
    38.8 KB · Affichages: 41

Paf

XLDnaute Barbatruc
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Bonjour à tous

Bien qu'il n'y ait pas de nouvelles de s8fx et qu'il y ait déjà plusieurs solutions plus synthétiques, voici une approche de plus:

Dans le code de la feuille RCH pour déclencher la macro par la saisie en K1:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("K1")) Is Nothing Then Transfert Target
End Sub

Dans un module standard :

Code:
Sub Transfert(MonCritere)
Dim WS1 As Worksheet, WS2 As Worksheet

Set WS1 = Worksheets("BASE")
Set WS2 = Worksheets("RCH")

Application.ScreenUpdating = False

'met la feuille source en mode filtre si elle ne l'est pas
If Not WS1.AutoFilterMode Then WS1.Range("A1:S1").AutoFilter
  
'tri selon  colonne D
WS1.Range("A2").AutoFilter Field:=4, Criteria1:=MonCritere


'********  copie la feuille Base sur la feuille RCH
CopieLignes WS1, WS2

'annule le tri
WS1.Range("A2").AutoFilter Field:=4
'tri selon  colonne P et (non D)
WS1.Range("A2").AutoFilter Field:=16, Criteria1:=MonCritere
WS1.Range("A2").AutoFilter Field:=4, Criteria1:="<>" & MonCritere

'********  copie la feuille Base sur la feuille RCH
CopieLignes WS1, WS2

'annule le tri
 WS1.Range("A2").AutoFilter Field:=4
 WS1.Range("A2").AutoFilter Field:=16

 'supprime la trace de sélection
 Application.CutCopyMode = False
 
 Application.ScreenUpdating = True
End Sub
Code:
Sub CopieLignes(WS1, WS2)
 Dim DerLig, DerLig2, Plage As String
 '********  copie la feuille Base sur la feuille RCH
  'détermination de la dernière ligne feuille Base
  DerLig = WS1.Range("A" & Rows.Count).End(xlUp).Row
 'détermination de la première ligne libre en feuille RCH
 DerLig2 = WS2.Range("A" & Rows.Count).End(xlUp).Row + 1
 'détermination plage à copier
 Plage = "A2:R" & DerLig
 'Copie
 WS1.Range(Plage).SpecialCells(xlCellTypeVisible).Copy WS2.Range("A" & DerLig2)
End Sub

A+
 

s8fx

XLDnaute Nouveau
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Vous etes géniaux! Vs etes meme trop rapide pr moi. Je n'ai pas acces a mon fichier pr tester toutes ces idees mais je tenais à vs remercier des que j'ai vu vos reponses. Je vs redirai quelle sera la solution retenue la semaine prochaine. Bon weekend a tous!
 

gosselien

XLDnaute Barbatruc
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Bonjour,
Et que croyez-vous que j'ai fait gosselien :confused::rolleyes:
A+

Je n'ai juste mis qu'un minimum de vba, pour que l'utilisateur aie plus facile , autre manière de faire, mais je regarde toutes les réponses (parfois sans rafraichir l'écran, d'ailleurs) et pour ma part, je n'aime pas automatiser tout mais laisser aussi la main à l'utilisateur :)
J'essaye juste d'aider à mon niveau :D mais c'est plus souvent moi qui doit être aidé ou qui doit fouiller dans les réponses pour m'en inspirer :)
P.
 

Staple1600

XLDnaute Barbatruc
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Bonjour à tous

Vous etes géniaux! Vs etes meme trop rapide pr moi. Je n'ai pas acces a mon fichier pr tester toutes ces idees mais je tenais à vs remercier des que j'ai vu vos reponses. Je vs redirai quelle sera la solution retenue la semaine prochaine. Bon weekend a tous!
s8fx [bienvenue sur le forum]
Comment se fait-il que les remerciements ne furent pas si promptes là-bas...?
Aide pr afficher un resultat d'une recherche sur 2 colonnes : Excel - VBA

ô joie, ô bonheur du multipostage et caetera, et caetera ...:rolleyes:

NB Ne voir ici que de l'amicale ironie fatiguée car trop souvent rabâchée (en pure perte d'ailleurs)
 

s8fx

XLDnaute Nouveau
Re : Aide pour afficher un resultat d'une recherche sur 2 colonnes

Bonjour à tous,

je tenais à vous remercier une dernière fois :D

J'ai testé vos propositions et celle qui me convient le plus est celle de Gosselien.
Assez simple à lire pour mon niveau et super simple/rapide à mettre en place.

Pour la remarque de Staple1600 je la prends en compte et ne rebondis pas pour ne pas lancer un autre débat malgré moi.

Continuez de représenter l'esprit d'entre aide entre expert et novice pour continuer à nous faire apprendre et diffuser votre savoir.

A bientôt pour sur :eek:
 

Discussions similaires

Réponses
30
Affichages
1 K
  • Question
Microsoft 365 resultat
Réponses
6
Affichages
556

Statistiques des forums

Discussions
312 147
Messages
2 085 767
Membres
102 968
dernier inscrit
Tmarti