Microsoft 365 Filtrer un tableau dans une feuille

Electron24

XLDnaute Occasionnel
Bonjour le Forum,

Je désire filtrer le tableau de la feuille sélectionnée par la colonne C (Moyen CB, Ch, DAB...)
VB:
Private Sub List_Moyen_Change()

Dim valeur As String
Dim i As Byte

ComboBox2.Clear
valeur = ComboBox1.Value


With Sheets("Bilan")

    For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row
        If Left(.Range("B" & i), 3) = Left(ComboBox1.Value, 3) Then ComboBox2.AddItem .Range("B" & i)

    Next i

End With
End Sub


Voici ci dessus le code de la liste déroulante (List_Moyen) du formulaire (Frm_Filtre)
Dans mon formulaire, il y a un Label qui reprend le nom de la feuille visible (Lab_Nom.Caption=Range("B1").Value
Je souhaiterai pouvoir remplacer (]With Sheets("Bilan") par le nom de la feuille active
En effet, j'ai dans chaque feuille un bouton qui m'ouvre le formulaire et de ce fait cette ligne
J'ai plusieurs feuilles nommées 2007, 2008, 2009 etc jusque 2030
Ci joint un extrait du classeur
Merci d'avance pour votre aide
 

Pièces jointes

  • Filtre.xlsm
    54.8 KB · Affichages: 4
Solution
Re,

Vous aviez ajouté un champs calculé nommé 'Nbr moyen' dont la formule était "= 0" pas étonnant que votre colonne ne contenait que des zéro.

Pour avoir le nombre de moyen, pas utile de créer un champ calculé.
Faites simplement glisser le champs 'moyen' dans la colonne des valeurs sous 'total des crédits'
Cliquez sur la flèche à droite du bouton créé ainsi puis vérifiez que 'Nombre' est sélectionné dans la liste des opérations possibles.

1655398749098.png


Cordialement

Hasco

XLDnaute Barbatruc
Re,

Et bien que ActiveSheet peut changer à un instant T, peut-être d'un autre classeur ouvert etc...
puisque vous mettez l'année en B1 alors testez cette valeur sur initialisation du userform. exemple :

VB:
Private Sub UserForm_Initialize()

    If Range("B1").Value < 2007 Or Range("B1") > 2030 Then
        MsgBox "Opération annulée : feuille non autorisée" & vbCrLf & _
               "Sélectionnez une feuille de 2007 à 2030 et recommencez.", vbExclamation, "Titre"
        Unload Me

    Else
       
        Lab_An.Caption = ActiveSheet.Name 'Lab_An conservera le nom de la feuille active à ce moment là

        List_Moyen.RowSource = "Bilan!" & Sheets("Bilan").Range("Tab_Moyens[Moyen]").Address
    End If
End Sub

Pour vous faciliter le code et puisque vous utilisez les tableaux structurés, servez-vous de leur avantages.
J'ai fait de votre liste de moyens un tableau structuré nommé 'Tab_Moyens'.

cordialement

P.S. je vais raccroché pour ce soir.
 

Pièces jointes

  • Filtre.xlsm
    60.9 KB · Affichages: 1

Hasco

XLDnaute Barbatruc
Bonjour,
Une fois que vous vous êtes assuré que vous êtes sur la bonne feuille Lab_An.Caption contient son nom.
Vous pouvez donc écrire :
VB:
With ThisworkBook.Sheets(Lab_An.Caption)
' filtrer ici
End With

Ou utiliser vos tableaux :
VB:
With Range("Tab_" & Lab_An.Caption)
End With

Cordialement
 

Hasco

XLDnaute Barbatruc
Re bonjour,

Si je peux me permettre, GRANDE.VALEUR(A:A;1) me semble surdimensionnée comme fonction pour simplement avoir le nombre d'opérations. La première Grande.Valeur d'une série est égale à la valeur maximale de cette série. MAX(A:A) serait encore trop, car il est déconseillé de référencer des colonnes entières.
Vous avez des tableaux structurés, servez-vous en :
nb opération 2007 =MAX(Tab_2007[N°:];1) => valeur maximale de la colonne N°
ou éventuellement =LIGNES(Tab_2007) vous donnant le nombre de lignes du tableaux.

Pour vos sommes :
Dépenses =SOMME(Tab_2007[Débit])
Recettes =SOMME(Tab_2007[Crédit])

cordialement
 

Electron24

XLDnaute Occasionnel
Re,

Merci beaucoup pour ces méthodes, grâce à toi, j'en apprends un peu plus. J'utilise les tableaux croisés dynamique depuis peu et tous les conseils sont les bien venus.
Le but de ce fil est pour moi, l'utilisation d'un tableau général reprenant tous mes dépenses et recettes depuis l'ouverture de mon compte bancaire en 2007
 

Hasco

XLDnaute Barbatruc

Pièces jointes

  • Filtre.xlsm
    79.2 KB · Affichages: 2

Hasco

XLDnaute Barbatruc
Re,

Je pensais à votre fichier et me disais, que faire une feuille par année est peut-être superflue.
Concevez vos données indépendamment de leur présentation, sous forme d'une table.
Avec les outils , Filtres, Filtres avancés, Power query, Graphiques, TCD vous pourrez présenter ces données par année ou mois, quinzaine, semaine ou unité de temps que vous voudrez.

J'ai ainsi un fichier de comptes personnels de 52572 lignes (commencé sous multiplan en 1983) qui est toujours ma base de données au jour le jour.

Cordialement
 

Electron24

XLDnaute Occasionnel
Re, En essayant de retrans crire votre TCD sur mon classeur, j'arrive à créer le champ Nombre de moyen mais j'ai comme résultat 0 sur toutes les lignes. Il doit y avoir quelque chose que je n'ai pas compris. Mais quoi?
Oups, j'ai loupé votre message, C'est en principe un peu mon idée de départ, mais vu la non compréhension à mon niveau des TCD, je patauge.
 

Discussions similaires

Statistiques des forums

Discussions
300 889
Messages
1 988 142
Membres
210 082
dernier inscrit
bernard.dufaure.47@gmail.