Chercher l'erreur

Bonjour à tous,

Je suis entrain d'essayer de trouver un numéro de semaine.

Je joins mon classeur pour voir où se trouve l'erreur.

Merci de me venir en aide.

Amicalement

Noel

29classeur1.zip (15.60 Ko)

Bonjour,

Il existe dans excel la formule

=NO.SEMAINE(date)

En espérant que cela vous aide.

Cordialement

Bonjour

Il m'arrive d'avoir ce problème que je ne m'explique pas.

Je le résous par une boucle.

Bye !

12classeur1-v1.zip (24.95 Ko)

Bonjour à tous les 2,

Morgane, merci pour ton code qui ne donne dans la cellule "nom?"

GMB Ton fichier peut être utilisable mais il me faut obligatoirement le résultat de la colonne "K" qui se situe à la 11ème colonne

Pour le moment il me donne le résultat de la colonne "C" qui se situe à la 3ème colonne.

C'est la 1ère fois que cela m'arrive que je n'explique pas non plus.

Merci à vous deux.

amicalement

Noel


Re,

J'ai l'impression que cela ne fonctionne pas sur des cellules fusionnées.

Pourrait-on savoir pourquoi ou peut être qu'il faut ajouter une fonction.

@+

Amicalement

Noel

Bonjour,

Je viens de refaire la formule sur ton fichier est cela fonctionne.

J'ai d'abord dé fusionner les cellules et ensuite j'ai fusionné.

Tu verras dans le fichier dans la cellule jaune.

Cordialement

9classeur1.zip (14.96 Ko)

Bonsoir,

Je ne comprends pas bien ce que tu essaies de faire :

  • si tu rentres tes dates dans la ComboBox, tu identifies exactement ta ligne avec ListIndex, sans expression de recherche à rallonge...
  • d'autre part, tu n'auras de correspondances directes de la ligne date avec ta colonne de cellules fusionnées que pour les lundis, les autres cellules sont vides...
  • il faut donc faire un correctif pour trouver la ligne du lundi...
  • il y a une erreur pour le 01/01 qui n'est pas dans la semaine 1 mais dans la dernière semaine de 2016 !
  • et pourquoi mettre la même valeur dans Label et TextBox ?

Et au bout du compte, à quoi ça doit servir ? Car le numéro de semaine se calcule aisément !

[mais en aucun cas avec NO.SEMAINE Jusqu'à Excel2007 inclus pas de fonction Microsoft pouvant renvoyer le numéro de semaine selon la norme ISO 8601. A partir de Excel 2013, une fonction renvoie le numéro de semaine ISO. Pour 2010, c'est un peu confus : malgré une description dans l'aide qui laisse penser le contraire, il semble que la fonction, assortie du paramètre 21 fasse le bon calcul... ]

En tout cas pour 2003, tu peux créer une fonction VBA renvoyant le numéro de semaine :

En voilà une...

Function NSEM(d As Date) As Integer
    Dim dref
    Application.Volatile
    dref = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 3)
    dref = dref - Weekday(dref) + 2
    NSEM = (d - dref) \ 7 + 1
End Function

Celle-ci est rédigée pour pouvoir fonctionner en feuille de calcul, en VBA aussi bien sûr (si utilisation exclusive VBA on peut ôter une ligne...)

Cordialement.

Bonjour,

Avec cette fonction (qui, si je me souviens bien est de Laurent Longre) :

=ENT((I19+5-SOMME(MOD(DATE(ANNEE(I19-MOD(I19-2;7)+3);1;2);{1E+99;7})*{1;-1}))/7)

où I19 est ta première date bien sûr !

Bonjour à tous,

C'est formidable qu'il y en ai 4 forumeurs sur ce fil.

Tout d'abord je m'adresse à Morgane et Theze, je voudrai avoir le code en vba qui fonctionne à partir de mon Userform. Donc vos propositions me semblent-il opportun pour le calcul dans un tableau. Comment dois je récupérer pour le VBA

MFerrand tu me poses une question essentielle

et pourquoi mettre la même valeur dans Label et TextBox ?

je l'ai mis pour pouvoir choisir de l'inclure dans mon projet.

Ton code

Function NSEM(d As Date) As Integer
    Dim dref
    Application.Volatile
    dref = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 3)
    dref = dref - Weekday(dref) + 2
    NSEM = (d - dref) \ 7 + 1
End Function

Je dois l'inclure dans le projet mais où?

Pour le moment je me contenterai de : dés l'ouverture de l'USF le Combobox se remplit de la date du jour, il devrait donc me donner le N° de semaine correspondant.

GMB m'a fait un exemple (que je remets en ligne sur le fil)qui fonctionne très bien mais pas dans mon projet. Je ne sais pas pourquoi

Merci pour vos dévouements.

Amicalement

Noel

5classeur1-v1-4.zip (21.92 Ko)
11semaine.xlsx (8.21 Ko)

Bonjour Steelson,

Merci pour le fichier. Je vais regarder cela à tête reposée.

Amicalement

Noel


Steelson,

Le fichier je n'arrive pas à l'ouvrir même un semblant.

Peux-tu me l'envoyer sous format .xls

Merci d'avance

@+

Amicalement

Noel

5semaine.zip (6.56 Ko)

Annulé

Re Steelson,

Je te remercie pour le fichier. Je vais essayer d'adapter à mon projet.

