Trouver le no de semaine

Le
Fuentes Mickael
Bonjour à tous,
je viens soliciter votre aide pour un probleme tout simple,
j'ai 3 colonnes, A pour je jour, B pour le mois et C pour l'année.
Je voudrais connaitre le no de semaine correspondant par ligne.
Es ce qu'il faut que je CONCATENE pour obtenir quelque chose sous la forme
jj/mm/aaaa ?

Merci par avance.
Micky
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JP25
Le #4750191
Bonjour,
fonction no.semaine (de la cellule contenant l'année)
si cette fonction n'est pas reconnue, tu click Outils/Macros complémentaires
et tu selectionnes
Solveur
Utilitaire d'analyse
Utilitaire d'analyse VBA

--
Cordialement
JP25


"Fuentes Mickael"
Bonjour à tous,
je viens soliciter votre aide pour un probleme tout simple,
j'ai 3 colonnes, A pour je jour, B pour le mois et C pour l'année.
Je voudrais connaitre le no de semaine correspondant par ligne.
Es ce qu'il faut que je CONCATENE pour obtenir quelque chose sous la forme
jj/mm/aaaa ?

Merci par avance.
Micky




Corto
Le #4750081
Bonjour Fuentes Mickael,
Attention la fonction no.semaine renvoie le numéro de semaine selon la
norme US, pour obtenir le numéro de semaine ISO (utilisé en Europe) :
=ENT(MOD(ENT((DATE-2)/7)+0.6;52+5/28 ))+1 ou alors par VBA
Function NumSemISO(XDATE As Date) As Integer
NumSemISO = ((Int(XDATE) - DateSerial(Year(Int(XDATE) + (8 -
Weekday(Int(XDATE))) _
Mod 7 - 3), 1, 1) - 3 + (Weekday(DateSerial(Year(Int(XDATE) + _
(8 - Weekday(Int(XDATE))) Mod 7 - 3), 1, 1)) + 1) Mod 7)) 7 + 1
End Function

Corto

Bonjour à tous,
je viens soliciter votre aide pour un probleme tout simple,
j'ai 3 colonnes, A pour je jour, B pour le mois et C pour l'année.
Je voudrais connaitre le no de semaine correspondant par ligne.
Es ce qu'il faut que je CONCATENE pour obtenir quelque chose sous la fo rme
jj/mm/aaaa ?

Merci par avance.
Micky





JP25
Le #4750031
Bonjour Corto,
D'accord avec toi, mais la seule diffèrence concerne les 2 derniers jours de
l'année (30-31/12) qui te renvoie S53
Es tu d'accord ?
--
Cordialement
JP25


"Corto"
Bonjour Fuentes Mickael,
Attention la fonction no.semaine renvoie le numéro de semaine selon la
norme US, pour obtenir le numéro de semaine ISO (utilisé en Europe) :
=ENT(MOD(ENT((DATE-2)/7)+0.6;52+5/28 ))+1 ou alors par VBA
Function NumSemISO(XDATE As Date) As Integer
NumSemISO = ((Int(XDATE) - DateSerial(Year(Int(XDATE) + (8 -
Weekday(Int(XDATE))) _
Mod 7 - 3), 1, 1) - 3 + (Weekday(DateSerial(Year(Int(XDATE) + _
(8 - Weekday(Int(XDATE))) Mod 7 - 3), 1, 1)) + 1) Mod 7)) 7 + 1
End Function

Corto

Bonjour à tous,
je viens soliciter votre aide pour un probleme tout simple,
j'ai 3 colonnes, A pour je jour, B pour le mois et C pour l'année.
Je voudrais connaitre le no de semaine correspondant par ligne.
Es ce qu'il faut que je CONCATENE pour obtenir quelque chose sous la forme
jj/mm/aaaa ?

Merci par avance.
Micky





Fuentes Mickael
Le #4750021
Si ça peut aider quelqu'un d'autre, j'ai utiliser la fonction concatener
pour avoir une date format jj/mm/aaaa
et j'ai utilisé la formule : (S2) etant la celule ou se trouve la date
format jj/mm/aaaa)


ENT((S2-DATE(ANNEE(S2);2;1)+SI(JOURSEM(DATE(ANNEE(S2);2;1))>1;JOURSEM(DATE(A

NNEE(S2);2;1))-2;JOURSEM(DATE(ANNEE(S2);1;1))+5))/7)+5


J'ais essayer ta methode JP25, elle est boucoup plus rapide.
et merci encore à vous de votre aide.

Micky


Misange
Le #4749981
Bonjour JP

