Filtre automatique sous VBA Excel 2010
clark...kent
-
mousekey Messages postés 68 Date d'inscription Statut Membre Dernière intervention -
mousekey Messages postés 68 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous et à toutes,
Novice sous VBA, je vais vous expliquer du mieux que je peux mon problème.
J'ai une feuille nommé "Total". Cette feuille répertorie une liste d'agents et leurs résultats, équipes et attributions en tableau que l'on peut trié.
Je souhaite, à partir d'une feuille 1 nommée Chargement, éxecuté un tri automatique en fonction de l'agent, ou de son équipe. C'est à dire un bouton qui m'affiche l'agent et ses résultats dans une feuille "résultat", un autre bouton qui m'affiche la totalité des agents d'une équipe toujours dans cette feuille résultat.
Afin de lier les données de la liste déroulante de la feuille 1 Chargement, j'ai lié les données dans une feuille 2 nommée base elle même lié à une fonction recherche dans la feuille Total.
Ainsi à chaque fois que l'utilisateur sélectionnera un nom dans une liste déroulante, celui ci lié à un identifiant dans la feuille Base, sera alors lié à la recherche qui affichera le nom de l'agent dans la feuille Totale dans une case éloigné de mon tableau.
Plusieurs problèmes :
- Tout d'abord, mon code ne m'affiche pas le résultat attendu
- Ensuite il faut que les résultats soit effacés à chaque nouveau clic, pour être remplacé par les nouveau résultats. (je ne sais pas faire cela)
- Bizarrement, quand je clique sur le bouton, il me réduit à 0 la taille des lignes de la feuille Total en me conservant que l'en tête des colonnes.
Voici mon code :
Sub chargement()
'Déclaration de la variable Agent
Dim Agent As String
Agent = Sheets("Total").UsedRange.Rows.Count
'Activation de la feuille Total
Sheets("Total").Activate
'Filtre en fonction de l'agent
Range("$H" & Agent).Select
Selection.AutoFilter
ActiveSheet.Range("$H" & Agent).AutoFilter Field:=2, Criteria1:=("M1")
'Copie de la ligne filtrée sous condition
If (Range("$H$2")) = (Range("$M$1")) Then
Rows("2").Copy
'Activation de la feuille résultat
Sheets("Resultats").Activate
Sheets("Resultats").Select
'Sélection de la ligne 2
Rows("2").Select
'Coller le résultat
ActiveSheet.Paste
End If
End Sub
Pour ceux qui sont intéréssés, je peux envoyer mon fichier si vous le souhaitez. Merci de votre aide, car ca fait deux jours que je m'arrache les cheveux pour un bout de code. :(
Novice sous VBA, je vais vous expliquer du mieux que je peux mon problème.
J'ai une feuille nommé "Total". Cette feuille répertorie une liste d'agents et leurs résultats, équipes et attributions en tableau que l'on peut trié.
Je souhaite, à partir d'une feuille 1 nommée Chargement, éxecuté un tri automatique en fonction de l'agent, ou de son équipe. C'est à dire un bouton qui m'affiche l'agent et ses résultats dans une feuille "résultat", un autre bouton qui m'affiche la totalité des agents d'une équipe toujours dans cette feuille résultat.
Afin de lier les données de la liste déroulante de la feuille 1 Chargement, j'ai lié les données dans une feuille 2 nommée base elle même lié à une fonction recherche dans la feuille Total.
Ainsi à chaque fois que l'utilisateur sélectionnera un nom dans une liste déroulante, celui ci lié à un identifiant dans la feuille Base, sera alors lié à la recherche qui affichera le nom de l'agent dans la feuille Totale dans une case éloigné de mon tableau.
Plusieurs problèmes :
- Tout d'abord, mon code ne m'affiche pas le résultat attendu
- Ensuite il faut que les résultats soit effacés à chaque nouveau clic, pour être remplacé par les nouveau résultats. (je ne sais pas faire cela)
- Bizarrement, quand je clique sur le bouton, il me réduit à 0 la taille des lignes de la feuille Total en me conservant que l'en tête des colonnes.
Voici mon code :
Sub chargement()
'Déclaration de la variable Agent
Dim Agent As String
Agent = Sheets("Total").UsedRange.Rows.Count
'Activation de la feuille Total
Sheets("Total").Activate
'Filtre en fonction de l'agent
Range("$H" & Agent).Select
Selection.AutoFilter
ActiveSheet.Range("$H" & Agent).AutoFilter Field:=2, Criteria1:=("M1")
'Copie de la ligne filtrée sous condition
If (Range("$H$2")) = (Range("$M$1")) Then
Rows("2").Copy
'Activation de la feuille résultat
Sheets("Resultats").Activate
Sheets("Resultats").Select
'Sélection de la ligne 2
Rows("2").Select
'Coller le résultat
ActiveSheet.Paste
End If
End Sub
Pour ceux qui sont intéréssés, je peux envoyer mon fichier si vous le souhaitez. Merci de votre aide, car ca fait deux jours que je m'arrache les cheveux pour un bout de code. :(
A voir également:
- Filtre automatique sous VBA Excel 2010
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Liste déroulante excel - Guide
- Réponse automatique thunderbird - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
12 réponses
Ton classeur en retour tu n'a que de cliquer sur les boutons.
J'ai adapter les 2 premiers filtres, Agent et Equipe, à toi la suite...
Note que je ne vois pas l'utilité des boutons.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
J'ai adapter les 2 premiers filtres, Agent et Equipe, à toi la suite...
Note que je ne vois pas l'utilité des boutons.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Bonjour,
Oui, vaudrait mieux avoir ton fichier, ce serait trop long à corriger toutes les erreurs sans avoir toutes les données à disposition.
A+
Oui, vaudrait mieux avoir ton fichier, ce serait trop long à corriger toutes les erreurs sans avoir toutes les données à disposition.
A+
Comment je peux t'envoyer mon fichier ou mieux l'attacher dans ce post? Par mail ca serait le plus simple.
Merci
Merci
Sur CCM c'est pas possible mais tu peu déposer ton fichier sur Cjoint.com et mettre le lien dans un poste suivant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci de ton travail et de ton aide lermite222 mais quand je télécharge le fichier, il me sort plusieurs dossiers et fichiers dans un rar que je ne sais pas me servir...
La plupart s'ouvre avec excel d'autre pas... peu tu m'éclairer sur ton travail s'il te plait.
L'intérêt est de faire un outil simple que tout à chacun puisse utiliser,
le bouton sert tout simplement à valider la sélection si on se trompe
mais aussi à faire jolie :)
La plupart s'ouvre avec excel d'autre pas... peu tu m'éclairer sur ton travail s'il te plait.
L'intérêt est de faire un outil simple que tout à chacun puisse utiliser,
le bouton sert tout simplement à valider la sélection si on se trompe
mais aussi à faire jolie :)
J'ai essayé le lien et il fonctionne normalement ?? Je l'ai fait avec Excel 2007 mais ça ne devrait pas poser de problème ?
Et il n'est certainement pas en "rar" je n'ai pas le logiciel qui compresse en rar ??
Est-tu certain d'avoir ouvert le bon classeur.
Concernant ->> Faire joli <<- je préfère une appli fonctionnelle plutôt que jolie mais ça c'est mon avis.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Et il n'est certainement pas en "rar" je n'ai pas le logiciel qui compresse en rar ??
Est-tu certain d'avoir ouvert le bon classeur.
Concernant ->> Faire joli <<- je préfère une appli fonctionnelle plutôt que jolie mais ça c'est mon avis.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
J'ai modifié l'extension car il me le télécharge bien en zip et pas xls et maintenant ca s'ouvre impec et ca fonctionne, vraiment merci beaucoup à toi.... je regarde ca dans la journée car j'ai d'autres modifs à faire...
Je sais moi aussi le jolie ca me botte pas plus que ca mais c'est les consignes qu'on m'a donné :|
Je sais moi aussi le jolie ca me botte pas plus que ca mais c'est les consignes qu'on m'a donné :|
Merci à toi j'ai un peu regardé, le code est vraiment, vraiment différent de ce que j'ai fait. Vu que j'arrivais pas a affecter comme critère le contenu d'une cellule, j'essayais un filtre élaboré.
Bref un grand merci
J'ai du par contre supprimé le tous ou toutes, car à chaque chargement, j'avais un bug de la macro donc à la limite tant pis.
Je vais encore t'embeter car j'aimerais vraiment comprendre le code que tu as fait, le but étant pas que je revienne ici tous les 4 matins tu comprends.
Notamment la deuxieme partie du code apres On erreur.
Car pour la suite je veux ressortir toujours avec des chargements les agens inférieurs ou supérieurs à 100%.
Merci beaucoup de ton aide en tout cas.
Bref un grand merci
J'ai du par contre supprimé le tous ou toutes, car à chaque chargement, j'avais un bug de la macro donc à la limite tant pis.
Je vais encore t'embeter car j'aimerais vraiment comprendre le code que tu as fait, le but étant pas que je revienne ici tous les 4 matins tu comprends.
Notamment la deuxieme partie du code apres On erreur.
Car pour la suite je veux ressortir toujours avec des chargements les agens inférieurs ou supérieurs à 100%.
Merci beaucoup de ton aide en tout cas.
re,
J'ai du par contre supprimé le tous ou toutes, car à chaque chargement, j'avais un bug de la macro donc à la limite tant pis.
Tous/toutes ? Pourquoi ? si tu veux voir la liste au complet tu n'a que de regarder la feuille Total, non ?
Notamment la deuxieme partie du code apres On erreur.
1ère ligne,
Copie uniquement les cellules visibles, ça évite un tas de test.
2èm ligne
Désactive la sélection du filtre et remet toutes les lignes.
le but étant pas que je revienne ici tous les 4 matins tu comprends.
Ca dépend sur combien. (de matin). :DD
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
J'ai du par contre supprimé le tous ou toutes, car à chaque chargement, j'avais un bug de la macro donc à la limite tant pis.
Tous/toutes ? Pourquoi ? si tu veux voir la liste au complet tu n'a que de regarder la feuille Total, non ?
Notamment la deuxieme partie du code apres On erreur.
1ère ligne,
Copie uniquement les cellules visibles, ça évite un tas de test.
2èm ligne
Désactive la sélection du filtre et remet toutes les lignes.
le but étant pas que je revienne ici tous les 4 matins tu comprends.
Ca dépend sur combien. (de matin). :DD
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
merci de tes lumières, j'a supprimé tous et toutes car effectivement autant tout regardé.
Je comprend mieux ton code maintenant encore merci, je te dois combien? :=)
J'ai juste changé la varibale en string car j'ai collé les noms aux agents et aux équipes.
La prochaine étape est de créer des graphiques de comparaison automatique et de faire ressortir ceux en dessous ou au dessus de 100%.
Je ferme bientot le sujet.
Merci encore.
Je comprend mieux ton code maintenant encore merci, je te dois combien? :=)
J'ai juste changé la varibale en string car j'ai collé les noms aux agents et aux équipes.
La prochaine étape est de créer des graphiques de comparaison automatique et de faire ressortir ceux en dessous ou au dessus de 100%.
Je ferme bientot le sujet.
Merci encore.
https://www.lecompagnon.info//vba-excel/index.html
https://jml85.pagesperso-orange.fr/
https://www.excel-easy.com/vba.html
Signature non conforme, Modération CCM
https://jml85.pagesperso-orange.fr/
https://www.excel-easy.com/vba.html
Signature non conforme, Modération CCM