Bonjour,
C'est déjà à nouveau moi, j'ai l'impression que je suis en train d'atteindre mes limites. Je déteste gérer des dates et des heures sur Excel mon truc c’est plutôt les chiffres.
J'ai un tableau avec des données alimentées par VBA depuis un fichier texte pour gérer des pointages avec des totaux hebdomadaires et mensuels.
Le premier salarié démarre après les lignes de titre par un lundi soit valeur 1 et ainsi de suite jusqu'à 7 pour dimanche.
A chaque fin de semaine dans la colonne E j'ai TOTAL SEMAINE et en fin de mois mon dernier TOTAL SEMAINE est suivi d'un TOTAL MOIS et ensuite c'est un nouveau salarié qui repars avec 1 comme 1er jour de sa première semaine.
Mat Colonne E "Jour semaine 1 = lundi"
SOULA00 1
SOULA00 1
SOULA00 2
SOULA00 3
SOULA00 3
SOULA00 4
SOULA00 4
SOULA00 5
SOULA00 6
SOULA00 7
SOULA00 TOTAL SEMAINE
SOULA00 1
SOULA00 1
SOULA00 2
SOULA00 3
SOULA00 4
SOULA00 5
SOULA00 5
SOULA00 6
SOULA00 6
SOULA00 6
SOULA00 7
SOULA00 7
SOULA00 TOTAL SEMAINE
SOULA00 1
SOULA00 2
J'ai un code qui me permet de faire des totaux hebdomadaire par le biais d'une somme pour laquelle j'ai récupéré l'adresse des cellules à sommer en partant du principe que chaque semaine commence à 1 avec la première ligne 1 vide et la seconde alimentée.
Mon code fonctionnait très bien. Mais j'ai des salariés qui ont plus de 2 lignes de pointages par jour donc plus de 2 fois la ligne 1 donc mon code ne fonctionne plus puisque je m'arrête à la première ligne 1 trouvée alors qu'il faudrait que j'atteigne le 1er 1 pour chaque semaine et non le dernier.
J'ai essayé tout ce qui était à ma portée mais rien à faire je ne sais pas comment faire pour remonter jusqu'à la ligne contenant le premier 1 pour chaque salarié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Range("D2").End(xlDown).Offset(1, 0).Select DerLigne = ActiveCell.Row Set MaPlage = ActiveSheet.Range("D2:D" & DerLigne) Dim NumLigne As Integer Dim NumLigne2 As Integer Dim NumLigne3 As Integer Range("E2").Select For Each cell In MaPlage If ActiveCell.Value = "TOTAL SEMAINE" Then NumLigne = ActiveCell.Row ActiveCell.Offset(-1, 0).Select NumLigne2 = ActiveCell.Row Range("E" & NumLigne).Select Do While ActiveCell.Value <> 1 ActiveCell.Offset(-1, 0).Select NumLigne3 = ActiveCell.Offset(1, 0).Row Loop 'Applique les formules dans les lignes totaux par semaine de F à K et de N à U Range("F" & NumLigne).Select ActiveCell.Formula = "=SUM(" & Cells(NumLigne2, 6).Address & ":" _ & Cells(NumLigne3, 6).Address & ")"
J'ai essayé avec un LIKE pour identifier les lignes contenant TOTAL ce qui serait un bon moyen d'identifier mes fins de semaines et de mois mais ça ne fonctionne pas. J'avais insérer une ligne avant le 1er salarié avec la donnée TOTAL pour que ça fonctionne pour lui aussi mais rien n'y fait, je cale complètement je crois que n'arrive pas à faire fonctionner NOT LIKE avec DO WHILE alors que je l'ai déjà utilisé avec des SI. Excel remonte jusqu'à la première ligne de la feuille il ne trouve jamais la valeur TOTAL. J'ai aussi essayé avec DO UNTIL pour ne pas utiliser NOT LIKE mais rien non plus. Soit je boucle soit je buggue soit il ne se passe rien.
Je ne vois vraiment pas comment il faut raisonner et je ne pense pas être capable de trouver le code qui pourrait faire l’affaire.
Quelqu'un aurait-il une idée pas trop compliquée à la hauteur de mes petites capacités pour résoudre mon problème ?
Tant que j'y suis, sans vouloir abuser, ma formule SOMME est bien évidemment en références absolues, existe-t'il un équivalent pas trop compliqué pour avoir les références de cellules en références relatives ? Je pense que non mais peut-être que je suis dans l'erreur.
J’espère que mes explications sont assez claires.
D'avance merci à tous ceux qui me liront et double merci à celui qui m'aidera à trouver une solution.
Nadine
Partager