RECUP de données calcule et comptage
Bonjour a tous,
j'ai un tableau et je dois compter pour chaque jour, si la fin de service et le début le jour suivant sont compris entre 11h et 12h de (repos)
Je ne vois pas du tout comment commencer sur ce tableau
j'avais penser a mettre en variable des qu'il détecte les : offset de 2 a gauche et deux a droite pour récuperer les heures mais la je coinces un peu
une idée de comment m y prendre?
Merci
Bonsoir,
Excuse-moi mais ce que tu dis n'est pas très compréhensible... Il semble que tu veuilles calculer un écart horaire. Mais tu ne disposes pas des heures [Quand on construit des tableaux en omettant de prévoir de quelles façons on va en utiliser les données... !
Une fois que tu as tes 2 valeurs horaires : HeureFinJ et HeureDébutJ+1, tu fais la soustraction (s'il y a OFF en J+1, pas de calcul à faire... !) :
1 + HeureDébutJ+1 - HeureFinJ
Si ton tableau est représentatif : toutes les heures inscrites avec 5 caractères, pas de vacation qui chevauche minuit, ça limitera les contorsions.
Par contre tu vas en avoir un peu avec les cellules qui contiennent outre la chaîne d'horaire une autre mention : là il te faut 'splitter' la chaîne avec comme séparateur le caractère Aller à la ligne (à recueillir dans un variable de type Variant).
Exemple : vh = Split(Cells(l, c).Value, Chr(10))
Tu peux alors travailler sur la valeur de vh(0) pour extraire l'heure. Plus précisément sur Trim(vh(0)) car je vois que l'on n'hésite pas à semer des espaces un peu partout dans ton fichier...
Mettons (à titre d'exemple) pour l'heure de début : hd = DateValue(Left(Trim(vh(0)), 5))
et pour l'heure de fin : hf = DateValue(Right(Trim(vh(0)), 5))
après avoir testé que la valeur n'est pas "OFF", bien sûr.
Voilà pour te permettre au moins de t'attaquer au problème.
Cordialement.
Salut
Merci pour ta réponse,
en faite je parlais de offset car avant je récupérai mes valeurs comme ceci:
hd = Mid(c.Offset(0, 4), 7, 5)
hf = Mid(c.Offset(0, 5), 2, 5)
mais c'est vrai quand il y a des espaces c'est la merde
je dois t'avouer que sa fait pas très longtemps que j'ai débuter en VBA et je connais pas encore bien bien toute les fonction ou toutes les petites astuces qu'on peut avoir.
pour le vh, je n'arrive pas trop a le traduire vh = Split(Cells(l, c).Value, Chr(10))
hd = DateValue(Left(Trim(vh(0)), 5))
hf = DateValue(Right(Trim(vh(0)), 5))
Comment bien ce positionné sur la cellule B6/B5 ensuite B7/B5
j'ai encore pas mal de lacune dans la programmation de base
Cordialement
Bonjour,
Regarde ton post initial : tu dois calculer si un écart est compris entre 11 h et 12 h (en fait je suppose que tu dois vérifier si entre la fin d'une journée de travail et le début de la suivante il s'est écoulé au moins 11 heures [code du travail si je me souviens bien]), mais tu ne dis pas ce que tu dois faire selon le résultat de la vérification : l'affecter quelque part, insérer une signalisation... ?
Ni si cette vérification est faite après coup (balayage de la feuille) ou si elle est faite quotidiennement (à la saisie des horaires de vacation) ?
Le calcul restera le même, mais selon l'utilisationles positionnements peuvent varier...
Cordialement.
Salut,
En faite en fin de ligne je comptes combien de fois la personne a eu des repos de 11H (oui code du travaille =) )
Pour ce tableau j'ai raccourci car en general c un tableau de 03 mois avec 400 personnes donc je l'ai raccourci a quelque ligne colonne
Dans ce tableau colonne V je met combien de fois il compte un repos de 11h
Après si il y a moyen de mettre en jaune par exemple les horaires fin/debut qui corresponde 11h de repos; pk pas je suis preneur
Et a la fin un msgbox qui me fait la somme de la colonne V
Voila l'idée
C'est donc apparemment un contrôle a-posteriori.
Mais ta colonne V correspond à un mardi, et ton tableau va jusqu'en BH. Donc là ça ne va pas.
Il serait plus réaliste de dénombrer les non-respect des 11h mini, car en cas d'absence (OFF) ce délai est forcément respecté.
Pas de difficulté pour colorer les jours de non respect...
On peut noter les nombre de non respect en fin de tableau, mais un MsgBox à chaque ligne examinée ne fait qu'alourdir l'exécution de la procédure et sans laisser de traces en plus.
a oui désoler je l'ai raccourci un peu depuis
en faite c'est pour contrôler combien de vac sont limite dans la zone 11h/12h
du coup tu ferai comment pour choper le time car j'arrive pas a utiliser ta formule j'y suis depuis ce matin 7 heure je je nage toujours autant =)
Il a fallu contourner une difficulté que je n'avais pas encore vu : les dates en ligne 1 ne sont pas des dates mais des chaînes !
Il est rare qu'on ne trouve pas une solution avec VBA, toutefois il serait tout de même préférable que les demandeurs (d'abord dans leur propre intérêt) composent des tableaux moins brouillon eet s'interrogent sur le type de données des diverses plages en fonction des utilisations qui peuvent en être ultérieurement faites.
Tout le monde y gagnerait. Et les demandeurs auraient plus de facilité à comprendre rapidement un code qui n'aurait pas besoin d'opérer une course d'obstacles en parcourant un tableau...
Cordialement.
=) merci pour le code
Alors je suis tout a fais d'accord pour le tableau un peu brouillon; en faite, c'est un extraction d'un logiciel et sur ce logiciel on fait les horaires du personnelle etc... ce fichier est juste un extraction des heures produites pour chaque personne.
Et on m'a demander de voir combien de de fois entre deux vacation le repos était inférieur a 12h
Quand j'ai vu le tableau je me suis dis...... IMPOSSIBLE =)
A quoi on joue là !