validation de données, liste de 1900 à aujourdhui()

dmc

XLDnaute Occasionnel
Bonjour aux excelliens, après une longue absence.
Pourtant j'ai cherché, cherché,... sans trouver un fil satisfaisant ! Obkilgé de vous déranger pour ce qui doit être facile !!
je ne parviens pas à configurer une liste de validation qui proposerait toutes les années entre 1900 et une limite supérieure variable, l'année en cours (limite supérieure variable) .
Pour aller plus loin, la deuxième étape serait même : 50 années avant aujourd'hui jusque à l'année en cours limies inférieure et supérieure variables).
Bien entendu sans avoir à saisir ces listes, et si possible sans recours à une macro.
Ne doutant pas de la qualité de vos réponses, très amicalement.
DMC
 

Softmama

XLDnaute Accro
Re : validation de données, liste de 1900 à aujourdhui()

Bonjour,

Dans une feuille (Feuil1), tu entres cette formule en A1 :
=ANNEE(MAINTENANT())+LIGNE()-51

Tu recopies cette formule une soixantaine de fois vers le bas selon ton besoin exact...

Tu nommes dynamiquement cette liste LISTEANNEES, en faisant Insertion/Nom/Définir et mettant cette formule :
=DECALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A)-1;1)

Dans la cellule où tu veux ta liste de validation, il suffit que tu mettes :
Liste au champ Autoriser
et
=LISTEANNEES au champ Source

Ainsi pas besoin de macros
 

ROGER2327

XLDnaute Barbatruc
Re : validation de données, liste de 1900 à aujourdhui()

Bonjour à tous


Une autre solution en pièce jointe.​



ROGER2327
#5441


Mercredi 11 Gueules 139 (Saint Baobab, célibataire - fête Suprême Quarte)
16 Pluviôse An CCXX, 1,1893h - buis
2012-W05-7T02:51:15Z
 

Pièces jointes

  • validation de données_177931.xlsx
    17.7 KB · Affichages: 58

job75

XLDnaute Barbatruc
Re : validation de données, liste de 1900 à aujourdhui()

Bonjour le fil,

Pour les années depuis 1962 on peut entrer la liste par macro :

Code:
Private Sub Worksheet_Calculate()
Dim i%, liste$
For i = Year(Date) - 50 To Year(Date) '1900 To Year(Date) => pas bon
  liste = liste & IIf(liste = "", "", ",") & i
Next
[D2].Validation.Delete
[D2].Validation.Add xlValidateList, Formula1:=liste
End Sub
Cette méthode ne fonctionne pas correctement pour les années depuis 1900.

Du moins sur Excel 2003, pas testé sur Excel 2010.

Fichier joint.

A+
 

Pièces jointes

  • Liste années(1).xls
    39.5 KB · Affichages: 48

dmc

XLDnaute Occasionnel
Re : validation de données, liste de 1900 à aujourdhui()

Bonjour et merci à tous pour ces réponses.:p:p:p
A softmama, haonv et roger 2327, vos solutions fonctionnent, j'ai d'ailleurs retenu celle de Roger:D:D:D:D.
Mais elles ont l'inconvénient de monopoliser une colonne, même masquée, d'où nécessité soit de définir la plage d'impression, soit de transférer sur une autre feuille etc...
Pour tout dire, et là je rejoins Job75, je pensais possible de remplir cette liste (1 valeur, un point virgule, une valeur, un point virgule...) par une fonction, que bien sûr je n'ai pas trouvé:(.
Mais contrairement à Job75, je ne souhaite pas passer par du VBA car je compte diffuser mon petit outil sur des ordis qui souvent interdisent les macros, et pour si peu je ne veux pas rencontrer ce problème, ce serait la seule macro de mon petit projet.
Il me semblait qu'avec une formule probablement matricielle on pourrait concaténer des valeurs dans un intervalle tout en les séparant, par exemple, par des point-virgules. Auquel cas cette liste serait automatiquement constituée, sans "polluer" des cellules d'une quelconque feuille.
J'en appelle donc aux grands manitous qui manipulent ces formules matricielles comme moi j'enfile mes chaussettes !
Si vraiment il est faux de fouiller dans cette voie, merci quand même de me répondre, comme d'habitude en fait.
Très amicalement.
DMC
 

job75

XLDnaute Barbatruc
Re : validation de données, liste de 1900 à aujourdhui()

Re,

Il me semblait qu'avec une formule probablement matricielle on pourrait concaténer des valeurs dans un intervalle tout en les séparant, par exemple, par des point-virgules.

Une liste de validation entrée manuellement ne peut pas être reproduite par formule.

Mais votre problème serait résolu en effet si une liste de validation pouvait être définie par une matrice quelconque.

Malheureusement il semble bien que seules les plages de cellules soient acceptées.

A+
 

job75

XLDnaute Barbatruc
Re : validation de données, liste de 1900 à aujourdhui()

Bonjour Jean-Claude :)

Merci d'avoir testé ma macro du post #5 sous Excel 2010.

Je viens de le faire aussi.

La limite est l'année 3537...

For i = 1900 To 3537 'fonctionne

For i = 1900 To 3538 'entraine un bug

Curieux non ?

A+
 

ROGER2327

XLDnaute Barbatruc
Re : validation de données, liste de 1900 à aujourdhui()

Bonjour à tous


La limite est l'année 3537...

For i = 1900 To 3537 'fonctionne

For i = 1900 To 3538 'entraine un bug

Curieux non ?
Non, rien de curieux. La longueur d'une liste ne saurait excéder 8192 caractères. Tout le monde sait que Microsoft produit des logiciels modernes.​


ROGER2327
#5442


Mercredi 11 Gueules 139 (Saint Baobab, célibataire - fête Suprême Quarte)
16 Pluviôse An CCXX, 5,9115h - buis
2012-W05-7T14:11:16Z
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : validation de données, liste de 1900 à aujourdhui()

Bonjour à tous,

connaissez-vous les limites de la date de votre PC ?
je viens de découvrir:
capture.jpg
ça m'embête un peu de devoir réinstaller la dernière version de Windows
.............. lorsque je serai arrivé à l'âge de 144 ans :mad::mad::mad:


à+
Philippe
 

Pièces jointes

  • capture.jpg
    capture.jpg
    66 KB · Affichages: 80
  • capture.jpg
    capture.jpg
    66 KB · Affichages: 83

Discussions similaires

Réponses
8
Affichages
444

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado