Calc et dates

Bonjour,

Avec LibO 3.4.3 et XP, j'ai reçu un document XLS avec une colonne
qui contient des dates :

09/09/2011
10/09/2011
etc.

Je ne voudrais garder que le jour.

- J'ai remplacé : /09/2011 par rien pour ces cellules, et ça
m'affiche des dates de janvier 1900
- J'ai formaté les cellules en "nombre" au lieu de "date", mais ça
remplace les dates par : 40795, 40796 etc.
- idem en mettant "texte".

Comment faire ?

Bonsoir,

Avec LibO 3.4.3 et XP, j'ai reçu un document XLS avec une colonne
qui contient des dates :

09/09/2011
10/09/2011
etc.

Je ne voudrais garder que le jour.

  - J'ai remplacé : /09/2011 par rien pour ces cellules, et ça
m'affiche des dates de janvier 1900

Normal. Les cellules sont restées au format date, donc le numéro du jour devient le numéro de série, soit qq jours après la date de référence (31/12/1899 par défaut ; voir Outils / Options / LibreOffice Calc / Calculer, Date).

  - J'ai formaté les cellules en "nombre" au lieu de "date", mais ça
remplace les dates par : 40795, 40796 etc.

Normal. Une date est un nombre (appelé en vocabulaire tableur le "numéro de série"). C'est le nombre de jours écoulés depuis une date de référence (voir ci-dessus).

  - idem en mettant "texte".

Ben oui.

Pourquoi ne conserves-tu pas ta cellule date ? À partir de là, tu calcules le numéro du jour au moyen de la fonction JOUR()

Bonjour,

Avec LibO 3.4.3 et XP, j'ai reçu un document XLS avec une colonne
qui contient des dates :

09/09/2011
10/09/2011
etc.

Je ne voudrais garder que le jour.

  - J'ai remplacé : /09/2011 par rien pour ces cellules, et ça
m'affiche des dates de janvier 1900
  - J'ai formaté les cellules en "nombre" au lieu de "date", mais ça
remplace les dates par : 40795, 40796 etc.
  - idem en mettant "texte".

Comment faire ?

Bonjour,
Je ferai un formatage en Texte de la cellule.
Puis une extraction des deux caractères de gauche par la fonction GAUCHE.
J.M

Bonjour,

Avec LibO 3.4.3 et XP, j'ai reçu un document XLS avec une colonne
qui contient des dates :

09/09/2011
10/09/2011
etc.

Je ne voudrais garder que le jour.

- J'ai remplacé : /09/2011 par rien pour ces cellules, et ça
m'affiche des dates de janvier 1900
- J'ai formaté les cellules en "nombre" au lieu de "date", mais ça
remplace les dates par : 40795, 40796 etc.
- idem en mettant "texte".

Comment faire ?

Bonsoir,

=JOUR("09/09/2011")
ou
=JOUR(A1)
si 09/09/2011 est en A1

Bon surf,
Christian

Bonsoir,
Ne toucher à rien de ce qui est saisi dans la cellule, puis
Menu Format -> Cellules, puis
Onglet : Nombres puis
Catégorie : Date
En bas de la boîte de dialogue : "Description de format" saisir :
- JJ pour afficher le numéro du jour ;
         exemple pour 09/09/2011, ça affichera 09
-JJJ pour afficher le nom du jour tronqué ;
         exemple pour le 09/09/2011, ça affichera ven.
- JJJJ pour afficher le nom du jour entier ;
         exemple pour le 09/09/2011, ça affichera vendredi

@+
Luc

> - J'ai formaté les cellules en "nombre" au lieu de "date", mais ça
> remplace les dates par : 40795, 40796 etc.

