Erreur sommeprod

Pour le $1

Si quand vous exécutez une macro qui effectue automatiquement des modifications dans des cellules, vous constatez une lenteur étrange, c'est vraissemblablement parce que votre classeur contient de nombreuses formules, et à chaque changement quelconque d'une cellule, Excel recalcule tout. AUssi, il est sage de mettre avant toute macro l'instruction de blocage du recalcul automatique :

Application.Calculation = xlCalculationManual

Pensez à le remettre à automatique juste avant la fin de la macro :

Application.Calculation = xlCalculationAutomatic

Egalement pour des questions de vitesse d'exécution, il est conseillé de sésactiver le rafraîchissement de l'écran avant la macro, et réactiver après :

Application.ScreenUpdating = False
   ' Faire plein de choses qui affectent le contenu des cellules
Application.ScreenUpdating = True

Bien reçu.

Mais les lignes ne sont pas fixes car ils changent en fonction des équipes(3 à 6) et le nombre d'agent par équipe qui varie aussi de 1 à 6 sinon plus.

Donc on pourra se trouver à 6*6 agents donc 36...

Si on doit bloquer les lignes je dois savoir comment pour adapter à chaque unité. Sinon le mieux serait peut être de le faire varier...

Merci pour tout!

Au bout de 5 pages, je fais un bilan :

  • la formule SOMMEPROD est résolue
  • il subsiste sans doute par ailleurs encore de nombreux pièges
  • celui qui conçu ce machin s'est fait plaisir mais n'a pas
  • - ni exploité les possibilité d'excel
  • - ni pensé à la maintenabilité et l'évolution

Il FAUT simplifier la structure et tout découlera de source.

Je vais te proposer un canevas d'ici fin de semaine.

Ca devient très lent.. Si je clique sur l'étoile ça prend beaucoup de temps(1 à 2 minutes)avant de mettre à jour la feuille QUART PAR AGENT.

je ne sais pas à quoi sert l'étoile ! vois avec celui qui a fait la macro

il faut ajouter une instruction demandant de suspendre le calcul ! ou au moins l'affichage !


la feuille heure ne modifie le nom des agents

en effet le fichier fourni ne donne aucune liaison !! je ne peux pas les deviner ... remets les liaisons comme à l'origine que je n'ai pas


Venons en à la feuille HEURES :

J'ai essayé de modifier la constitution des équipes : ça ne prend pas en compte les nouvelles agents introduites

la structure de la feuille a été modifiée !! les dates sont en lignes 3, 16, 29 ...

alors que le fichier précédent c'était 3, 17, 31 ...

