XL 2019 Récupération de Donnée

  • Initiateur de la discussion Initiateur de la discussion Caninge
  • 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 !

Caninge

XLDnaute Accro
Bonjour à Tous,
Je fais appel à votre professionnalisme.
Dans mon exemple :
Dans la feuille 1 j'écris Michèle dans la cellule B2.
Dans la feuille 2 comment avoir uniquement les résultats de Michèle.
Colonnes B et H comprises.
Je n'arrive pas. Je voulais voir avec la Formule Décaler !!!
Merci de m'aider.
CANINGE
 

Pièces jointes

En VBA on peut utiliser le filtre avancé :
VB:
Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If FilterMode Then ShowAllData
With Range("A2:M" & Cells.SpecialCells(xlCellTypeLastCell).Row)
    .Cells(2, .Columns.Count + 2) = "=OR(ISBLANK($B$1),$B3=$B$1,$H3=$B$1)" 'critère
    .AdvancedFilter xlFilterInPlace, .Cells(1, .Columns.Count + 2).Resize(2) 'filtre avancé
    .Cells(2, .Columns.Count + 2) = ""
End With
End Sub
 

Pièces jointes

Bonsoir à Tous,
c'est parfait,
je voudrais faire une troisième feuille avec seulement les personnes écrites dans les cellules B1 et H1 de la feuille1
Dans l'exemple seulement les lignes Bernadette et François qui sont présents sur la même ligne.
J'ai essayé de biduler la formule mais bon !!!
Merci d'avance
CANINGE
 

Pièces jointes

Bonsoir Caninge,

Formule matricielle en Feuil2!A3, à copier à droite et vers le bas :
Code:
=SIERREUR(INDEX(Feuil1!A:A;PETITE.VALEUR(SI((Feuil1!$B$3:$B$20&Feuil1!$H$3:$H$20=Feuil1!$B$1&Feuil1!$H$1)+(Feuil1!$B$3:$B$20&Feuil1!$H$3:$H$20=Feuil1!$H$1&Feuil1!$B$1);LIGNE(Feuil1!$3:$20));LIGNE(A1)));"")
Edit : et si les 2 noms en B1 et H1 sont effacés on affiche tout :
Code:
=SIERREUR(INDEX(Feuil1!A:A;PETITE.VALEUR(SI((Feuil1!$B$1&Feuil1!$H$1="")+(Feuil1!$B$3:$B$20&Feuil1!$H$3:$H$20=Feuil1!$B$1&Feuil1!$H$1)+(Feuil1!$B$3:$B$20&Feuil1!$H$3:$H$20=Feuil1!$H$1&Feuil1!$B$1);LIGNE(Feuil1!$3:$20));LIGNE(A1)));"")
A+
 

Pièces jointes

Dernière édition:
Et avec le filtre avancé :
VB:
Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B1,H1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If FilterMode Then ShowAllData 'affiche tout
If [B1] & [H1] = "" Then Exit Sub
With Range("A2:M" & Cells.SpecialCells(xlCellTypeLastCell).Row)
    .Cells(2, .Columns.Count + 2) = "=OR(B3&H3=B$1&H$1,B3&H3=H$1&B$1)" 'critère
    .AdvancedFilter xlFilterInPlace, .Cells(1, .Columns.Count + 2).Resize(2) 'filtre avancé
    .Cells(2, .Columns.Count + 2) = ""
End With
End Sub
 

Pièces jointes

Bonsoir @Caninge🙂, @job75😉, @sylvanu😉, @Phébus 🙂,

Je continue avec VBA dans le fichier joint, on couvre les 4 cas:
  1. B1 vide et H1 vide : on prend tout
  2. B1 non vide et H1 vide : on prend les lignes où la colonne B ou H est égale à B1
  3. B1 vide et H1 non vide : on prend les lignes où la colonne B ou H est égale à H1
  4. B1 non vide et H1 non vide : on prend les lignes où la colonne B est égale B1 et la colonne H égale à H1 ou bien la colonne B est égal H1 et la colonne H égale à B1
Les noms peuvent être saisis en majuscule ou minuscule ou un mélange des deux.
  • Effacer ou saisir une valeur dans les cellules B1 et/ou H1
  • Activer la feuille Feuil2
 

Pièces jointes

Dernière édition:
- 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

  • Question Question
Microsoft 365 macro TCD
Réponses
4
Affichages
286
Réponses
3
Affichages
229
Réponses
2
Affichages
143
Réponses
5
Affichages
558
Retour