Probléme de report de tri

bonjour à tous

tout d'abord mes meilleurs vœux pour cette année 2019.

je bloque sur mon fichier excel.

j'ai une base de données (évolutive au jour le jour) dans la feuille tab qui regroupe des séries et des infos.

je dois appliquer des filtres dans ce tableau et là pas de problème.

je dois ensuite,après avoir mis les bons filtres, sur la feuille test cliquer sur un des boutons

et que la série qui correspond au bouton que j'ai sélectionnée soit rapatriée dans les deux colonnes

en jaune avec respect des filtres que j'ai mis (juste le numéro de série et le par).

ceci afin de retrouver dans un menu déroulant situé en H9 la liste des par correspondant

à la fois à la série et aux filtres.

pas moyen de faire cela que ce soit par formules ou par macro.

Merci pour votre aide précieuse.

je vous joint un fichier test.

10test.xlsm (17.64 Ko)

Bonjour Danval, bonjour le forum,

Je ne comprends pas l'intérêt des huit boutons. Pourquoi pas une liste déroulante ou un seul bouton dans l'onglet tab ?...

Bonjour,

il me faut absolument les huit boutons car cela va être intégré dans un fichier déjà existant et qui utilise ces boutons.

donc quand on va cliquer sur un bouton il va se passer d'autres choses qui sont déjà en place.

donc un bouton par série et qui appel donc toute les infos de la série.

Merci

Re,

Une proposition pour le bouton serie 1, tu adapteras le code pour les autres. Non testé...

Sub Bouton2_Cliquer()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set OS = Worksheets("tab") 'définit l'onglet source OS
Set OD = Worksheets("test") 'définit l'onglet source OD
Set PL = OS.Range("D9:O33") 'définit la plage PL
For Each CEL In PL.Columns(1).SpecialCells(xlCellTypeVisible) 'boucle sur toutes les cellule visible de la première colonne de la plage PL
    'si la valeur de la cellule est :"Série 1", copie les deux cellules et les colle dans la première cellule vide de la colonne B de l'onglet OD
    If CEL.Value = "Série 1" Then CEL.Resize(1, 2).Copy OD.Cells(Application.Rows.cont, "B").End(xlUp).Offset(1, 0)
Next CEL 'prochaine cellule de la boucle
End Sub

merci pour ce code mais j'ai une erreur sur la ligne

CEL.Resize(1, 2).Copy OD.Cells(Application.Rows.cont, "B").End(xlUp).Offset(1, 0)

erreur 438

propriété ou méthode non gérée par cet objet

Bonjour,

Une autre proposition à étudier.

Cdlt.

3danval.xlsm (33.11 Ko)

Re,

Une petite mise à jour pour la liste déroulante absente du précédent fichier.

Cdlt.

5danval.xlsm (33.43 Ko)

bonjour,

non toujours pareil en fait quand je clic sur une série il me fait sauter les filtres de la feuille tab donc il affiche toute la série et une autre chose que j'ai remarqué il n'affiche pas le premier de la série.

une autre chose peux tu commenter le code que je comprenne car mon but c'est d'avancer et pas de toujours demander.

Merci

Re,

A qui t'adresses-tu ?

Cdlt.

à Jean Eric mille excuse.

Re,

C'est corrigé !...

Désolé.

Cdlt.

5danval.xlsm (33.60 Ko)

Re,

cool je suis content juste une erreur encore:

maintenant il y a bien le premier de la série mais quand je met un filtre sur la feuille tab et que je clic sur une série il m’enlève le filtre et donc m'affiche toute la série et pas juste ce que j'ai sélectionné avec mon filtre.

Re,

Je ne comprends pas tout !...

Peux-tu reformuler ?

Cdlt.

Bonsoir le fil, bonsoir le forum,

Il y avait, en effet, une erreur dans mon code. Il manquait un u dans Count :

Sub Bouton2_Cliquer()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set OS = Worksheets("tab") 'définit l'onglet source OS
Set OD = Worksheets("test") 'définit l'onglet source OD
Set PL = OS.Range("D9:O33") 'définit la plage PL
For Each CEL In PL.Columns(1).SpecialCells(xlCellTypeVisible) 'boucle sur toutes les cellule visible de la première colonne de la plage PL
    'si la valeur de la cellule est :"Série 1", copie les deux cellules et les colle dans la première cellule vide de la colonne B de l'onglet OD
    If CEL.Value = "Série 1" Then CEL.Resize(1, 2).Copy OD.Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0)
Next CEL 'prochaine cellule de la boucle
End Sub

J'ai testé ça marche...

Bonjour jean Eric

quand dans tab j'applique un filtre il y a certaine lignes qui sont masquées donc par exemple sur les 10 lignes de la série 1 il n'en reste que 3.

donc le but est que quand je clic sur le bouton série 1 il me rapatrie juste les 3 ligne qui correspondent à mon filtre.

là il me rapatrie toute les lignes de la série 1.

j'espére avoir était clair.

Bonjour ThauThème

bien jouer cela marche

Rechercher des sujets similaires à "probleme report tri"