donc patatrac (le pas était aussi figé dans la formule d'origine)

ne plus supprimer de lignes !! merci

Function nbHeures(qui As Range, quand As Range, code As Integer) As Variant
' code = 1 Jour, 2 Nuit

Application.Volatile
Dim l%, c%, i%, j%
Dim durees(1 To 4, 1 To 2) As Variant
durees(1, 1) = 7 / 24
durees(2, 1) = 7 / 24
durees(3, 1) = 6 / 24
durees(4, 1) = 4 / 24
durees(1, 2) = 6 / 24
durees(2, 2) = 0 / 24
durees(3, 2) = 0 / 24
durees(4, 2) = 3 / 24
nbHeures = 0

With Sheets("QUART PAR AGENT")
    ref = .Range("C3").Value ' date de début des quarts
    l = Int((quand.Value - ref) / 7) * 13 + 6 ' ligne de départ de la matrice = 6, pas de 13
    c = ((quand.Value - ref) Mod 7) * 4 + 3 ' colonne de départ de la matrice = 3, pas de 4
    For i = l To l + 9 ' 10 agents
        For j = c To c + 3 ' 4 horaires
            If .Cells(i, 2) = qui.Value Then
                If .Cells(i, j) = "X" Then nbHeures = nbHeures + durees(j - c + 1, code)
            End If
        Next
    Next
End With

End Function

Salut Steelson!!

Vraiment Merci!!!

La comptabilisation des heures est Ok dans sa totatilité... En réalité c'est ce que j'ai toujours cherché..

Maintenant ça macrhe bien, si on peut recuperer automatiquement sans que je sois obligé d'écrire le nom de la liste à chaque fois.

Si on pouvait recuperer les noms des agents à partir soit de la feuille EQUIPE ou de la feuille QUART PAR AGENT, ça évitera les mesquineries des curieux!!!!

En tout cas merci infiniment!!!!!

Au bout de 5 pages, je fais un bilan :

  • la formule SOMMEPROD est résolue
  • il subsiste sans doute par ailleurs encore de nombreux pièges
  • celui qui conçu ce machin s'est fait plaisir mais n'a pas
  • - ni exploité les possibilité d'excel
  • - ni pensé à la maintenabilité et l'évolution

Il FAUT simplifier la structure et tout découlera de source.

Je vais te proposer un canevas d'ici fin de semaine.

En effet! Il disait qu'il n'a pas trop finit......

Au fait je l'ai forcé la main en quelque sorte car je devais presenter ça à mon chef aujourd'hui mais finalement j'ai eu un report pour le mercredi prochain.....

Voilà pourquoi........

Merci à vous tous!!!!

En tout cas, le mieux c'est de reduire les saisies de l'utilisateur......

Au bout de 5 pages, je fais un bilan :

  • la formule SOMMEPROD est résolue
  • il subsiste sans doute par ailleurs encore de nombreux pièges
  • celui qui conçu ce machin s'est fait plaisir mais n'a pas
  • - ni exploité les possibilité d'excel
  • - ni pensé à la maintenabilité et l'évolution

Il FAUT simplifier la structure et tout découlera de source.

Je vais te proposer un canevas d'ici fin de semaine.

Bonjour Steelson,

S'il vous plait, en revisitant le code il faut voir s'il y'a la possibilité de copier directement le nom des agents à partir de la feuille ÉQUIPE ou la feuille QUART PAR AGENT. il faut par ailleurs penser à l'automatisme du nombre de ligne qui change en fonction du nombre d'agents qui n'est pas toujours fixe.

Merci pour ton aide et bonne journée !!!!

Au bout de 5 pages, je fais un bilan :

  • la formule SOMMEPROD est résolue
  • il subsiste sans doute par ailleurs encore de nombreux pièges
  • celui qui conçu ce machin s'est fait plaisir mais n'a pas
  • - ni exploité les possibilité d'excel
  • - ni pensé à la maintenabilité et l'évolution

Il FAUT simplifier la structure et tout découlera de source.

Je vais te proposer un canevas d'ici fin de semaine.

bonjour

salut Steelson,

tu es la sagesse personnifiée

en particulier il FAUT apprendre les fonctionnalités automatiques d'Excel (tableaux, TCD, PowerQuery et Power BI) bien avant d'apprendre VBA

C'était excellent d'un point de vue neuronal !

Mais voici ce qu'il FALLAIT FAIRE ...

La présentation doit s'appuyer sur une BdD (voir feuille BdD) et les calculs en découleront.

Et non pas faire des calculs sur une présentation aussi jolie soit-elle !!

Reste à faire votre macro (plus que simplifiée) de répartition des quarts !

9quart.xlsm (55.14 Ko)

[quote=Steelson post_id=615721 time=1516874244 user_id=30943]

[Quote]Reste à faire votre macro (plus que simplifiée) de répartition des quarts !

[/quote]

Merci beaucoup!

Pour dire vrai, je ne connais pas grande chose en macro. Je m'en remet à vous.

Merci!

C'était excellent d'un point de vue neuronal !

Mais voici ce qu'il FALLAIT FAIRE ...

La présentation doit s'appuyer sur une BdD (voir feuille BdD) et les calculs en découleront.

Et non pas faire des calculs sur une présentation aussi jolie soit-elle !!

Reste à faire votre macro (plus que simplifiée) de répartition des quarts !

J'ai chargé la feuille quart, mais je ne comprends pas grande chose...

Pouvez m'expliquez un peu comment l'utiliser..

Par ailleurs les rapports sont mensuels, moi je vois Janvier puis Fevrier..

Dans la table des quarts, je ne vois que le quart de la première semaine mais pas les autres sémaines du mois de janvier..

Voilà par mois

Pour le reste, regarde les feuilles cachées

8quart.xlsm (68.76 Ko)

Voilà par mois

Pour le reste, regarde les feuilles cachées

Merci beaucoup.

Excuse moi du dérangement.

Je vais revoir et vous revenir.je dois presenter ça le Mercredi prochain.

Bonjour Steelson,

Je suis vraiment tenter par votre proposition mais ça répond pas totalement à mes attentes:

1. Je ne vois pas où on doit saisir le nom des agents

2.je ne vois pas comment on choisir les équipes et les quarts de départ

3. Dans la feuille mois dès que je change le mois , ça ne marche plus.

Bref, le tableau de quart doit pouvoir s'adapter à chaque service selon le nombre d'agents et la rotation qui diffère pour chaque service.

Ensuite on comptabilise les heures par mois jour pour jour puis on fait recap.

Besoins : on doit pouvoir saisir le nom des agents de l'unité, définir les équipes puis faire le roulement initial.

Excel doit faire automatiquement les autres quarts selon le quart initial sur le mois, semaine par semaine.

Puis Excel calculés les heures travaillées par chaque agent jour pour pour jour et faire le total mensuel en tenant compte des absences et des heures de jour fériés et enfin, on fait le recap mensuel de ces heures par agents.

Et voilà ceux dont ça doit faire...

Merci!

Excuse moi du dérangement.

Je vais revoir et vous revenir.je dois presenter ça le Mercredi prochain.

tu as de toute façon la version avec le SOMMEPROD corrigé ...

Peux-tu le demander au macro-expert qui t'avait fourni le fichier ?

Je veux bien de mon côté répondre à ton besoin, mais je ne suis pas sûr d'avoir saisi !

1.je ne vois pas où on doit saisir le nom des agents

je vais faire l'interface de saisie

2.je ne vois pas comment on choisir les équipes et les quarts de départ

combien d'équipes ? combien de personnes par équipe ?

3. dans la feuille mois dès que je change le mois , ça ne marche plus.

normal, rien n'est saisi au-delà de janvier, comme ton fichier, j'ai repris les mêmes infos

et surtout, comment sont établis les quarts ... m'expliquer !

Salut!

tu as de toute façon la version avec le SOMMEPROD corrigé ...

oui et ca marche bien maintenant! Vraiment Merci infiniment!

J'ai une version présentable maintenant, même si quelque amélioration reste necessaire.

Est il possible de mettre en place un système pour la modification automatique du nombre de ligne(13) du macro en fonction des nombres d'agents?

Car , à chaque changement du nombre d'agents, il faut changer le nombre de ligne pour que ça marche, or la valeur depend du nombre d'agent, donc si on peut mettre un champ où on met le nombre d'agents puis le macro l'utilise. Où au mieux au lieu de mettre une valeur fixe, qu'on récupère la dimension de la colonne des agents du premier tableau de la feuille QUART PAR AGENT, comme ça peut importe le nombre d'agents , ça sera automatique.....

Merci!

Peux-tu le demander au macro-expert qui t'avait fourni le fichier ?

Malheureusement non! Il m'a dit dépuis le début qu'il n'a pas encore finit avec les roulements et qu'il est dessus pour plus de fluidité...Mais , comme je l'ai dit tantôt, je l'ai un peu forcé la main pour s'interrompre et me faire ce que tu vois dans le fichier que j'ai envoyé.. Maintenant, il est revenu dessus pour le faire comme il pense meilleure avec toutes ses étapes sans rien précipité...

Je veux bien de mon côté répondre à ton besoin, mais je ne suis pas sûr d'avoir saisi !

ça me fera un grand plaisir...

[quoote]je vais faire l'interface de saisie[/quote]

Merci beaucoup!!!!

combien d'équipes ? combien de personnes par équipe ?

ouhnnnn... C'est là même qui peut être un soucis...

les équipes vont de 3 à 6, mais on va faire de 3 à 5 pour faire simple

le nombre de personne par équipe est très variables de 1 personne à environ 10, les équipes sont pas forcement égales en nombres de personnes les constituants.

normal, rien n'est saisi au-delà de janvier, comme ton fichier, j'ai repris les mêmes infos

Et pour tant dans fichier, avec la feuille MENU PRINCIPAL, on peut choisir le mois et l'année et le bouton "Initialiser Mois" permet de mettre le mois et l'année à jour.

Pour les quarts :

il y'a 4 quarts : 00-07; 07-14; 14-20; 20-00

  • quelqu'en soit le roulement, l'équipe qui fait 07-14 fera 20-00 le même jour et continue de 00-07 jusqu'au matin(20-00 et 00-07 sont liés ie 20-07)..
  • --celui qui fait 14-20 fera le lendemain 07-14
  • -- celui qui fait 00-07 va se réposer pendant :
1. pour un roulement à 3 équipes : il se repose une journée complète(ie 07-14+14-20+20-07+07-14) et reprend le lendemain à 14h(il fait 14-20) et le tour continue ainsi de suite

2. Pour un roulement à 4 équipes : il se repose 2 journée complète et reprend le surlendemain à 14h et le tour continue

3. Pour un roulement à 5 équipes : il se repose 3 journée complète et reprend à 14h ainsi de suite.

Selon le roulement c'est comme ça que les équipes tournent..

C'est juste qu'il faut prévoir les entrées(fin absences) et sorties(absences)...

Voilà! Celui a fait le macro était sur les entrés et sorties quand je l'ai démandé de suspendre pour faire les quarts par agents.

Merci!!!!!

Malheureusement non! Il m'a dit dépuis le début qu'il n'a pas encore finit avec les roulements et qu'il est dessus pour plus de fluidité..

Normal, c'est une usine à gaz, mais il est très très fort en VBA

Mais comme dit jmd

il FAUT apprendre les fonctionnalités automatiques d'Excel (tableaux, TCD, PowerQuery et Power BI) bien avant d'apprendre VBA

D'ailleurs ...

simplicite

le nombre de personne par équipe est très variables de 1 personne à environ 10

ah je les ai mises à 8 maxi, mais je peux revoir facilement

1. pour un roulement à 3 équipes : il se repose une journée complète(ie 07-14+14-20+20-07+07-14) et reprend le lendemain à 14h(il fait 14-20) et le tour continue ainsi de suite

2. Pour un roulement à 4 équipes : il se repose 2 journée complète et reprend le surlendemain à 14h et le tour continue

3. Pour un roulement à 5 équipes : il se repose 3 journée complète et reprend à 14h ainsi de suite.

Selon le roulement c'est comme ça que les équipes tournent..

C'est juste qu'il faut prévoir les entrées(fin absences) et sorties(absences)...

wahou ... bon je vais faire quelque chose qui te laisse la main tout en fournissant une aide à la saisie

cela reste à faire (demain ?)

Besoins : on doit pouvoir saisir le nom des agents de l'unité, définir les équipes puis faire le roulement initial.

Excel doit faire automatiquement les autres quarts selon le quart initial sur le mois, semaine par semaine.

c'est là où je n'ai pas trop compris ... mais tu pourras dans un premier temps faire du copier/coller en attendant que ton super spécialiste de macro le fasse et normalement la base de données doit lui faciliter grandement la tâche !

Puis Excel calculés les heures travaillées par chaque agent jour pour pour jour et faire le total mensuel en tenant compte des absences et des heures de jour fériés et enfin, on fait le recap mensuel de ces heures par agents.

ok, il y a un onglet pour visualiser les quarts, un pour avoir les heures par jour et un synthèse heures mensuelles = c'est le plus facile à faire compte tenu que tout est enregistré dans la base de données

Voici où j'en suis, je le poste pour en avoir aussi une sauvegarde !

32quart.xlsm (93.93 Ko)

Merci pour le fichier,

L'expert en VBA c'est la maréchal MFerrand.

Je vois que bien que vous n'avez pas saisi mon idée d'équipes :

Ce sont les équipes qui tournent entre elles . Une équipe peut avoir avoir entre 1 à 8 agents; les membres de la même équipe partagent le même quart ie ils sont ensemble aux travail et une autre équipe va les relever..

On a entre 3 à 5 équipes qui tournent entre elles selon l'unité. et chaque équipe est composé par des personnes.

Coorection de votre exemple :

Dans votre exemple, vous avez choisis trois équipes de 2 agents par équipe... C'est ça la bonne configuration.

J'espère qu'avec cette explication, ça ira mieux.

Merci et bonne journée!!!

Je vois que bien que vous n'avez pas saisi mon idée d'équipes :

Ce sont les équipes qui tournent entre elles . Une équipe peut avoir avoir entre 1 à 8 agents; les membres de la même équipe partagent le même quart ie ils sont ensemble aux travail et une autre équipe va les relever..

tu y mettras les infos que tu voudras ...

Rechercher des sujets similaires à "erreur sommeprod"