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

XL 2016 Affectation d'une cellule dans un onglet en fonction de son état

yenakisoncon

XLDnaute Nouveau
Bonsoir à tous et toutes, encore des questions pour vous les rois du VBA
Voilà je m'explique : j'ai un classeur avec 5 onglets.
Dans le premier onglet en colonne A j'ai des noms de clients, en colonne B j'ai un état qui peut être soit 1 soit 2 soit 3 soit 4 soit 5 etc..
Je cherche la formule ou code qui me permettrait en fonction de l'état de mon client, donc 1 2 3 4 5 et autre, de l'affecter dans un des onglets qui correspond à son état.
Chaque onglet des 4 suivants, correspond à l'état 1, l'état 2, l'état 3, et ainsi de suite, ce qui veut dire que suivant ce que le client à comme état il sera copié dans l'onglet 1, 2 , 3 , 4 , 5,......
Bien sûr la colonne A du premier onglet ne changera pas (c'est la liste de mes clients, sauf si j'en rajoute). Seule la colonne B va changer en fonction de l'état de chaque client. Si je mets à jour mes clients, les onglets se mettront aussi à jour automatiquement.
Suis-je suffisamment clair ????
En tout cas merci d'avance à vous tous
 

job75

XLDnaute Barbatruc
Bonsoir yenakisoncon, Waiky,

Il suffit de filtrer la 1ère feuille, voyez le fichier joint et cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Not IsNumeric(Sh.Name) Then Exit Sub
Sh.Cells.Delete 'RAZ
With Sheets("BDD").[A1].CurrentRegion
    .AutoFilter 2, Sh.Name 'filtre automatique
    .SpecialCells(xlCellTypeVisible).Copy Sh.[A1] 'copier-coller
    .AutoFilter 'ôte le filtre
End With
End Sub
A+
 

Pièces jointes

  • Filtrer(1).xlsm
    21 KB · Affichages: 3

yenakisoncon

XLDnaute Nouveau
Bonjour Job75,
tout d'abord un grand merci pour ton investissement pour nous.
heureusement qu'il y a des gens comme vous pour venir en aide aux pauvres débutants comme nous.
Super ton fichier, seulement quand je fais des modifs pour correspondre à mon fichier de départ le code ne fonctionne plus.
Aussi je te met un exemple concret de mon fichier avec les infos que je désirerais.
Encore une fois un grand merci.......
Wayki je viens de voir ton mess, je regarde ton fichier et je reviens te dire ce que ça donne, merci à toi.
 

Pièces jointes

  • FiltreCLIENTexemple.xlsm
    39.5 KB · Affichages: 6

Wayki

XLDnaute Impliqué
J'ai adapté la formule à ton fichier, à ton onglet relance, avec une option paramètre qui est un critère de recherche pour que tu vois comment faire.
On peut très bien enlever l'option et mettre directement le chiffre recherché dans la formule, à la place de E2.
A +
 

Pièces jointes

  • FiltreCLIENTexemple.xlsm
    43.1 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour yenakisoncon, Waiky, le forum,

La macro adaptée au fichier joint :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim liste, n As Variant
liste = Array("Relance", "Actifs", "Verifier", "CTP", "Autres") 'liste des feuilles concernées
n = Application.Match(Sh.Name, liste, 0)
If IsError(n) Then Exit Sub
Application.ScreenUpdating = False
Sh.Cells.Delete 'RAZ
With Sheets("Fich.Clients").[A1].CurrentRegion
    .Rows("1:2").Copy Sh.[A1] 'titres
    .AutoFilter 2, n 'filtre automatique
    On Error Resume Next 'si aucune SpecialCell
    .Rows(3).Resize(.Rows.Count - 2).SpecialCells(xlCellTypeVisible).Copy Sh.[A3] 'copier-coller
    .AutoFilter 'ôte le filtre
    .Cells(1, 2) = Application.Count(.Range("B3:B" & .Rows.Count)) 'compte
End With
Sh.[B1] = Application.CountIf(Sh.Range("B3:B" & Sh.Rows.Count), n) 'compte
Sh.Columns.AutoFit 'ajuste les largeurs
With Sh.UsedRange: End With 'actualise les barres de défilement
End Sub
Edit : ajouté Application.ScreenUpdating = False

A+
 

Pièces jointes

  • FiltreCLIENTexemple(1).xlsm
    28.8 KB · Affichages: 3
Dernière édition:

Discussions similaires

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