Non pas du tout :-)
Pour rappel, NO.SEMAINE (formule excel qui requiert que l'utilitaire
d'analyse soit chargé) renvoie le numéro de semaine selon la norme
américaine : la semaine 1 est celle qui inclut le 1er janvier. Si vous
êtes à l'ouest de la grande bleue, cette fonction est donc pour vous.
Alors que pour la norme européenne, la semaine 1 est la première semaine
qui comporte au moins 4 jours dans l'année : il faut que le 1er janvier
soit au plus tard un jeudi pour qu'il soit en semaine 1.
http://www.excelabo.net/excel/semaines.php#numerosemaine
Le décalage ne se fait donc pas sur les deux derniers jours de l'année
mais suivant les années il ne se fait pas ou se fait sur toutes les
semaines de l'année ...

Par ailleurs, je vois mal comment en entrant 2007 dans une cellule, on
peut calculer le N° de semaine, quelle que soit la norme(!).
Pas plus en concaténant le mois et l'année. Donc oui, il faut
effectivement reconstruire une date valide à partir des 3 colonnes et à
partir de là, suivant le côté de l'atlantique où l'on est calculer le N°
de semaine.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour Corto,
D'accord avec toi, mais la seule diffèrence concerne les 2 derniers jours de
l'année (30-31/12) qui te renvoie S53
Es tu d'accord ?


FFO
Le #4749961
Bonjour à toi

Je te propose une solution macro

Soit dans Feuil1 colonne A = le jour colonne B = le mois colonne C = l'année
colonne D le numéro de la semaine

Pour une même année colonne C (07 dans cet exemple) le code :

Année = "07"
If Format(CDate("01/01/" & Année), "dddd") = "lundi" Then
Semaine = 0
Else
Semaine = 1
End If
For i = 0 To 365
If Format(CDate("01/01/" & Année) + i, "dddd") = "lundi" Then
Semaine = Semaine + 1
End If
Date = CDate("01/01/" & Année) + i
For Each c In Worksheets("Feuil1").Range([A1], [A65535].End(xlUp))
A = CDate(c & "/" & c.Offset(0, 1) & "/" & c.Offset(0, 2))
If CDate("01/01/" & Année) + i = CDate(c & "/" & c.Offset(0, 1) & "/" &
c.Offset(0, 2)) Then
c.Offset(0, 3) = Semaine
End If
Next
Next

Traitement rapide

Pour plusieurs années dans la colonne C ce code (10 ans dans cet exemple)

For j = 0 To 10
If Format(CDate("01/01/" & j), "dddd") = "lundi" Then
Semaine = 0
Else
Semaine = 1
End If
For i = 0 To 365
If Format(CDate("01/01/" & j) + i, "dddd") = "lundi" Then
Semaine = Semaine + 1
End If
Date = CDate("01/01/" & j) + i
For Each c In Worksheets("Feuil1").Range([A1], [A65535].End(xlUp))
A = CDate(c & "/" & c.Offset(0, 1) & "/" & c.Offset(0, 2))
If CDate("01/01/" & j) + i = CDate(c & "/" & c.Offset(0, 1) & "/" &
c.Offset(0, 2)) Then
c.Offset(0, 3) = Semaine
End If
Next
Next
Next

Traitement plus long

Celà devrait convenir



Bonjour à tous,
je viens soliciter votre aide pour un probleme tout simple,
j'ai 3 colonnes, A pour je jour, B pour le mois et C pour l'année.
Je voudrais connaitre le no de semaine correspondant par ligne.
Es ce qu'il faut que je CONCATENE pour obtenir quelque chose sous la forme
jj/mm/aaaa ?

Merci par avance.
Micky





JP25
Le #4749921
Bonjour Misange,
Ok et merci pour cette leçon, j'ai fait l'erreur de mettre par rapport à
l'année (bien sur), mais hormis le résultat US,
je trouve plus judicieux d'entrer une date, puis de cette date, sortir
annéee, mois, jour, semaine !
Tout dépend des besoins de l'utilisateur
C'est vrai que si les données sont existante on a pas le choix
--
Cordialement
JP25


"Misange"
Bonjour JP

Non pas du tout :-)
Pour rappel, NO.SEMAINE (formule excel qui requiert que l'utilitaire
d'analyse soit chargé) renvoie le numéro de semaine selon la norme
américaine : la semaine 1 est celle qui inclut le 1er janvier. Si vous
êtes à l'ouest de la grande bleue, cette fonction est donc pour vous.
Alors que pour la norme européenne, la semaine 1 est la première semaine
qui comporte au moins 4 jours dans l'année : il faut que le 1er janvier
soit au plus tard un jeudi pour qu'il soit en semaine 1.
http://www.excelabo.net/excel/semaines.php#numerosemaine
Le décalage ne se fait donc pas sur les deux derniers jours de l'année
mais suivant les années il ne se fait pas ou se fait sur toutes les
semaines de l'année ...

Par ailleurs, je vois mal comment en entrant 2007 dans une cellule, on
peut calculer le N° de semaine, quelle que soit la norme(!).
Pas plus en concaténant le mois et l'année. Donc oui, il faut
effectivement reconstruire une date valide à partir des 3 colonnes et à
partir de là, suivant le côté de l'atlantique où l'on est calculer le N°
de semaine.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour Corto,
D'accord avec toi, mais la seule diffèrence concerne les 2 derniers jours
de l'année (30-31/12) qui te renvoie S53
Es tu d'accord ?




Modeste
Le #4749861
Bonsour® Fuentes Mickael avec ferveur ;o))) vous nous disiez :

Bonjour à tous,
je viens soliciter votre aide pour un probleme tout simple,
j'ai 3 colonnes, A pour je jour, B pour le mois et C pour l'année.
Je voudrais connaitre le no de semaine correspondant par ligne.
Es ce qu'il faut que je CONCATENE pour obtenir quelque chose sous la
forme jj/mm/aaaa ?


en colonne D
D1=ENT(MOD(ENT((DATE(C1;B1;A1)-2)/7)+0,6;52+5/28))+1

@+
;o)))

Publicité
Poster une réponse
Anonyme