Filtrage horaire

Résolu/Fermé
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023 - 22 nov. 2012 à 21:35
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023 - 2 déc. 2012 à 22:14
Bonjour,

un message ce soir après des jours de réflexion et de recherche sur Internet...
Je soumets donc maintenant mon problème à votre sagacité :
je dispose d'un fichier Excel issu de données brutes récupérés que je "nettoie" un peu avec une macro simple.

- ces données se situent entre les cases A5 et H230.
- la 1ère colonne représente des horaires notés ainsi : 13:20A (pour 13h20).

Je dispose de deux cases E1 et G1 sur lesquelles j'ai appliqué une liste pour pouvoir choisir une heure de début et une heure de fin.

Mon objectif est double :
- supprimer le suffixe A de chaque heure donnée en colonne A,
- puis filtrer l'ensemble de mes lignes pour pouvoir afficher les lignes dont l'horaire est compris entre les deux deux horaires des cases E1 et G1.

En colonne H, je dispose enfin d'un filtre simple pour filtrer les données restantes. Ce filtre doit rester fonctionnel après avoir appliqué la macro de filtrage horaire entre ces deux heures E1 et G1.

Pour ce faire, je dispose d'Excel 2003

Merci d'avance pour votre aide !

7 réponses

Raymond PENTIER Messages postés 58646 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 septembre 2024 17 195
22 nov. 2012 à 21:48
Bonjour.

Objectif 1 :
Avec le texte "13:20A" aligné à gauche en A10, tu obtiendras la valeur numérique en B10 avec la formule =CNUM(GAUCHE(A10;5)) qui affichera le résultat 0,5555556 aligné à droite.
Et pour le lire au format habituel, il suffit de mettre la colonne B au format de cellule Nombre/Heure/13:30 qui affichera 13:20 aligné à droite.

Cordialement.
0
eriiic Messages postés 24595 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 2 septembre 2024 7 233
22 nov. 2012 à 23:46
Bonsoir,

en VBA.
Le filtre reste fonctionnel mais il faudra le réappliquer si tu veux faire apparaitre les lignes masquées auparavant.
La prochaine fois dépose un fichier de travail...
https://www.cjoint.com/?BKwxSy0HAgP

eric
0
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
23 nov. 2012 à 18:12
Bonsoir,

tout d'abord merci à vous deux pour vos solutions qui font bien avancer mon problème !

Maintenant, comme je débute en macro, j'ai quelques questions... :

En effet, je ne connais pas les "private sub" mais seulement les macros simples qui me permette ensuite d'affecter la macro à un bouton... C'est pourquoi, j'ai un peu de mal à adapter le fichier que tu m'as envoyé à mon fichier. Du coup, j'aimerai bien joindre mon fichier en pièce jointe mais je n'y parviens pas... Pourriez vous m'indiquer comment faire ?

Comme pour pourrez le voir, j'ai un bouton de nettoyage pour mettre les données brutes au bon format (je l'ai effacé pour garder un fichier simple) mais je voudrais pouvoir ajouter à ma macro l'enlèvement du suffixe "A" pour avoir une seule action me permettant la convertion et ce nettoyage...

De plus, les données brutes de la colonne A, une fois nettoyées doivent rester dans la colonne A... Je ne peux donc pas avoir une autre colonne gardant les horaires brutes 13:00A...

A nouveau, merci d'avance de m'aider à nouveau dans ma formation !
0
eriiic Messages postés 24595 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 2 septembre 2024 7 233
23 nov. 2012 à 18:38
Bonjour,

Tout Sub peut être Private : il ne peut pas être appelé autrement que par un autre Sub du module et n'apparait donc pas dans la liste des macro qu'on peut lancer d'une feuille.

Private Sub Worksheet_Change ne peut pas s'appeler autrement et doit être dans un module de feuille.
C'est la gestion des évènements.
Celui-ci se trouve appelé à chaque saisie manuelle dans une cellule.

Dans un module de feuille de VBE choisis Worksheet dans la liste déroulante de gauche (en haut). Dans celle de droite tu as tous les évènements d'une feuille.

Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric
0
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
27 nov. 2012 à 22:41
Bonsoir,

