Boucles VBA et récupération de données

Bonjour, je suis tout nouveau sur le forum ainsi qu'en programmation VBA, j'aimerais avoir de l'aide car je souhaite créer une boucle qui reprend des informations dans un fichier (Je met en copie ce fichier). Dans celui-ci, j'aimerais que pour chaque personne ces informations soit reprises et ne pas faire attention aux autres :

Leroux Anthony (3627)

2019 05 10 Mai Vendredi

08:00:34 09:45:11 01:44:37 Connexion

09:24:41 09:24:42 00:00:01 Personnelle

09:45:27 15:10:17 05:24:50 Connexion

09:51:55 10:01:59 00:10:04 Personnelle

11:49:00 11:59:14 00:10:14 Personnelle

13:12:59 13:13:33 00:00:34 Personnelle

14:01:12 14:21:35 00:20:23 Pause 2

Je n'ai besoin que des informations de "Connexion", le problème étant que pour chaque personne le nombre de connexion peut être différent. J'aimerai que la boucle se fasse jusqu’à ce qu'il n'y ait plus rien ensuite, sachant que cette boucle se fera sur d'autres fichier ou le nombre de personne présente dessus n'est jamais le même.

Pour le résultat final j'aimerais que ce soit de ce type :

Leroux Anthony (3627)

2019 05 10 Mai Vendredi

08:00:34 09:45:11

09:45:27 15:10:17

Merci à tous ceux qui pourront m'aider même un minimum,

Anthony

Bonjour et sur le forum,

Quelque chose comme ça?

Il faut lancer la macro via le raccourci : Alt+F8

Merci pour la réponse très rapide, je n'ai pas expliqué clairement ce que je voulais, my bad, en faite je souhaite exactement ce résultat mais je souhaite que ces données soit copiée et qu'elles soit intégrés dans un nouvel onglet ainsi pour garder l'onglet originel à coté. Et que si possible le mot "connexion" soit retiré de l'onglet.

J'aimerais de plus que ces cellules (En rouge) soit converties au format "Heure" hh.mm.ss (car lorsque mon fichier sort du logiciel les cellules sont au format texte) et qu'il additionne pour chaque personne ces deux là ? Est possible ? Désolé de prendre votre temps

08:00:34 09:45:11 01:44:37

09:45:27 15:10:17 05:24:50

Pour au final donner

08:00:34 09:45:11 01:44:37

09:45:27 15:10:17 05:24:50

Total: 07:09:27

Re,

Alors quelque chose comme ça?

Parfait, merci pour votre réponse très rapide Je vais regarder le code pour en apprendre plus, j'ai juste une question, à quel moment s'arrête la boucle ?

Re,

La boucle s'arrête une fois qu'elle a parcouru toutes les lignes du tableau, je vais chercher la dernière ligne du tableau sur la colonne L.

Si tu as d'autres questions n'hésite pas

