j'ai une feuille du classeur qui contient un calendrier (c'est pour un
planning).
j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed,
etc...) : ce sont des dates transformées avec le format de la cellule (ddd).
Hélas en anglais.
je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de
(lun, mar, mer, jeu).
Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire
sachant que la date de la cellule doit rester entière car la macro pour
faire le planning se réfère a cette cellule.
c'est parce que a mon avis dans la macro, le calcul devient :
calc = (Di - #11/24/2002#) / 35
Chose que je n'avais pas en cliquait bouton droit de la sourie sur cette cellule et je sélectionnait "format de la cellule" et dans personnalisée, je mettais "jjj" ce qui me permettais d'afficher le jour de la semaine tout en gardant a l'intérieur la date qui me sert dans la macro pour faire un calcul.
"AV" a écrit dans le message de news: u2$$
Pas de XL en anglais alors pour tester ....
AV
c'est parce que a mon avis dans la macro, le calcul devient :
calc = (Di - #11/24/2002#) / 35
Chose que je n'avais pas en cliquait bouton droit de la sourie sur cette
cellule et je sélectionnait "format de la cellule" et dans personnalisée, je
mettais "jjj" ce qui me permettais d'afficher le jour de la semaine tout en
gardant a l'intérieur la date qui me sert dans la macro pour faire un
calcul.
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
u2$$xYvuDHA.2448@TK2MSFTNGP12.phx.gbl...
c'est parce que a mon avis dans la macro, le calcul devient :
calc = (Di - #11/24/2002#) / 35
Chose que je n'avais pas en cliquait bouton droit de la sourie sur cette cellule et je sélectionnait "format de la cellule" et dans personnalisée, je mettais "jjj" ce qui me permettais d'afficher le jour de la semaine tout en gardant a l'intérieur la date qui me sert dans la macro pour faire un calcul.
"AV" a écrit dans le message de news: u2$$
Pas de XL en anglais alors pour tester ....
AV
Michel Gaboly
Bonjour,
Je te propose 2 options :
1 - Formules Cela peut poser des problèmes à ta macro si elle se refère à des références absolues ;-((
Il s'agit simplement d'utiliser une ligne supplémentaire à insérer sous la ligne comportant les dates.
Avant cela, il faut definir un nom, "MatDates" par exemple associé à une matrice :
Fait référence à : ={"Lu";"Ma";"Me";"Je";"Ve";"Sa";"Di"}
Ensuite, tu entres cette formule en-dessous de chaque date dans la nouvelle ligne :
=INDEX(MatDates;JOURSEM(B1;2))
(Avec une version en anglais, il faut remplacer JOURSEM() par WEEKDAY(). Pas de modif pour INDEX().
Le second argumlent de JOURSEM(), 2 fait démarrer la semaine le lundi (par défaut, c'est le dimanche).
Tu masques ensuite la ligne contenant les dates. Il faut éventuellement prévoir une cellule pour saisir la première date, dont découlent les autres.
2 - VBA Après avoir nommé ("Dates" par exemple), la plage à formater, on modifie le format des dates en utilisant l'événement Calculate :
Private Sub Worksheet_Calculate() Dim c As Range For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di"), WeekDay(c, 2)) & """" Next c End Sub
ou
Private Sub Worksheet_Calculate() Dim c As Range, Mat Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) & """" Next c End Sub
PS - Le traitement n'est pas très rapide, tu peux ajouter
Application.ScreenUpdating = False
au début.
NB - Un point important (BUG ?) : pendant les tests, WeekDay me renvoyait une valeur erronnée (2 pour le lundi, 3 pour le mardi, ...) Cela se passait sur Mac, avec Excel 98.
J'ai transféré le classeur sur un PC avec Excel 2000, même anomalie. J'ai fini par comprendre que le problème vient de l'option de classeur "Calendrier depuis 1904", qui est l'option par défaut sur Mac.
Weekday renvoie un résultat correct avec l'option 1900, erronné avec l'option 1904. Il faut retrancher 1 dans ce dernier cas.
En VBA, False = 0 et True = -1
On peut donc modifier la procédure ainsi :
Private Sub Worksheet_Calculate() Dim c As Range, Mat, Delta As Integer Application.ScreenUpdating = False Delta = ThisWorkbook.Date1904 Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2) + Delta) & """" Debug.Print Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) Next c End Sub
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un planning). j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed, etc...) : ce sont des dates transformées avec le format de la cellule (ddd). Hélas en anglais. je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de (lun, mar, mer, jeu). Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire sachant que la date de la cellule doit rester entière car la macro pour faire le planning se réfère a cette cellule.
Merci par avance de votre aide.
-- Cordialement,
Michel Gaboly http://www.gaboly.com
Bonjour,
Je te propose 2 options :
1 - Formules
Cela peut poser des problèmes à ta macro si elle se refère à des
références absolues ;-((
Il s'agit simplement d'utiliser une ligne supplémentaire à insérer
sous la ligne comportant les dates.
Avant cela, il faut definir un nom, "MatDates" par exemple associé à
une matrice :
Fait référence à : ={"Lu";"Ma";"Me";"Je";"Ve";"Sa";"Di"}
Ensuite, tu entres cette formule en-dessous de chaque date dans la
nouvelle ligne :
=INDEX(MatDates;JOURSEM(B1;2))
(Avec une version en anglais, il faut remplacer JOURSEM() par
WEEKDAY(). Pas de modif pour INDEX().
Le second argumlent de JOURSEM(), 2 fait démarrer la semaine le
lundi (par défaut, c'est le dimanche).
Tu masques ensuite la ligne contenant les dates. Il faut éventuellement
prévoir une cellule pour saisir la première date, dont découlent les
autres.
2 - VBA
Après avoir nommé ("Dates" par exemple), la plage à formater, on
modifie le format des dates en utilisant l'événement Calculate :
Private Sub Worksheet_Calculate()
Dim c As Range
For Each c In Range("Dates")
c.NumberFormat = """" & Application.WorksheetFunction.Index(Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di"), WeekDay(c, 2))
& """"
Next c
End Sub
ou
Private Sub Worksheet_Calculate()
Dim c As Range, Mat
Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di")
For Each c In Range("Dates")
c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) & """"
Next c
End Sub
PS - Le traitement n'est pas très rapide, tu peux ajouter
Application.ScreenUpdating = False
au début.
NB - Un point important (BUG ?) : pendant les tests, WeekDay me
renvoyait une valeur erronnée (2 pour le lundi, 3 pour le mardi, ...)
Cela se passait sur Mac, avec Excel 98.
J'ai transféré le classeur sur un PC avec Excel 2000, même anomalie.
J'ai fini par comprendre que le problème vient de l'option de classeur
"Calendrier depuis 1904", qui est l'option par défaut sur Mac.
Weekday renvoie un résultat correct avec l'option 1900, erronné avec
l'option 1904. Il faut retrancher 1 dans ce dernier cas.
En VBA, False = 0 et True = -1
On peut donc modifier la procédure ainsi :
Private Sub Worksheet_Calculate()
Dim c As Range, Mat, Delta As Integer
Application.ScreenUpdating = False
Delta = ThisWorkbook.Date1904
Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di")
For Each c In Range("Dates")
c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2) + Delta) & """"
Debug.Print Application.WorksheetFunction.Index(Mat, WeekDay(c, 2))
Next c
End Sub
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un
planning).
j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed,
etc...) : ce sont des dates transformées avec le format de la cellule (ddd).
Hélas en anglais.
je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de
(lun, mar, mer, jeu).
Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire
sachant que la date de la cellule doit rester entière car la macro pour
faire le planning se réfère a cette cellule.
1 - Formules Cela peut poser des problèmes à ta macro si elle se refère à des références absolues ;-((
Il s'agit simplement d'utiliser une ligne supplémentaire à insérer sous la ligne comportant les dates.
Avant cela, il faut definir un nom, "MatDates" par exemple associé à une matrice :
Fait référence à : ={"Lu";"Ma";"Me";"Je";"Ve";"Sa";"Di"}
Ensuite, tu entres cette formule en-dessous de chaque date dans la nouvelle ligne :
=INDEX(MatDates;JOURSEM(B1;2))
(Avec une version en anglais, il faut remplacer JOURSEM() par WEEKDAY(). Pas de modif pour INDEX().
Le second argumlent de JOURSEM(), 2 fait démarrer la semaine le lundi (par défaut, c'est le dimanche).
Tu masques ensuite la ligne contenant les dates. Il faut éventuellement prévoir une cellule pour saisir la première date, dont découlent les autres.
2 - VBA Après avoir nommé ("Dates" par exemple), la plage à formater, on modifie le format des dates en utilisant l'événement Calculate :
Private Sub Worksheet_Calculate() Dim c As Range For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di"), WeekDay(c, 2)) & """" Next c End Sub
ou
Private Sub Worksheet_Calculate() Dim c As Range, Mat Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) & """" Next c End Sub
PS - Le traitement n'est pas très rapide, tu peux ajouter
Application.ScreenUpdating = False
au début.
NB - Un point important (BUG ?) : pendant les tests, WeekDay me renvoyait une valeur erronnée (2 pour le lundi, 3 pour le mardi, ...) Cela se passait sur Mac, avec Excel 98.
J'ai transféré le classeur sur un PC avec Excel 2000, même anomalie. J'ai fini par comprendre que le problème vient de l'option de classeur "Calendrier depuis 1904", qui est l'option par défaut sur Mac.
Weekday renvoie un résultat correct avec l'option 1900, erronné avec l'option 1904. Il faut retrancher 1 dans ce dernier cas.
En VBA, False = 0 et True = -1
On peut donc modifier la procédure ainsi :
Private Sub Worksheet_Calculate() Dim c As Range, Mat, Delta As Integer Application.ScreenUpdating = False Delta = ThisWorkbook.Date1904 Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2) + Delta) & """" Debug.Print Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) Next c End Sub
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un planning). j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed, etc...) : ce sont des dates transformées avec le format de la cellule (ddd). Hélas en anglais. je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de (lun, mar, mer, jeu). Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire sachant que la date de la cellule doit rester entière car la macro pour faire le planning se réfère a cette cellule.
Merci par avance de votre aide.
-- Cordialement,
Michel Gaboly http://www.gaboly.com
Bureau
A tout hasard et faire l'essai sur une copie ! je n'ai pas testé n'ayant pas de capacité à mettre les dates au format anglais : créer une ligne nouvelle dessous la ligne des dates en jours anglais : chaque nouvelle cellule sera donnée pour égale (= ) à la cellule qui est au-dessus. Si ton EXCEL est francais il devrait bien réagir, non ? Ce n'est apparement que ton application qui est anglaise (et j'espère non protégée) Par ailelurs et bien sûr toutes les formules en dessous se seront décalées auto d'une ligne sans perdre leurs références. Si cela marche, alors mettre à zéro la ligne initiale pour la masquer. L'une aura en apparence remplacé l'autre. ? M'excuser si je t'ai fait perdre 5 minutes
"xcheater2" a écrit dans le message de news:
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un planning). j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed, etc...) : ce sont des dates transformées avec le format de la cellule (ddd).
Hélas en anglais. je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de (lun, mar, mer, jeu). Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire sachant que la date de la cellule doit rester entière car la macro pour faire le planning se réfère a cette cellule.
Merci par avance de votre aide.
A tout hasard et faire l'essai sur une copie ! je n'ai pas testé n'ayant pas
de capacité à mettre les dates au format anglais :
créer une ligne nouvelle dessous la ligne des dates en jours anglais :
chaque nouvelle cellule sera donnée pour égale (= ) à la cellule qui est
au-dessus. Si ton EXCEL est francais il devrait bien réagir, non ? Ce n'est
apparement que ton application qui est anglaise (et j'espère non protégée)
Par ailelurs et bien sûr toutes les formules en dessous se seront décalées
auto d'une ligne sans perdre leurs références.
Si cela marche, alors mettre à zéro la ligne initiale pour la masquer. L'une
aura en apparence remplacé l'autre.
?
M'excuser si je t'ai fait perdre 5 minutes
"xcheater2" <xcheater2@aol.com> a écrit dans le message de news:
OVH7nHuuDHA.2456@TK2MSFTNGP12.phx.gbl...
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un
planning).
j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed,
etc...) : ce sont des dates transformées avec le format de la cellule
(ddd).
Hélas en anglais.
je voudrais savoir si je peu utiliser la liste personnalisée pour mettre
les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de
(lun, mar, mer, jeu).
Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire
sachant que la date de la cellule doit rester entière car la macro pour
faire le planning se réfère a cette cellule.
A tout hasard et faire l'essai sur une copie ! je n'ai pas testé n'ayant pas de capacité à mettre les dates au format anglais : créer une ligne nouvelle dessous la ligne des dates en jours anglais : chaque nouvelle cellule sera donnée pour égale (= ) à la cellule qui est au-dessus. Si ton EXCEL est francais il devrait bien réagir, non ? Ce n'est apparement que ton application qui est anglaise (et j'espère non protégée) Par ailelurs et bien sûr toutes les formules en dessous se seront décalées auto d'une ligne sans perdre leurs références. Si cela marche, alors mettre à zéro la ligne initiale pour la masquer. L'une aura en apparence remplacé l'autre. ? M'excuser si je t'ai fait perdre 5 minutes
"xcheater2" a écrit dans le message de news:
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un planning). j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed, etc...) : ce sont des dates transformées avec le format de la cellule (ddd).
Hélas en anglais. je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de (lun, mar, mer, jeu). Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire sachant que la date de la cellule doit rester entière car la macro pour faire le planning se réfère a cette cellule.
Merci par avance de votre aide.
Clément Marcotte
Hum.... m'est avis qu'il faut aller au dodo ;-)))
Je n'aurais jamais osé imaginer que cela t'arrivait ;-)
Hum.... m'est avis qu'il faut aller au dodo ;-)))
Je n'aurais jamais osé imaginer que cela t'arrivait ;-)
c'est quoi ça :-))) j'ai loupé une invitation !!! ) isabelle
Hum.... m'est avis qu'il faut aller au dodo ;-)))
Je n'aurais jamais osé imaginer que cela t'arrivait ;-)
xcheater2
Bonjour bureau, en faite je suis en train de creer le planning sur un pc qui lui est en francais pour un pc qui lui tout est en anglais. Quand j'importe de fichier fait sur le pc francais, toutes les commandes sont transformées automatiquement en anglais. C'est pour cela que je voulais transformer les dates en d'anglais a francais mais en diminuant encore le libéllé, et comme sur le pc anglais, je ne suis pas administrateur (version nt 4.0), je ne puis rien rajouter.
Mais j'ai retenu l'option de Isabelle qui me semble la plus approprié
pour ce qui est de me faire perdre 5 mns, je ne pense pas, c'est comme ca que l'on apprend aussi
Merci encore de ton aide.
"Bureau" a écrit dans le message de news: #
A tout hasard et faire l'essai sur une copie ! je n'ai pas testé n'ayant pas
de capacité à mettre les dates au format anglais : créer une ligne nouvelle dessous la ligne des dates en jours anglais : chaque nouvelle cellule sera donnée pour égale (= ) à la cellule qui est au-dessus. Si ton EXCEL est francais il devrait bien réagir, non ? Ce n'est
apparement que ton application qui est anglaise (et j'espère non protégée) Par ailelurs et bien sûr toutes les formules en dessous se seront décalées auto d'une ligne sans perdre leurs références. Si cela marche, alors mettre à zéro la ligne initiale pour la masquer. L'une
aura en apparence remplacé l'autre. ? M'excuser si je t'ai fait perdre 5 minutes
"xcheater2" a écrit dans le message de news:
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un planning). j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed, etc...) : ce sont des dates transformées avec le format de la cellule (ddd).
Hélas en anglais. je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de (lun, mar, mer, jeu). Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire sachant que la date de la cellule doit rester entière car la macro pour faire le planning se réfère a cette cellule.
Merci par avance de votre aide.
Bonjour bureau,
en faite je suis en train de creer le planning sur un pc qui lui est en
francais pour un pc qui lui tout est en anglais. Quand j'importe de fichier
fait sur le pc francais, toutes les commandes sont transformées
automatiquement en anglais. C'est pour cela que je voulais transformer les
dates en d'anglais a francais mais en diminuant encore le libéllé, et comme
sur le pc anglais, je ne suis pas administrateur (version nt 4.0), je ne
puis rien rajouter.
Mais j'ai retenu l'option de Isabelle qui me semble la plus approprié
pour ce qui est de me faire perdre 5 mns, je ne pense pas, c'est comme ca
que l'on apprend aussi
Merci encore de ton aide.
"Bureau" <guillemot.archi@wanadoo.fr> a écrit dans le message de news:
#Y0EkP0uDHA.1756@TK2MSFTNGP09.phx.gbl...
A tout hasard et faire l'essai sur une copie ! je n'ai pas testé n'ayant
pas
de capacité à mettre les dates au format anglais :
créer une ligne nouvelle dessous la ligne des dates en jours anglais :
chaque nouvelle cellule sera donnée pour égale (= ) à la cellule qui est
au-dessus. Si ton EXCEL est francais il devrait bien réagir, non ? Ce
n'est
apparement que ton application qui est anglaise (et j'espère non protégée)
Par ailelurs et bien sûr toutes les formules en dessous se seront décalées
auto d'une ligne sans perdre leurs références.
Si cela marche, alors mettre à zéro la ligne initiale pour la masquer.
L'une
aura en apparence remplacé l'autre.
?
M'excuser si je t'ai fait perdre 5 minutes
"xcheater2" <xcheater2@aol.com> a écrit dans le message de news:
OVH7nHuuDHA.2456@TK2MSFTNGP12.phx.gbl...
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un
planning).
j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed,
etc...) : ce sont des dates transformées avec le format de la cellule
(ddd).
Hélas en anglais.
je voudrais savoir si je peu utiliser la liste personnalisée pour mettre
les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de
(lun, mar, mer, jeu).
Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire
sachant que la date de la cellule doit rester entière car la macro pour
faire le planning se réfère a cette cellule.
Bonjour bureau, en faite je suis en train de creer le planning sur un pc qui lui est en francais pour un pc qui lui tout est en anglais. Quand j'importe de fichier fait sur le pc francais, toutes les commandes sont transformées automatiquement en anglais. C'est pour cela que je voulais transformer les dates en d'anglais a francais mais en diminuant encore le libéllé, et comme sur le pc anglais, je ne suis pas administrateur (version nt 4.0), je ne puis rien rajouter.
Mais j'ai retenu l'option de Isabelle qui me semble la plus approprié
pour ce qui est de me faire perdre 5 mns, je ne pense pas, c'est comme ca que l'on apprend aussi
Merci encore de ton aide.
"Bureau" a écrit dans le message de news: #
A tout hasard et faire l'essai sur une copie ! je n'ai pas testé n'ayant pas
de capacité à mettre les dates au format anglais : créer une ligne nouvelle dessous la ligne des dates en jours anglais : chaque nouvelle cellule sera donnée pour égale (= ) à la cellule qui est au-dessus. Si ton EXCEL est francais il devrait bien réagir, non ? Ce n'est
apparement que ton application qui est anglaise (et j'espère non protégée) Par ailelurs et bien sûr toutes les formules en dessous se seront décalées auto d'une ligne sans perdre leurs références. Si cela marche, alors mettre à zéro la ligne initiale pour la masquer. L'une
aura en apparence remplacé l'autre. ? M'excuser si je t'ai fait perdre 5 minutes
"xcheater2" a écrit dans le message de news:
bonjour tout le monde,
j'ai une feuille du classeur qui contient un calendrier (c'est pour un planning). j'ai des lignes qui contiennent les jours de la semaine (Mon, Tue, Wed, etc...) : ce sont des dates transformées avec le format de la cellule (ddd).
Hélas en anglais. je voudrais savoir si je peu utiliser la liste personnalisée pour mettre les
dates en français mais sous la forme (Lu, Ma, Me, Je, etc...) au lieu de (lun, mar, mer, jeu). Je ne peu installer sur le micro d'autres langues que l'anglais.
Si ce n'est pas possible, y a t il un autre moyen de pouvoir le faire sachant que la date de la cellule doit rester entière car la macro pour faire le planning se réfère a cette cellule.
Merci par avance de votre aide.
xcheater2
Bonjour Michel Gaboly,
Merci de m'avoir répondu, je vais regarder attentivement ces renseignements, mais pour l'instant j'ai pris la méthode a Isabelle et modifier le script vb car mon script met déjà 12s à se réaliser. Mais j'ai conservé ta méthode pour comprendre le fonctionnement.
Merci encore
"Michel Gaboly" a écrit dans le message de news:
Bonjour,
Je te propose 2 options :
1 - Formules Cela peut poser des problèmes à ta macro si elle se refère à des références absolues ;-((
Il s'agit simplement d'utiliser une ligne supplémentaire à insérer sous la ligne comportant les dates.
Avant cela, il faut definir un nom, "MatDates" par exemple associé à une matrice :
Fait référence à : ={"Lu";"Ma";"Me";"Je";"Ve";"Sa";"Di"}
Ensuite, tu entres cette formule en-dessous de chaque date dans la nouvelle ligne :
=INDEX(MatDates;JOURSEM(B1;2))
(Avec une version en anglais, il faut remplacer JOURSEM() par WEEKDAY(). Pas de modif pour INDEX().
Le second argumlent de JOURSEM(), 2 fait démarrer la semaine le lundi (par défaut, c'est le dimanche).
Tu masques ensuite la ligne contenant les dates. Il faut éventuellement prévoir une cellule pour saisir la première date, dont découlent les autres.
2 - VBA Après avoir nommé ("Dates" par exemple), la plage à formater, on modifie le format des dates en utilisant l'événement Calculate :
Private Sub Worksheet_Calculate() Dim c As Range For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Array("Lu", "Ma", "Me", "Je", "Ve",
"Sa", "Di"), WeekDay(c, 2))
& """" Next c End Sub
ou
Private Sub Worksheet_Calculate() Dim c As Range, Mat Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) & """"
Next c End Sub
PS - Le traitement n'est pas très rapide, tu peux ajouter
Application.ScreenUpdating = False
au début.
NB - Un point important (BUG ?) : pendant les tests, WeekDay me renvoyait une valeur erronnée (2 pour le lundi, 3 pour le mardi, ...) Cela se passait sur Mac, avec Excel 98.
J'ai transféré le classeur sur un PC avec Excel 2000, même anomalie. J'ai fini par comprendre que le problème vient de l'option de classeur "Calendrier depuis 1904", qui est l'option par défaut sur Mac.
Weekday renvoie un résultat correct avec l'option 1900, erronné avec l'option 1904. Il faut retrancher 1 dans ce dernier cas.
En VBA, False = 0 et True = -1
On peut donc modifier la procédure ainsi :
Private Sub Worksheet_Calculate() Dim c As Range, Mat, Delta As Integer Application.ScreenUpdating = False Delta = ThisWorkbook.Date1904 Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2) + Delta) & """"
Merci de m'avoir répondu, je vais regarder attentivement ces renseignements,
mais pour l'instant j'ai pris la méthode a Isabelle et modifier le script vb
car mon script met déjà 12s à se réaliser. Mais j'ai conservé ta méthode
pour comprendre le fonctionnement.
Merci encore
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de news:
3FD06879.72AD6EA6@Suppgaboly.com...
Bonjour,
Je te propose 2 options :
1 - Formules
Cela peut poser des problèmes à ta macro si elle se refère à des
références absolues ;-((
Il s'agit simplement d'utiliser une ligne supplémentaire à insérer
sous la ligne comportant les dates.
Avant cela, il faut definir un nom, "MatDates" par exemple associé à
une matrice :
Fait référence à : ={"Lu";"Ma";"Me";"Je";"Ve";"Sa";"Di"}
Ensuite, tu entres cette formule en-dessous de chaque date dans la
nouvelle ligne :
=INDEX(MatDates;JOURSEM(B1;2))
(Avec une version en anglais, il faut remplacer JOURSEM() par
WEEKDAY(). Pas de modif pour INDEX().
Le second argumlent de JOURSEM(), 2 fait démarrer la semaine le
lundi (par défaut, c'est le dimanche).
Tu masques ensuite la ligne contenant les dates. Il faut éventuellement
prévoir une cellule pour saisir la première date, dont découlent les
autres.
2 - VBA
Après avoir nommé ("Dates" par exemple), la plage à formater, on
modifie le format des dates en utilisant l'événement Calculate :
Private Sub Worksheet_Calculate()
Dim c As Range
For Each c In Range("Dates")
c.NumberFormat = """" &
Application.WorksheetFunction.Index(Array("Lu", "Ma", "Me", "Je", "Ve",
"Sa", "Di"), WeekDay(c, 2))
& """"
Next c
End Sub
ou
Private Sub Worksheet_Calculate()
Dim c As Range, Mat
Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di")
For Each c In Range("Dates")
c.NumberFormat = """" &
Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) & """"
Next c
End Sub
PS - Le traitement n'est pas très rapide, tu peux ajouter
Application.ScreenUpdating = False
au début.
NB - Un point important (BUG ?) : pendant les tests, WeekDay me
renvoyait une valeur erronnée (2 pour le lundi, 3 pour le mardi, ...)
Cela se passait sur Mac, avec Excel 98.
J'ai transféré le classeur sur un PC avec Excel 2000, même anomalie.
J'ai fini par comprendre que le problème vient de l'option de classeur
"Calendrier depuis 1904", qui est l'option par défaut sur Mac.
Weekday renvoie un résultat correct avec l'option 1900, erronné avec
l'option 1904. Il faut retrancher 1 dans ce dernier cas.
En VBA, False = 0 et True = -1
On peut donc modifier la procédure ainsi :
Private Sub Worksheet_Calculate()
Dim c As Range, Mat, Delta As Integer
Application.ScreenUpdating = False
Delta = ThisWorkbook.Date1904
Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di")
For Each c In Range("Dates")
c.NumberFormat = """" &
Application.WorksheetFunction.Index(Mat, WeekDay(c, 2) + Delta) & """"
Merci de m'avoir répondu, je vais regarder attentivement ces renseignements, mais pour l'instant j'ai pris la méthode a Isabelle et modifier le script vb car mon script met déjà 12s à se réaliser. Mais j'ai conservé ta méthode pour comprendre le fonctionnement.
Merci encore
"Michel Gaboly" a écrit dans le message de news:
Bonjour,
Je te propose 2 options :
1 - Formules Cela peut poser des problèmes à ta macro si elle se refère à des références absolues ;-((
Il s'agit simplement d'utiliser une ligne supplémentaire à insérer sous la ligne comportant les dates.
Avant cela, il faut definir un nom, "MatDates" par exemple associé à une matrice :
Fait référence à : ={"Lu";"Ma";"Me";"Je";"Ve";"Sa";"Di"}
Ensuite, tu entres cette formule en-dessous de chaque date dans la nouvelle ligne :
=INDEX(MatDates;JOURSEM(B1;2))
(Avec une version en anglais, il faut remplacer JOURSEM() par WEEKDAY(). Pas de modif pour INDEX().
Le second argumlent de JOURSEM(), 2 fait démarrer la semaine le lundi (par défaut, c'est le dimanche).
Tu masques ensuite la ligne contenant les dates. Il faut éventuellement prévoir une cellule pour saisir la première date, dont découlent les autres.
2 - VBA Après avoir nommé ("Dates" par exemple), la plage à formater, on modifie le format des dates en utilisant l'événement Calculate :
Private Sub Worksheet_Calculate() Dim c As Range For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Array("Lu", "Ma", "Me", "Je", "Ve",
"Sa", "Di"), WeekDay(c, 2))
& """" Next c End Sub
ou
Private Sub Worksheet_Calculate() Dim c As Range, Mat Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2)) & """"
Next c End Sub
PS - Le traitement n'est pas très rapide, tu peux ajouter
Application.ScreenUpdating = False
au début.
NB - Un point important (BUG ?) : pendant les tests, WeekDay me renvoyait une valeur erronnée (2 pour le lundi, 3 pour le mardi, ...) Cela se passait sur Mac, avec Excel 98.
J'ai transféré le classeur sur un PC avec Excel 2000, même anomalie. J'ai fini par comprendre que le problème vient de l'option de classeur "Calendrier depuis 1904", qui est l'option par défaut sur Mac.
Weekday renvoie un résultat correct avec l'option 1900, erronné avec l'option 1904. Il faut retrancher 1 dans ce dernier cas.
En VBA, False = 0 et True = -1
On peut donc modifier la procédure ainsi :
Private Sub Worksheet_Calculate() Dim c As Range, Mat, Delta As Integer Application.ScreenUpdating = False Delta = ThisWorkbook.Date1904 Mat = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di") For Each c In Range("Dates") c.NumberFormat = """" & Application.WorksheetFunction.Index(Mat, WeekDay(c, 2) + Delta) & """"
Je tiens à tous vous remercier de l'aide que vous m'avez apporté. J'ai pris notes de toutes vos suggestions mais j'ai gardé la solutions de Isabelle qui me parait pour moi la plus simple (c'est la premiere fois que j'utilise excel)
Merci encore de votre aide
Bonjour a tous,
Je tiens à tous vous remercier de l'aide que vous m'avez apporté. J'ai pris
notes de toutes vos suggestions mais j'ai gardé la solutions de Isabelle qui
me parait pour moi la plus simple (c'est la premiere fois que j'utilise
excel)
Je tiens à tous vous remercier de l'aide que vous m'avez apporté. J'ai pris notes de toutes vos suggestions mais j'ai gardé la solutions de Isabelle qui me parait pour moi la plus simple (c'est la premiere fois que j'utilise excel)