OVH Cloud OVH Cloud

abcisses en texte

3 réponses
Avatar
Le Nordiste
Bonjour tertous,


J'ai un tableau dont la colonne qui me sert =E0 "graduer" les abcisses
contient des dates sous la forme aa_Sss,
avec aa deux chiffres de droite de l'ann=E9e et ss num=E9ro de semaine.
eg : la semaine du 4 au 10 d=E9cembre 2006 est convertie
en 06_S49
(Je peux avoir aussi pour les mois
le m=EAme format.)

La s=E9rie n'est malheureusement pas continue : 06_S35, 06_S36, 06_S39,
06_S40 par exemple.

Comment faire pour faire apparaitre ces abcisses sous forme
"chronologique",
c'est =E0 dire avec un 'trou" dans les histogrammes pour les semaines
06_S37 et 06_S38 ?=20
=20
Remerciements anticip=E9s=20

Le Nordiste

3 réponses

Avatar
Daniel
Bonjour.
Regarde un exemple à l'adresse suivante :
http://cjoint.com/?lvoJt5EpJu
Cordialement.
Daniel
"Le Nordiste" a écrit dans le message de
news:
Bonjour tertous,


J'ai un tableau dont la colonne qui me sert à "graduer" les abcisses
contient des dates sous la forme aa_Sss,
avec aa deux chiffres de droite de l'année et ss numéro de semaine.
eg : la semaine du 4 au 10 décembre 2006 est convertie
en 06_S49
(Je peux avoir aussi pour les mois
le même format.)

La série n'est malheureusement pas continue : 06_S35, 06_S36, 06_S39,
06_S40 par exemple.

Comment faire pour faire apparaitre ces abcisses sous forme
"chronologique",
c'est à dire avec un 'trou" dans les histogrammes pour les semaines
06_S37 et 06_S38 ?

Remerciements anticipés

Le Nordiste
Avatar
Garette
Bonjour,

Une solution par macro :
En considérant que les données sont en A1:B8
date Data
06_S39 1
06_S35 2
06_S44 4
06_S36 5
06_S40 5
06_S45 6
06_S46 7


Il faut rajouter les dates manquantes et une cellule vide dans les Data. Ce
que fait la macro suivante :

Sub TEST()
Range("A1:B" & Sheets("Feuil1").Range("A65536").End(xlUp).Row).Sort _
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes

Set Macolonne = Range("A2:A" &
Sheets("Feuil1").Range("A65536").End(xlUp).Row)
For Each X In Macolonne
If Left(X, 2) & Right(X, 2) + 1 <> Left(X.Offset(1, 0), 2) &
Right(X.Offset(1, 0), 2) Then
Range("A65536").End(xlUp).Offset(1, 0).Value = Left(X, 2) & "_S" &
Right(X, 2) + 1
Range("A1:B" & Sheets("Feuil1").Range("A65536").End(xlUp).Row).Sort
_
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
End If
Next
End Sub
Avatar
Garette
Bonsoir,

La meme chose, debuggée et qui tient compte du changement d'année (en
utilisant l'excellente formule de
http://xcell05.free.fr/pages/form/dateheure.htm#Numsemaine)
Elle ne gere pas les annees avant 2000 ...


Sub AbcissesTexte()
Range("A1:B" & Sheets("Feuil1").Range("A65536").End(xlUp).Row).Sort _
Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
Sheets("Feuil1").Range("A65536").End(xlUp).Select
While ActiveCell.Row <> 2
If Format(Left(ActiveCell, 2), "00") & Format(Right(ActiveCell, 2) - 1,
"00") = _
Format(Left(ActiveCell.Offset(-1, 0), 2), "00") &
Format(Right(ActiveCell.Offset(-1, 0), 2), "00") Then
ActiveCell.Offset(-1, 0).Select
ElseIf Right(ActiveCell, 2) = 1 Then
ActiveCell.Resize(1, 2).Insert Shift:=xlDown
ActiveCell.Value = Format(Left(ActiveCell.Offset(1, 0), 2) - 1, "00") &
"_S" & _
NOSEM(DateValue("31/12/" & Left(ActiveCell.Offset(1, 0), 2) - 1))
Else
ActiveCell.Resize(1, 2).Insert Shift:=xlDown
ActiveCell.Value = Format(Left(ActiveCell.Offset(1, 0), 2), "00") & "_S"
& _
Format(Right(ActiveCell.Offset(1, 0), 2) - 1, "00")
End If
Wend
End Sub

Function NOSEM(D As Date) As Long
D = Int(D)
NOSEM = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NOSEM = ((D - NOSEM - 3 + (Weekday(NOSEM) + 1) Mod 7)) 7 + 1
End Function