XL 2021 Tableau de données, tri depuis une autre feuille

Beetwin

XLDnaute Nouveau
Bonjour la communauté ,

J'aurais besoin d'un âme charitable avec un peu de temps à m'accorder
J'aurais besoin sur ma page d'accueil de pouvoir faire un tri concernant qui fait référence à ma page Balance Propriétaire .
J'ai bien trouvé une discutions, avec un exemple , sur vos pages mais je n'arrive pas à modifier la trame pour que cela puisse être en adéquation avec mon tableau .

Au lieu d'aller chercher les informations dans la feuille Tableau - à remplacer par Balance propriétaire
Au lieu d'aller chercher les information dans la feuille Travail - à remplacer par Tables

Merci d'avance , à celui où celle qui prendras sont temps pour m'aider
 

Pièces jointes

  • SCI CHERGUI SUIVI COMPTABILITE--.xlsm
    62.9 KB · Affichages: 5
Solution
Bonjour le forum,

On peut se passer du bouton :
VB:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ncol%, crit1$, crit2$, crit3$, crit4$, tablo, i&, n&, j%
ncol = 13 'nombre de colonnes étudiées
crit1 = [B7]: crit2 = [D7]: crit3 = [F7]: crit4 = [H7]
If Trim(crit1) = "" Then crit1 = "*"
If Trim(crit2) = "" Then crit2 = "*"
If Trim(crit3) = "" Then crit3 = "*"
If Trim(crit4) = "" Then crit4 = "*"
tablo = [Balance_propriétaire].Resize(, ncol) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    If tablo(i, 1) Like crit1 And tablo(i, 3) Like crit2 And tablo(i, 5) Like crit3 And tablo(i, 7) Like crit4 Then
        n = n + 1
        For j = 1 To ncol
            tablo(n, j) = tablo(i, j)...

Beetwin

XLDnaute Nouveau
Bonjour Beetwin,

Ce n'est pas clair, on ne sait pas s'il s'agit d'un tri ou d'un filtrage.

Alors expliquez en français ce que vous voulez faire.

A+
Bonjour,
Oui en effet c'est plus un filtrage qu'un tri
De manière à extraire sur la page d'accueil les données sous plusieurs conditions
Conditions qui seront sélectionnés via des listes déroulantes

J'espère avoir été un peu plus clair😊
 

Pièces jointes

  • SCI CHERGUI SUIVI COMPTABILITE-- (1).xlsm
    58.3 KB · Affichages: 6

job75

XLDnaute Barbatruc
Voyez le fichier joint et cette macro affectée au bouton :
VB:
Sub Filtre()
Dim ncol%, crit1$, crit2$, crit3$, crit4$, tablo, i&, n&, j%
ncol = 13 'nombre de colonnes étudiées
With Sheets("Page d'accueil")
    crit1 = .[B7]: crit2 = .[D7]: crit3 = .[F7]: crit4 = .[H7]
    If Trim(crit1) = "" Then crit1 = "*"
    If Trim(crit2) = "" Then crit2 = "*"
    If Trim(crit3) = "" Then crit3 = "*"
    If Trim(crit4) = "" Then crit4 = "*"
    tablo = [Balance_propriétaire].Resize(, ncol) 'matrice, plus rapide
    For i = 1 To UBound(tablo)
        If tablo(i, 1) Like crit1 And tablo(i, 3) Like crit2 And tablo(i, 5) Like crit3 And tablo(i, 7) Like crit4 Then
            n = n + 1
            For j = 1 To ncol
                tablo(n, j) = tablo(i, j) 'copie la ligne
            Next j
        End If
    Next i
    '---restitution---
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[B10] '1ère cellule de destination
        If n Then .Resize(n, ncol) = tablo
        .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
    End With
End With
End Sub
Utilisant un tableau VBA elle est très rapide.
 

Pièces jointes

  • Filtre(1).xlsm
    43.8 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour le forum,

On peut se passer du bouton :
VB:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ncol%, crit1$, crit2$, crit3$, crit4$, tablo, i&, n&, j%
ncol = 13 'nombre de colonnes étudiées
crit1 = [B7]: crit2 = [D7]: crit3 = [F7]: crit4 = [H7]
If Trim(crit1) = "" Then crit1 = "*"
If Trim(crit2) = "" Then crit2 = "*"
If Trim(crit3) = "" Then crit3 = "*"
If Trim(crit4) = "" Then crit4 = "*"
tablo = [Balance_propriétaire].Resize(, ncol) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    If tablo(i, 1) Like crit1 And tablo(i, 3) Like crit2 And tablo(i, 5) Like crit3 And tablo(i, 7) Like crit4 Then
        n = n + 1
        For j = 1 To ncol
            tablo(n, j) = tablo(i, j) 'copie la ligne
        Next j
    End If
Next i
'---restitution---
Application.EnableEvents = False 'désactive les évènements
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [B10] '1ère cellule de destination
    If n Then .Resize(n, ncol) = tablo
    .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro se déclenche quand on modifie ou valide une cellule quelconque de la feuille.

A+
 

Pièces jointes

  • Filtre(2).xlsm
    40.7 KB · Affichages: 10

Beetwin

XLDnaute Nouveau
Bonjour le forum,

On peut se passer du bouton :
VB:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ncol%, crit1$, crit2$, crit3$, crit4$, tablo, i&, n&, j%
ncol = 13 'nombre de colonnes étudiées
crit1 = [B7]: crit2 = [D7]: crit3 = [F7]: crit4 = [H7]
If Trim(crit1) = "" Then crit1 = "*"
If Trim(crit2) = "" Then crit2 = "*"
If Trim(crit3) = "" Then crit3 = "*"
If Trim(crit4) = "" Then crit4 = "*"
tablo = [Balance_propriétaire].Resize(, ncol) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    If tablo(i, 1) Like crit1 And tablo(i, 3) Like crit2 And tablo(i, 5) Like crit3 And tablo(i, 7) Like crit4 Then
        n = n + 1
        For j = 1 To ncol
            tablo(n, j) = tablo(i, j) 'copie la ligne
        Next j
    End If
Next i
'---restitution---
Application.EnableEvents = False 'désactive les évènements
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [B10] '1ère cellule de destination
    If n Then .Resize(n, ncol) = tablo
    .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro se déclenche quand on modifie ou valide une cellule quelconque de la feuille.

A+
merci , c'est parfait
 

Discussions similaires

Statistiques des forums

Discussions
314 626
Messages
2 111 291
Membres
111 092
dernier inscrit
ThomasU3