VBA calculate masque

Re

j'ai compris l'idée je pense pour moi ça me va votre suggestion

Ok je vais voir pour vous proposer quelque chose

Je regarde juste car j'ai une erreur quand je clique sur les case a cocher Y dans donnée pour les colonne mais je vais essayer de trouver la raison.

La raison vient de la protection des feuilles. Faites ceci dans le code CD1 :

  • Juste en dessous de la ligne --> For i = 0 To UBound(Feuille) --> Ajoutez --> Worksheets(Feuille(i)).Unprotect PW
  • Juste en dessous de la ligne --> End Select --> Ajoutez cette ligne --> Worksheets(Feuille(i)).Protect PW

L'encadré "Astreinte" il est dans quel cellule ?

Crdlt

Re bonjours , merci vous n'etes pas obliger mais merci !

Astreinte est sur les ligne 92 et 93 de B a X dans les pages janvier a decembre et les date ce trouverais que dans les celulle le de couleur .

Merci sa marche niquel !

Bonjour

c'est où que vous voulez mettre ces dates dans les lignes 92 et 93.

Donnez un exemple avec la référence des cellules et ce que l'on doit y trouver par exemple pour Janvier 2020

Crdlt

Bonjour ,Les cellules sont B92 , B93 , K92,K93 ,T92,T93. merci

Du coup en janvier il y'aurais en B92 = 01/01 , en B93 = WE du 4/01 - 05/01 , en K92 = WE du 11/01 - 12/01, en K93 = WE du 18/01 - 19/01, en T92 = WE du 25/01 - 26/01 et vide en T93

Bonsoir

Votre demande au sujet des astreintes ne me parait pas simple du tout à réaliser.

A ce stade, il serait intéressant de se pencher sur la rapidité du fichier qui pose vraiment du souci.

J'ai regardé dans votre fichier les formules. C'est hyper compliqué de comprendre.

1.,Par exemple voici une formule qui fait ramer votre fichier : hjanvier =

=SI(ESTVIDE(RECHERCHEV(HJanvier!$A44;Janvier!$1:$1048576;HJanvier!G$7+1;FAUX));"";TEXTE(RECHERCHEV(RECHERCHEV(HJanvier!$A44;Janvier!$1:$1048576;HJanvier!G$7+1;FAUX);Données!$A$3:$E$80;2;FAUX);"hh:mm")&SI(ESTVIDE(RECHERCHEV(RECHERCHEV(HJanvier!$A44;Janvier!$1:$1048576;HJanvier!G$7+1;FAUX);Données!$A$3:$E$80;3;FAUX));"";" : ")&SI(ESTVIDE(RECHERCHEV(RECHERCHEV(HJanvier!$A44;Janvier!$1:$1048576;HJanvier!G$7+1;FAUX);Données!$A$3:$E$80;3;FAUX));" ";TEXTE(RECHERCHEV(RECHERCHEV(HJanvier!$A44;Janvier!$1:$1048576;HJanvier!G$7+1;FAUX);Données!$A$3:$E$80;3;FAUX);"hh:mm")))

Là, pourquoi allez vous faire une recherche sur la totalité de la feuille (1048756 lignes !!) lorsqu'il vous suffit de limiter à 100 lignes ??? Là vous devez absolument la revoir en premier. Elle y est dans toutes les feuilles !

On trouve cette formule même dans les lignes bleues (Equipe de jour, stagiaire, equipe de nuit, ...) de la feuille et toutes les autres. Ne devriez-vous pas enlever ces formules qui ne servent à rien puisque les lignes de la colonne A suivent celles de la feuille Donnée ?

Idem pour les formules hfevrier, hmars, ect ...

2. Autre formule où vous faites appel à la formule Sommeprod

Je ne comprends pas le pourquoi de cette formule par rapport au SI(A10="";"";.....)

Je pense qu'il faudrait consacrer du temps à revoir ces quelques formules et surtout éviter toutes les SOMMEPROD. Cette formule de type matricielle ralentit toujours un fichier lorsqu'il y en a de trop.

Votre fichier en retour pour test -->

Vous ne m'avez toujours pas dit à quoi sert la macro CLEAR dans votre fichier

Cordialement

Effectivement je vais me pencher dessus merci vraiment. Pour l astreinte ce n'est pas important, pour le clear cela effacé les données saisi de janvier à décembre afin de pouvoir utiliser le fichier vide. Et merci pour tout

Re

Ok. Tenez moi au courant.

Si j'avais un exemple de ce que vous faites, je pourrais regarder de mon coté aussi.

En premier dans les formules RechercheV, remplacez déjà le 1048576 par le nombre de lignes utilisées.

Crdlt

