Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 afficher dans 1 feuille les données d'une autre feuille en fct d'un critère

pilule007

XLDnaute Nouveau
Bonjour
J'ai une liste de membres, qui peuvent s'inscrire à des activités, comment puis avoir dans une seconde feuille, les membres avec leur données qui se sont inscrits à une activité avec 1 feuille pour chaque activité ?
merci pour votre aide
 

Pièces jointes

  • Classeur1.xlsx
    8.7 KB · Affichages: 20
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Pilule,
Un essai en PJ avec :
VB:
=SIERREUR(INDEX(Feuil1!C$5:C$30;PETITE.VALEUR(SI(Feuil1!$G$5:$G$30="OUI";LIGNE(INDIRECT("1:"&LIGNES(Feuil1!C$5:C$30))));LIGNES(Feuil1!$1:1)));"")
La formule est matricielle, il faut valider par Alt+Ctrl+Entrée
 

Pièces jointes

  • Classeur1 (5).xlsx
    15.4 KB · Affichages: 5

pilule007

XLDnaute Nouveau
Super
merci beaucoup
une question : pourquoi faut il mettre des accolades {} pour encadrer le code , et comment la met-on ?
si je copie le code, elles ne se mettent pas et le code ne fonctionne pas,
et si je les ajoute, cela ne va pas non plus
merci pour ton aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
La formule est matricielle, il faut valider par Alt+Ctrl+Entrée
Comme son nom l'indique une formule matricielle permet de mener les calculs sur une matrice sinon il serait impossible de détecter les différentes occurrences.
 

soan

XLDnaute Barbatruc
Inactif
Bonjour pilule007, sylvanu,

ton fichier en retour.

* regarde "Feuil3", puis "Feuil2"

* va sur "Feuil1", et fais Ctrl e ➯ travail effectué !

* note que tu es sur "Feuil2" ; regarde "Feuil3"

* note que "Feuil1" est restée inchangée

VB:
Option Explicit

Sub CpyData()
  If ActiveSheet.Name <> "Feuil1" Then Exit Sub
  Dim sh1 As Worksheet, sh2 As Worksheet, plg As Range
  Dim nlm&, n&, i&, j&, k&
  Set sh1 = Worksheets("Feuil2"): Set sh2 = Worksheets("Feuil3")
  nlm = Rows.Count: Application.ScreenUpdating = 0
  n = sh1.Cells(nlm, 2).End(3).Row: If n > 3 Then sh1.Range("B4:E" & n).ClearContents
  n = sh2.Cells(nlm, 2).End(3).Row: If n > 3 Then sh2.Range("B4:E" & n).ClearContents
  n = Cells(nlm, 2).End(3).Row: j = 4: k = 4
  For i = 4 To n
    With Cells(i, 2)
      Set plg = .Resize(, 4)
      If .Offset(, 4) = "OUI" Then plg.Copy sh1.Cells(j, 2): j = j + 1
      If .Offset(, 5) = "OUI" Then plg.Copy sh2.Cells(k, 2): k = k + 1
    End With
  Next i
  sh1.Select
End Sub

soan
 

Pièces jointes

  • Classeur1.xlsm
    20.5 KB · Affichages: 6

Jacky67

XLDnaute Barbatruc
Bonjour,
Hello sylvanu ** soan
Une proposition par vba
Nécessite autant de feuille que d'activité (feuille même nom que l'activité)
Se met à jour à la sélection de la feuille
 

Pièces jointes

  • Activité.xlsm
    22 KB · Affichages: 7
Dernière édition:

pilule007

XLDnaute Nouveau
Super,
merci pour vos réponses, je vais déjà pouvoir progresser,
j'ai encore une question, je voudrais travailler sur ces fichiers générés par activités, pour pouvoir y mettre si l'adhérent a payer, combien et comment (chèque, liquide, versement, carte bleue) , comment faire pour que ces informations suivent l'adhérent (voir mon fichier joint)
l'adhérent 3 et 9 sont inscrits à l'activité1 , si un adherent entre 3 et 9 s'inscrit, les info de paiement ne suivent pas l'adhérent 9, y a t il une possibilité pour le faire ?
merci beaucoup pour votre aide
pilule007
 

Pièces jointes

  • ADHERENTS-CODE POUR SELECTION JOURNEES ET ACTIVITES.xlsx
    19.3 KB · Affichages: 5

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…