Normal. Une date est un nombre (appelé en vocabulaire tableur le "numéro
de série"). C'est le nombre de jours écoulés depuis une date de
référence (voir ci-dessus).

> - idem en mettant "texte".

Ben oui.

Pourquoi ?

Pourquoi ne conserves-tu pas ta cellule date ? À partir de là, tu
calcules le numéro du jour au moyen de la fonction JOUR()

Je réponds à tout le monde : vous me proposez chacun des manières
différentes d'avoir le jour et je vous en remercie

Mais je me suis mal exprimé, le notion de date m'importe peu, je
désire n'avoir que les 2 chiffres.

Ma vraie question est : comment avoir ces dates vues comme une
simple suite de caractères ? (que je bricolerai ensuite avec la
fonction "remplacer)

C'est ce que j'ai fait (voir ci-dessus). Ou alors c'est autre chose ?

Bonsoir,

essayons ceci
en A1 nous avons 23/08/11, par exemple…
en B1 mettons =GAUCHE(TEXTE(A1;"jj");2)
ou plus simplement =TEXTE(A1;"jj")

B1 contient 23

cela convient-il ?

C_Lucien

Mais je me suis mal exprimé, le notion de date m'importe peu, je
désire n'avoir que les 2 chiffres.

que signifie "avoir" ?

-> *voir* la date sous forme de son seul jour : lire les réponses données par Luc et Félix (formatage de la cellule).

-> pouvoir *utiliser* ce numéro dans d'autres cellules : lire les réponses de Jean-Michel, Christian et moi (exploitation de la date).

Dans un cas comme dans l'autre, le format date de la cellule n'est pas gênant.

Ma vraie question est : comment avoir ces dates vues comme une
simple suite de caractères ? (que je bricolerai ensuite avec la
fonction "remplacer)

La vraie question est : d'où proviennent les dates insérées ?
    -> fichier texte importé, copier/coller, autre classeur ?

Bonjour

Rechercher en cochant "expressions régulières" dans "Plus

d'options"

Rechercher :
([:digit:]{2}).*

Soit Remplacer par:
'$1

Soit Remplacer par:
$1

La différence étant la gestion du résultat, sous forme de texte (on garde
les zéros non significatifs) ou de nombre (on perd ces derniers).

Cordialement
Pierre-Yves

Bonjour,

pierre-yves samyn wrote:

Bonjour

> Rechercher en cochant "expressions régulières" dans "Plus
d'options"

Rechercher :
([:digit:]{2}).*

Soit Remplacer par:
'$1

Soit Remplacer par:
$1

La différence étant la gestion du résultat, sous forme de texte (on garde
les zéros non significatifs) ou de nombre (on perd ces derniers).

Cordialement
Pierre-Yves

Pierre-Yves, tu n'as pas encore bu ton café.
Les dates ne sont pas en format texte, mais nombre. (voir les messages
précédents)

Gérard

Gérard Fargeot wrote:

Pierre-Yves, tu n'as pas encore bu ton café.
Les dates ne sont pas en format texte, mais nombre. (voir les messages
précédents)

Gérard

Oups, c'est plutôt moi qui vais en reprendre un. (avec un petit calva).
Tu avais raison.

Gérard

Merci, encore une méthode :slight_smile:

Il est donc impossible de mettre une date au format "texte" ?

> Mais je me suis mal exprimé, le notion de date m'importe peu, je
> désire n'avoir que les 2 chiffres.

que signifie "avoir" ?

Dans une cellule il y a "10/09/2011", je désire n'avoir que "10". Et
le fait que ce nombre soit une date ne m'intéresse pas, surtout si
ça gêne, comme je l'ai décrit.

> Ma vraie question est : comment avoir ces dates vues comme une
> simple suite de caractères ? (que je bricolerai ensuite avec la
> fonction "remplacer)

La vraie question est : d'où proviennent les dates insérées ?
    -> fichier texte importé, copier/coller, autre classeur ?

C'est un XLS. J'ai observé les mêmes comprtements en travaillant sur
le XLS ou sur une copie en ODS.

Merci, encore une méthode :slight_smile:

Oui. Il y en a pour tous les goûts. Tout dépend de ce que tu veux faire. Opération "one-shot" ou imports répétitifs... Pour du "one-shot", recherche/remplacement est un bonne solution.

Il est donc impossible de mettre une date au format "texte" ?

soit en A1 la *date* 07/09/2011
en A2 la formule =CTXT(JOUR(A1);0)
renvoie le numéro du jour.

Yapluka masquer la colonne A si l'on ne veut pas voir ce sein...

Bonsoir,
Je n'ai pu lu tout le fil et je réponds peut-être à côté de la plaque mais si ton but est d'avoir des /chaînes/ /de/ /caractères/ *statiques* par exemple "07/09/2011" à la place de tes dates, tu peux formater tes cellules à ta convenance puis sélectionner une colonne de dates et faire "Données > Texte en colonnes".
Cliquer dans la colonne en bas de la fenêtre qui apparaît de manière à pouvoir changer le "Type de colonne" et sélectionner "Texte".
Ne rien changer d'autre, cliquer sur ok et ouala. :slight_smile:

Mais ça doit quand-même rester un nombre ou pas ?

La question (qui a été posée par Jean-François juste après celle sur la signification de "avoir" sans que tu y répondes) présente un intérêt et doit te permettre de choisir parmi les différentes méthodes qui te sont proposées ; auras-tu besoin d'opérer des calculs sur ces nombres ou as-tu seulement besoin de sortir ces chaines de caractères sur un écran ou une imprimante, sans avoir besoin de les travailler ; une autre forme pour la même question serait de savoir s'il est indispensable que ces données (après traitement pour qu'il ne reste que les jours) restent des nombres, s'il est indifférent qu'elles soient ensuite des nombre ou des textes ou (par exemple) s'il est impératif qu'elle ne soient pas des nombres.

Dans un autre message de cette discussion, tu dis "Il est donc impossible de mettre une date au format "texte" ?" ; j'ai beau avoir lu l'ensemble de ce fil de discussion, je ne vois pas ce qui te conduit à ce constat, d'autant plus que ce n'est pas la question que tu as posée initialement.

Qui plus est, il te faut bien distinguer deux choses : la donnée elle-même (par exemple "08/09/2011") et sa présentation par le logiciel.

Comme cela a été expliqué, Calc (comme tout tableur d'ailleurs) stocke la date sous la forme d'un numéro de série à partir d'une date de référence (fixée dans les options du logiciel) ; chez moi, le jour 0 est fixé au 30/12/1899 et le 31/12/1899 est donc stocké sous la forme 1, le 01/01/1900 est le 2ème jour, le 02/01/1900 le 3ème et le 08/09/2011 est le 40.794ème jour depuis le 30/12/1899 ; ça, c'est la donnée brute telle qu'elle est stockée.

Si tu places cette donnée brute dans une cellule, selon le format que tu vas donner à cette cellule, tu vas obtenir un affichage différent ; si tu choisis un format "standard" tu obtiendras 40794 ; si tu choisis avec séparateur de milliers et 3 décimales tu obtiendras 40.794,000 ; il n'en reste pas moins qu'en mémoire, tu as toujours 40794 ; si tu choisis de le présenter au format date, tu pourras avoir 08/09/2011 ou bien 8/9/11 ou même 2011-09-08, éventuellement 08/09, ou bien encore 08, pourquoi pas 09 ou même 2011 et bien d'autres formats encore ; il n'en reste pas moins vrai que, quel que soit le format d'affichage choisi, la donnée stockée en mémoire sera encore et toujours 40794.

Parmi les nombreuses réponses que ta question initiale a reçues, certaines ne jouent que sur l'affichage (comme celle que te propose Luc Mamin le 06/09 à 22h10 par exemple) et d'autres te permettent d'extraire le numéro du jour dans le mois, que ce soit pour l'afficher ou pour le travailler en calcul (c'est le cas du message de christianwtd, toujours le 06/09 mais à 21h40) ; l'avantage de la méthode de Luc, c'est qu'elle est directement applicable à l'ensemble de ta colonne, en une seule opération ; le problème, c'est que si tu fais un calcul avec une des cellules de cette colonne tu le fais sur la donnée brute (celle stockée, donc 40794 dans le cas du 08/09/2011, pourtant affiché 08) ; l'inconvénient de la méthode de Christian, c'est qu'elle t'oblige à entrer une formule dans la première cellule d'une seconde colonne puis à la recopier dans toute la colonne ; mais l'avantage, c'est que si tu fais un calcul avec les données figurant dans cette seconde colonne, tu les fais sur la valeur que tu vois (donc, si tu as 08 dans une cellule, une formule pointant sur cette cellule se fera sur la valeur 8 et non sur 40794) ; l'autre avantage de cette seconde méthode, c'est que si tu veux recopier les données de cette seconde colonne pour ne plus disposer que de ces valeurs là, indépendamment de celles initiales, tu peux faire un copier de ta seconde colonne puis un collage spécial où tu décoches "formules" et ta nouvelle colonne se remplit (en données brutes cette fois) des valeurs que tu cherches à extraire depuis deux jours.

Une fois que tu as fait ça, tu peut formater tes cellules en nombre ou en texte, à ta convenance ; le seul truc que tu ne peux pas faire, c'est les reformater en date ; si tu fais ça, la cellule t'affichant 8 va te donner 07/01/1900 (le 8ème jour après la date de référence, le 30/12/1899 si telle est l'option que tu as fixée dans ton logiciel).

J'espère que ces quelques lignes t'auront permis d'y voir un peu plus clair.

A+

>
>>> Mais je me suis mal exprimé, le notion de date m'importe peu, je
>>> désire n'avoir que les 2 chiffres.

>> que signifie "avoir" ?

> Dans une cellule il y a "10/09/2011", je désire n'avoir que "10". Et
> le fait que ce nombre soit une date ne m'intéresse pas, surtout si
> ça gêne, comme je l'ai décrit.

Mais ça doit quand-même rester un nombre ou pas ?

Peu importe.

La question (qui a été posée par Jean-François juste après celle sur la
signification de "avoir" sans que tu y répondes)

Ma réponse est juste au-dessus

Dans un autre message de cette discussion, tu dis "Il est donc
impossible de mettre une date au format "texte" ?" ; j'ai beau avoir lu
l'ensemble de ce fil de discussion, je ne vois pas ce qui te conduit à
ce constat, d'autant plus que ce n'est pas la question que tu as posée
initialement.

Je l'ai reposé ensuite d'une manière plus juste. Ce qui me fait dire
ça est que tout le monde me propose des formules qui contournent la
méthode que je voulais utiliser : mettre les cellules en texte puis
utiliser la fonction "remplacer", comme si ma méthode n'était pas
possible.

Ce que tu sembles confirmer :

Parmi les nombreuses réponses
(...)

J'espère que ces quelques lignes t'auront permis d'y voir un peu plus
clair.

Oui, merci.

Je résume :

=JOUR("09/09/2011")
ou
=JOUR(A1)
si 09/09/2011 est en A1

puis