PS: le code risque d'être dur à lire pour toi, je crée un tableau à l'envers, lignes et colonnes inversées, car le nombre de colonnes du tableau est fixe, mais on ne sait pas le nombre de lignes à l'avance, du coup comme on ne peut redimensionner le tableau que sur la dernière dimension, j'ai dû inverser lignes et colonnes... (c'est peut-être pas très clair comme explication donc si besoin je peux développer sur la fonction Redim et Transpose)

Oui le code n'est pas très simple

Je viens de remarquer de plus que pour la dernière personne le total ne se fait pas et est-il possible également que s'il détecte qu'il qu'il y a le mot "Pause 2" il retire 00.10.00 au total de cette personne ? Car pour certains il y a une "pause 2" et d'autres non. Je suis désolé de rajouter des informations au compte-gouttes mais ce que vous avez fait et déjà très bien, je vais pouvoir en apprendre déjà plus, les boucles n'étant pas mon fort étant débutant.

Tous les jours je vais récupérer un fichier de ce type, si le nombre de personne n'est pas le même à chaque fois cela ne pose pas de problème ? Je veux dire la boucle s'arrêtera des qu'il n'y aura plus de ligne quand même ?

Re,

Pourquoi enlever seulement 10 au temps total pour des pauses de 20 min?

Voici ce que j'ai pour le moment :

En total tu as le temps de pause total puis le temps cumulé moins la pause.

Pour ta deuxième question, la macro est dynamique, elle s'adapte toute seule au nombre de lignes que tu as dans ton fichier

Car pour avoir cette pause de 20 minutes il faut se connecter 10 minutes avant sur le temps de travail, ne cherchait pas j'ai n'ai pas de logique non plus à cela je ne comprend pas non plus pourquoi, les 20 minutes sont comptés dans le temps de travail mais du coup on retire tout de même 10 minutes à leur temps de travail ^^

Car pour avoir cette pause de 20 minutes il faut se connecter 10 minutes avant sur le temps de travail, ne cherchait pas j'ai n'ai pas de logique non plus à cela je ne comprend pas non plus pourquoi, les 20 minutes sont comptés dans le temps de travail mais du coup on retire tout de même 10 minutes à leur temps de travail ^^

Car pour avoir cette pause de 20 minutes il faut se connecter 10 minutes avant sur le temps de travail, ne cherchait pas j'ai n'ai pas de logique non plus à cela je ne comprend pas non plus pourquoi, les 20 minutes sont comptés dans le temps de travail mais du coup on retire tout de même 10 minutes à leur temps de travail ^^

Donc je pourrais appliquer ce code a mes fichiers sans problème tous les jours merci

(Mince j'ai posté plusieurs fois un commentaire comment le supprimer ? ^^)

De rien

D'accord pour l'explication...

Donc si il y a une pause j'enlève 10 min sur le total, ça marche, j'ai modifié la macro, tu as 00:10:00 qui apparait à gauche du total si jamais tu as eu une pause dans le planning de la personne.

Au fait je suis entrain de me dire, j'ai créé la feuille manuellement, ça serait mieux si c'était fait automatiquement... J'ai ajouté quelques lignes pour ajouter une feuille "synthèse" si la dernière feuille du classeur n'est pas appelée "synthèse", voici le fichier:

De mieux en mieux ce fichier, merci beaucoup en tout cas, je me demandais, est-ce possible peut être de créer un fichier "source" avec le code afin que ce code soit toujours présent et tous les jours en appuyant sur la macro il me fait aller chercher le fichier que je veux. Sachant que le fichier que j'irai chercher n'auras jamais le même nom étant donné que la date change toujours. Je ne sais pas si mon explication est claire.

En plus clair peut être: Un fichier avec ce code présent et lorsque je clique sur le bouton il me propose de choisir mon fichier sur lequel appliquer le code ? Comme ça je garde un fichier de base et tous les jours grâce à celui ci je peux y appliquer le code au lieu de toujours copier le code sur les fichiers que je recupère. Car lorsque je récupéré ces données tous les jours c'est un nouveau fichier qui apparaît.

En tout cas déjà un grand merci, je ne sais pas si je peux "noter" la personne qui me répond sur ce forum mais si c'est le cas je veux bien savoir comment

Re,

Oui c'est tout à fait faisable, on peut laisser un utilisateur choisir un fichier avec GetOpenFilename et ensuite diriger la synthèse dans le fichier source, par contre... le fichier source doit garder les infos des macros précédéntes? C'est plutôt rapide à modifier

Oui si possible, je pourrais garder un fichier source par mois et dedans avoir des onglets pour chaque journée peut être ?

Et avec peut être une macro qui après fait un recap de chaque personne en fin de mois en comptabilisant le total d'heure effectuée sur le mois mais du coup il faudrait que la macro fasse la recherche dans chaque onglet cela ne risque pas d'être trop long ?

Re,

oula tu t'emballes reviens tu pars trop loin

Pas besoin de faire une feuille par jour et un fichier par mois, tu fais une feuille avec les mois et les jours, si il faut tu rajoutes juste une colonne date pour pouvoir filtrer plus tard, et ça roule!

Eventuellement tu feras un nouveau fichier quand tu commenceras à avoir des centaines de milliers de lignes mais pas tous les mois Qu'en penses-tu? Au fait si tu veux le nombre d'heures par mois par personne... il faut revoir la façon dont ça fait la synthèse, tu aurais une colonne date, une colonne nom, puis les 3 colonnes de temps, ça te permettra ensuite de faire des statistiques, d'ailleurs la ligne de total on pourrait donc s'en passer je me dis... et au final il faudrait garder une colonne "type temps" avec "Connexion" ou "Pause" en valeurs, ainsi tu pourrais facilement synthétiser le tout avec un tableau croisé dynamique....

Oui, ça me semble être une bonne idée tout cela, c'est vrai que de mon cote je me voyais faire un fichier excel par mois, mais du coup concernant le fichier source qui va chercher les fichiers de chaque jours comment cela fonctionne t-il en vba ? Vous me parliez de "GetOpenFilename", comment pourrait-on l'intégrer dans ce fichier ?

Bonjour,

J'aimerais si possible avoir des explications également sur la première partie du code (si cela ne vous dérange pas) :

Sub traitement()
Application.ScreenUpdating = False
Dim ligFin, cumTemps, nbCol
Dim tabFin As Variant, tableau As Variant

'Initialisations
ligFin = Range("l" & Rows.Count).End(xlUp).Row
tableau = Range("a3", "m" & ligFin)
cumTemps = 0
pause = 0
nbCol = 3
ReDim tabFin(1 To nbCol, 1 To 2)
tabFin(1, 1) = tableau(1, 1)
tabFin(1, 2) = tableau(2, 1)
Rechercher des sujets similaires à "boucles vba recuperation donnees"