désolé pour ces quelques jours d'absence en raison d'un stage à l'étranger sans internet...
Je reprends donc ce soir mes questions... En effet, grâce au fichier que tu m'as envoyé, j'ai pu grandement avancer dans mon projet et adapter le vba à mon besoin en déployant des macros associées à des boutons.

J'arrive donc maintenant à :
- convertir mes données brutes
- enlever le suffixe A
- appliquer le filtrage horaire

Il me reste malheureusement un souci... Lorsque j'ai fait ce filtre horaire, j'ai ensuite besoin de filtrer (de manière simple) les données de la colonne H (Pierre, Paul et Jacques dans ton exemple). Or, qu'en j'applique ce filtre simple, tout le calcul se refait et je perd donc mon filtrage horaire...

J'ai bien pensé à recopier les données obtenues pour les recoller par dessus et ensuite appliquer ce filtre simple mais le souci c'est que je dois pouvoir revenir en arrière à tout moment pour pouvoir observer les résultats de plusieurs créneaux horaires...

Aurais tu une astuce pour pouvoir appliquer ce filtre simple après le filtre horaire et donc seulement sur les lignes encore visibles ?

Merci encore d'avance pour tes précieux conseils !
0
eriiic Messages postés 24595 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 2 septembre 2024 7 233
27 nov. 2012 à 23:20
Bonsoir,

Toujours joindre un fichier.
Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
28 nov. 2012 à 14:22
Bonjour Eric,

comme demandé, le fichier en question :
https://www.cjoint.com/?3KCoucSQhAX

Merci d'avance !
0
eriiic Messages postés 24595 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 2 septembre 2024 7 233
28 nov. 2012 à 17:41
Re,

Tu aurais pu y mettre le code. Ca m'aurait évité de reprendre la lecture de tous les posts pour me rappeler, retrouver le code, le mettre et l'adapter à ton fichier....

J'ai fait au mieux en fonction de ton utilisation, mais tu demandes des choses incompatibles.
Il faut faire des choix :
si tu changes l'horaire en E2,G2 avec un filtre X actif le résultat sera faux tant que tu n'aura pas repris le filtre X.

D'autre part un changement de filtre n'est pas détectable en vba.
Je triche en mettant un sous.total en A3, et dans l'évènement calculate je regarde s'il change.
Je pars du principe que tu as des horaires tous différents en A. Leur somme seras toujours différentes selon les lignes visibles.
Si il y a 2 horaires identiques le rafraichissement ne se fera pas. Dans ce cas ajoute une colonne avec =ligne() dedans et fais le sous.total dessus.
Si tu déplaces ce sous.total adapter le code.

https://www.cjoint.com/?BKCrNsrNBQ2

eric
0
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
28 nov. 2012 à 21:46
Bonsoir,

tout d'abord, désolé pour tout le mal que tu t'es donné et sans doute le temps perdu..., en effet, j'ai essayé d'adapter au mieux l'ensemble de tes conseils pour tenter de comprendre et surtout d'apprendre,...

Félicitations pour ton fichier qui répond entièrement à mon besoin. En effet, je commence d'abord par changer les horaires et ensuite je peux appliquer le filtre actif X.

Merci encore pour ce fichier qui va énormément me servir !
0
eriiic Messages postés 24595 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 2 septembre 2024 7 233
28 nov. 2012 à 23:16
D'ailleurs j'ai dit des bétises, Si tu ajoutes une colonne pour le sommeprod() il n'est pas plus sûr à 100% que la somme change pour détecter le changement de filtre.
De toute façon tu verras vite que le filtre sur les heures ne s'est pas déclenché. Donc laisse la somme sur les heures.

N'oublie pas de mettre en résolu stp
eric
0
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
2 déc. 2012 à 22:14
Bonsoir,

en effet, les horaires sont toujours différents car j'ai justement besoin de faire le calcul sur une plage horaire donnée. Donc pas besoin d'ajouter une colonne.

Merci encore et bonne soirée !
0