Bonjour Gmb,

Je en comprends pas pourquoi "Annulé"

@+

Noel

cfn3cfn a écrit :

Je en comprends pas pourquoi "Annulé"

J'avais fait une réponse avant de m'apercevoir que Steelson avait déjà répondu.

Quand on est distrait...

Bye !

Bonjour Gmb,

C'est pas grave du tout.

Tout ça m'a bien servi.

Merci encore à tous

Theze a écrit :

Bonjour,

Avec cette fonction (qui, si je me souviens bien est de Laurent Longre) :

=ENT((I19+5-SOMME(MOD(DATE(ANNEE(I19-MOD(I19-2;7)+3);1;2);{1E+99;7})*{1;-1}))/7)

où I19 est ta première date bien sûr !

Bonjour Theze, tout le monde,

Résurgence de vieux débats... ! C'est en effet, à ma connaissance sa première formule sur ce calcul, accompagnée d'un long texte d'explications, que je crois bien n'avoir pas pu avaler en une seule fois à l'époque où je l'ai lu !

Il en a depuis fait d'autres, plus simples, et d'autres ont aussi fournis pas mal de variantes puisque le mode de calcul tourne toujours autour des mêmes critères...

La fonction que j'ai donnée est d'ailleurs à 50% de Laurent Longre. La ligne qui définit la date du 3 janvier doit déterminer l'année de référence : la façon de la déterminer provient de Laurent Longre (j'ai eu passé pas mal de temps à l'étudier en détail et n'ai jamais trouvé de façon plus simple...) Pour le reste du calcul (les deux lignes suivantes qui pourraient être compactées en une), j'étais revenu à mes préférences d'opérer sur la date du 3 janvier (le décalage du 4 au 3 régule la série renvoyée par JOURSEM (ou Weekday) [si le 4 est un lundi, le 3 est un dimanche...] du dimanche au samedi) qui rend le calcul plus facile à expliquer.

J'ajoute la formule que j'utilise en classeur sans macro (préférence, toujours, liée à la facilité avec laquelle on peut l'expliquer...) :

=ENT((A1-RECHERCHE(A1;DATE(ANNEE(A1)+{-1;0;1};1;3)-JOURSEM(DATE(ANNEE(A1)+{-1;0;1};1;3))+2))/7)+1

Pour boucler l'historique de la question, les dernières versions d'Excel disposent d'une fonction dédiée au calcul de la semaine ISO (ce qui éteindra la discussion à terme !), on avait cru pouvoir formuler en VBA en utilisant DatePart... Mais curieusement, cette fonction fournit un résultat erroné tous les 28 ans. Par contre sur 2010, la fonction NO.SEMAINE assortie du paramètre 21 (2e argument), dont la définition est "semaine débutant le lundi et qui contient le premier mardi de l'année", inexacte au regard de la norme ISO semble, elle, faire un calcul exact (elle fournit le bon résultat là où DatePart est en erreur...)

Bonne journée à tous.

cfn3cfn,

Pour ce qui est de la mécanique de ton Userform, de mémoire, si tu nommes ta plage date (ou si tu l'affectes à une variable), la ligne à chercher ne réclame pas de calcul...

Supposons : ListeDate nomme la plage dates, la ligne dans cette plage sera :

LigDate = ComboBox1.ListIndex + 1

Il faut ramener cette ligne à celle du lundi qui précède si c'est un autre jour :

LigDate = LigDate - ((Weekday([ListeDate].Cells(LigDate, 1)) + 5) Mod 7)

Ayant la ligne du lundi, tu récupères ton numéro en cellule fusionnée :

TextBox1.Value = [ListeDate].Cells(LigDate, 2)

Pour la semaine de début de plage, incomplète s'il s'agit de la fin de la dernière semaine année précédente (au cas particulier pour 2017, elle ne comporte que le 01/01 (= dimanche) [ton tableau à rectifier pour l'exclure de la cellule fusionnée, et mettre 52 en regard du 01/01...] ; si tu choisis le 01/01, LigDate donnerait -5...) un test intermédiaire est à faire :

If LigDate < 1 Then LigDate = 1

Voilà !

Mais il n'en reste pas moins que s'il s'agit de déterminer le numéro de semaine d'une date, il reste plus simple de le calculer !

Cordialement.

Bonjour à tous,

Il reste très compliqué pour moi tout ce cheminement.

Je veux rester au plus simple. C'est ce que Steelson m'a proposé dan son fichier.

J'ai pu l'adapter facilement au projet sans pour autant taper les cellules fusionnées.

Par contre toujours dan le même objectif au lieu d'avoir la date et qui me donne le n° de semaine, mainteant je souhaiterai pouvoir réfléchir sur le fait d'entrer le n° de semaine et qu'il puisse me donner la tranche des jours c'est à dire

exp : aujourd'hui je suis dans la semaine n° 13. Cette semaine va du Lundi 27 Mars au Dimanche 2 Avril

Donc en entrant 13 dans une cellule cela me donnerai :

Lundi 27 Mars au Dimanche 2 Avril

Je pense avec vos compétences je suis sure de pouvoir compter sur vos talents.

Merci d'avance

Amicalement

Noel

Voici

7semaine.zip (6.98 Ko)

Bonjour Steelson,

Aussi tôt dit aussi tôt fait.

Merci

Rechercher des sujets similaires à "chercher erreur"