XL 2010 Recherche et renvoi

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 !

chokili20

XLDnaute Junior
Bonjour le forum,

J'ai un tableau excel avec plusieurs onglets avec pour chaque ligne l'activité et le matériel acheté.
Sur la feuille 1 j'aimerais regrouper par activité les infos qui sont dans les autres feuillets.
Lorsque je tape gym par exemple, toutes les lignes gym doivent être notées.
Le nombre de feuille peut varier, le nombre d'activité et de ligne aussi.
Merci
 

Pièces jointes

Est ce possible en feuille1 de regrouper et lister l'ensemble des disciplines ?
(par ex ttes les lignes de gym puis volley puis tir arc...)
Pas de problème, il suffit d'ajouter dans la liste de validation le critère "<Tous>", voyez ce fichier (2).
 

Pièces jointes

Dernière édition:
C'est très simple, pour faire passer le nombre de colonnes de 7 à 10 :

- en Feuil1 insérez 3 colonnes à droite de la colonne H => J1 devient M1 et la colonne L devient la colonne O

- dans les macros remplacez [J1] par [M1] et [L2] par [O2]

- dans la 2ème macro remplacez ncol = 7 par ncol = 10.

Bien sûr dans toutes les feuilles les tableaux doivent avoir 10 colonnes.
 
Dernière édition:
Bon allez pour avoir une adaptation automatique dans ce fichier (3) j'ai nommé les cellules Filtre et Liste et un peu modifié les macros :
VB:
Private Sub Worksheet_Activate()
Dim d As Object, w As Worksheet, tablo, i&, x$
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
d("<Tous>") = ""
For Each w In Worksheets
    If w.Name <> Me.Name Then
        tablo = w.UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
        For i = 2 To UBound(tablo)
            x = CStr(tablo(i, 1))
            If x <> "" Then d(x) = ""
        Next i
    End If
Next w
Application.ScreenUpdating = False
If FilterMode Then ShowAllData 'si la feuille est filtrée
[Filtre].Validation.Delete 'nom défini
With [Liste] 'nom défini
    .Resize(d.Count) = Application.Transpose(d.keys) 'Transpose est limitée à 65536 lignes
    If d.Count > 1 Then .Offset(1).Resize(d.Count).Sort .Cells, xlAscending, Header:=xlNo 'tri
    [Filtre].Validation.Add xlValidateList, Formula1:="=" & .Resize(d.Count).Address 'liste de validation
    .Offset(d.Count).Resize(Rows.Count - d.Count - .Row + 1).ClearContents 'RAZ dessous
    Worksheet_Change [Filtre] 'lance la macro
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Filtre]) Is Nothing Then Exit Sub
Dim crit$, ncol%, w As Worksheet, tablo, i&, x$, n&, a(), j%
crit = LCase(CStr([Filtre]))
ncol = [A1].CurrentRegion.Columns.Count 'cellule à adapter éventuellement
If ncol = 1 Then ncol = 2 'pour avoir au moins 2 éléments
For Each w In Worksheets
    If w.Name <> Me.Name Then
        tablo = w.UsedRange.Resize(, ncol) 'matrice, plus rapide
        For i = 2 To UBound(tablo)
            x = CStr(tablo(i, 1))
            If x <> "" And (LCase(CStr(tablo(i, 1))) = crit Or crit = "<tous>") Then
                n = n + 1
                ReDim Preserve a(1 To ncol, 1 To n)
                For j = 1 To ncol
                    a(j, n) = tablo(i, j)
                Next j
            End If
        Next i
    End If
Next w
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] 'cellule à adapter éventuellement
    If n Then
        .Resize(n, ncol) = Application.Transpose(a) 'Transpose est limitée à 65536 lignes
        .Resize(n, ncol).Borders.Weight = xlThin
        .Resize(n, ncol).Sort .Cells(1), xlAscending, Header:=xlNo 'tri pour le cas <Tous>
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).Delete xlUp 'RAZ dessous
End With
End Sub
Edit : le fichier n'était pas destiné à ce fil, je joins le bon.
 

Pièces jointes

Dernière édition:
Bonsoir,
Je souhaite utiliser la proposition de job75 (post 5) mais
l'ordinateur de l'association est sous mac. Lorsque j'ouvre le document il est écrit :
Erreur d'exécution 429, un composant active X ne peut pas créer d'objet,
débogage.
Est ce que quelqu'un peut m'aider ?
merci
 
- 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

Réponses
7
Affichages
361
Réponses
2
Affichages
332
Retour