Bonjour je vais déjà faire cela. Après pour les si(a1="";""; c'était pour éviter des erreur mais c'est peut-être de trop concernant les sommeprod je vais voir mais la desuite je n'est pas encore d'idée. Merci

Re

Oui j'avais compris pour le SI mais ce n'est cela le souci. C'est la formule SOMMEPROD.

Pourquoi vous utiliser cette formule en fait, car à la lecture il semble qu'il s'agit de multiplier des valeurs uniquement

En fait je ne comprends pas ce qui est recherché au final dans votre fichier pour cette fonction

D'où je vous demandais un exemple pour tester.

Crdlt

=SI($A10="";"";SIERREUR(SOMMEPROD((INDIRECT("'H"&$A$1&"'!$A$9:$A$65")=$A10)*(GAUCHE(INDIRECT("'H"&$A$1&"'!$B$9:$AF$65");5)>"06:00")*(DROITE(INDIRECT("'H"&$A$1&"'!$B$9:$AF$65");5)<"19:30")*(GAUCHE(INDIRECT("'H"&$A$1&"'!$B$9:$AF$65");1)<"2")*((INDIRECT("'H"&$A$1&"'!$B$6:$AF$6")=DF$7)));""))

Cette formule permet de conter le nombre de lundi matin effectuer.

Du coup pour compter je prend en compte les temps doivent etre compris entre :

  • [Matin]Debut = >6h |< 9h & Fin = > 13h30 | < 19h30
  • [Journée]Debut = >9h |< 12h & Fin = > 16h30 | < 19h30 + ajouter Les T , F
  • [Soir]Debut = >12h |< 15h & Fin = > 19h50 | < 23h30
  • [Nuit]Debut = >19hh |< 23h30 & Fin = > 04:30 | < 09h30

Mais il faut pas prendre encompte (AT, AM,EM,ATN,AMN,EMN,Syn,TP) . du coup j’avais fais comme cela ^^'.

Re

faudrait que je vois un fichier avec des données pour analyser cette formule.

Mais de base, essayer d'éviter l'utilisation dans votre fichier. Il y a trop de données et de feuille.

En premier, vous pourriez déjà adapter les lignes dans les rechercheV dont j'ai parlé dans le courrier avant

Re

Au fait c'est quoi cette formule dans votre fichier ???

=('KeranLatos_planning-V5.xlsm'!Hdroitesimple<'KeranLatos_planning-V5.xlsm'!Hgauche)+'KeranLatos_planning-V5.xlsm'!Hdroitesimple

Cela correspond à un nom hdroite. C'est une erreur je pense. Là c'est sur que le fichier chercher quelque chose. On peut les supprimer ??

Re , oui c'est une erreur je suis entrain de finir de faire les rechercheV la ^^"

voila pour l'instant en modifiant un peur le module un la fonction Filtre et No filtre

Re

Je ne vois pas beaucoup de différence et vous ?

Pour la macro Clear, je viens de regarder

With Worksheets(Feuille(i))
       unlockedall
        .Range("B66:AG66").ClearFormats
        .Range("B5:AG5").ClearFormats
        .Range("B5:AG5").ClearContents
        .Range("B67:AJ9").ClearContents
        .Range("B9:AJ66").ClearContents
        .Range("AS9:AS66").ClearContents
       lockedall
    End With

regardez les range...

1. Pourquoi fait-on un clear sur le Range("B5:AG5") ???

2. .Range("B67:AJ9").ClearContents et .Range("B9:AJ66").ClearContents : cela fait la même chose. On peut supprimer une ligne ?

re

La différence est legerer effectivement mais ça ce ressent.

.Range("B5:AG5").ClearFormats permet d'effacer certaine mise en couleur par les personne qui se serve du fichier . oui je vais garder .Range("B9:AJ66").ClearContents :

re

Ok mais dans cette ligne il n'y a pas de données. Elles ont ajoutées à l'utilisation ?

votre macro pourrait être ceci

Sub Clear()
Dim i As Byte
Application.ScreenUpdating = False
Dim Feuille()
Feuille = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", _
                           "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre")
Flag = True
For i = 0 To UBound(Feuille)
     With Worksheets(Feuille(i))
        .Unprotect PW
        .Range("B66:AG66").ClearFormats
        .Range("B5:AG5").ClearFormats
        .Range("B5:AG5").ClearContents
        .Range("B9:AJ66").ClearContents
        .Range("AS9:AS66").ClearContents
        .Protect PW
    End With
Next i
Flag = False
End Sub

Pas beson des deux codes unlockedall et lockedall qui boucle sur toutes les feuilles. On déprotège et reprotège la feuille concernée dans la boucle i

ajouter non mais parfois modifier ou les formule supprimer d'ou la protection .

desoler vraiment sa m'embeter de vous deranger autant ...

merci sincerement et je prend note de vos conseil .

Re

Pas de soucis

1. Bizarre dans le fichier Planning V5 et celui que vous avez posté, les macro Clear et Newsy sont inversées

2. Dans la Sub bilan, est-ce vous qui avez rajouté les instructions FLAG ??

oui c'etait plus clair pour moi et c'est moi j'avais supprimer sans faire expres çç

Rechercher des sujets similaires à "vba calculate masque"