XL 2013 Extraire les donnés selon un critère et actif

laeti95

XLDnaute Occasionnel
Bonjour à toutes et tous ;)

J'ai un fichier avec une BD un menu et environs 50 onglets en fonction du lieu.
Ma BD a plus de 1500 lignes et chaque jour j'intervient dessus.

Ma question :

J'ai créer pour chaque lieu un onglet sur MENU

ceci afin d'éviter quand je veux consulter de devoir chaque fois trier etc

J'aimerais que chaque onglet en fonction du lieu extrait dans la base de donné toutes les lignes en fonction du lieu, par exemple A ou B etc

et surtout que cela se mette à jour à chaque intervention dans ma BD.

Merci d'avance

Laeti
 

Pièces jointes

  • Extraction active selon BD.xlsx
    20.6 KB · Affichages: 7

danielco

XLDnaute Accro
Bonjour,

Essaie le fichier joint. J'ai ajouté la macro :

VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Dim C As Range, Plage As Range, Ligne As Long
  If Sh.Name = "BD" Or Sh.Name = "Menu" Then Exit Sub
  Application.ScreenUpdating = False
  With Sheets("BD")
    Set Plage = .Range("B2", .Cells(.Rows.Count, 2).End(xlUp))
  End With
  Ligne = 5
  If Cells(Rows.Count, 5).End(xlUp).Row > 5 Then
    Range("E6", Cells(Rows.Count, 5).End(xlUp)).Resize(, 3).Value = ""
  End If
  For Each C In Plage
    If C.Value = [F2].Value Then
      Ligne = Ligne + 1
      Cells(Ligne, 5).Resize(, 3).Value = C.Resize(, 3).Value
    End If
  Next C
  Application.ScreenUpdating = False
End Sub

Cordialement.

Daniel
 

Pièces jointes

  • laeti95 Extraction active selon BD.xlsm
    28.7 KB · Affichages: 9

danielco

XLDnaute Accro
Avec cette formule en E6 à recopier vers le bas :

VB:
=SIERREUR(INDEX(BD!B:B;AGREGAT(15;6;LIGNE(Tableau1[Lieu])/(Tableau1[Lieu]=$F$2);LIGNE(A1)););"")
en F6 :
VB:
=SIERREUR(INDEX(BD!C:C;AGREGAT(15;6;LIGNE(Tableau1[Lieu])/(Tableau1[Lieu]=$F$2);LIGNE(B1)););"")
et en G6 :
Code:
=SIERREUR(INDEX(BD!D:D;AGREGAT(15;6;LIGNE(Tableau1[Lieu])/(Tableau1[Lieu]=$F$2);LIGNE(C1)););"")
 

laeti95

XLDnaute Occasionnel
Bonsoir Staple,

oui ok merci pour les explications, cela engendre plusieurs fonctions, mais pas facile à retranscrire sur mon fichier de base, mais je pense y arriver, je regarde également la fonction tableau avancés mais cela ne marche pas comme je voudrais....merci déjà
Laeti
 

laeti95

XLDnaute Occasionnel
Bonjour Daniel,
Mon fichier est un peu trop perso avec des noms etc...
Chez mon amie apparemment c'est une problème de version d'excel, elle a une ancienne version et la fonction AGREGAT ne fonctionne pas....
Mais merci tout de même, ;) j'essaie de m'en sortir avec ta formule......que je modifie, mais pas facile, je cherche je cherche.....
Bonne soirée.
Laeti
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

laeti95
Comme je viens de le dire (ou presque) dans un autre fil, on ne joint jamais le fichier original.
On crée spécialement un fichier Excel pour illustrer la question.
Et pour avoir des données fictives, Excel peut aider grandement
(recopie vers le bas, Edition/Remplacer etc...)
On peut aussi se faire des petites macros pour faire du bidon ;)
VB:
Sub Secret_Story_I()
Range("A1") = "ENTETE_1"
Range("A1").AutoFill Destination:=Range("A1:J1"), Type:=xlFillDefault
Range("A2:J20").FormulaR1C1 = "=REPT(ADDRESS(ROW(),COLUMN(),4),3)"
Range("A2:J20").Value = Range("A2:J20").Value
End Sub
Sub Secret_Story_II()
Range("A1") = "ENTETE_1"
Range("A1").AutoFill Destination:=Range("A1:J1"), Type:=xlFillDefault
Range("A2:J2") = Array("NOM1", "ADRESSE1", "ADRESSE_B1", "CP1", "VILLE1", "TEL1", "FAX1", "EMAIL1", "CONTACT1", "SERVICE1")
Range("A2:J2").AutoFill Destination:=Range("A2:J30"), Type:=xlFillDefault
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 973
Membres
103 073
dernier inscrit
MSCHOE16