Forum Clubic

EXCEL - Probleme sur Liste deroulante dynamique

Bonjour,

J’aimerais créer une liste déroulante dynamique.
En fait la variable qui est dynamique est l’année en cours
Donc pour trouver cette année en cours j’utilise dans une cellule la fonction suivante : =ANNEE(AUJOURDHUI())
Je dois remonter jusque l’année 1990. Donc dans une feuille (Feuil3 par exemple)
j’ai ma 1ere cellule qui contient : =ANNEE(AUJOURDHUI())
Ensuite je crée une macro qui décremente de 1 a chaque fois par exemple pour A2=A1-1;A3=A2-1 … jusqu’a ce que le résultat fasse An=1990
Mais je ne sais pas comment créer une macro qui me calculerais donc automatiquement cette liste. En fait je ne sais pas créer de macro sinon le programme serait un truc dans le genre là :

AnneeEnCour=ANNEE(AUJOURDUI());
Compteur = 1;
While (AnneeEnCour <> 1990)
{
Cellule A[Compteur]=AnneeEnCours;
Compteur ++;
AnneeEnCours --;
}

Puis au moment de créer la liste déroulante sur la Feuil1, j’irais selectionner le résultat affiché sur la Feuil3 par ma macro.

Merci

Ben étant donné que la fonction aujourd’hui est dynamique il suffit de soustraire le nombre directement :

=ANNEE(AUJOURDHUI()) = 2006
=ANNEE(AUJOURDHUI()) -1 = 2005
=ANNEE(AUJOURDHUI()) -2 = 2004
=ANNEE(AUJOURDHUI()) -3 = 2003

Enfin je vois peut-être pas ce que tu veux en faire mais ça pourrait aller a mon avis :neutre:

Ou plus simple si
A1 = ANNEE(AUJOURDHUI()) = 2006
A2 = A1-1
A3 = A2-1
… Il te suffit de tirer la fonction pour la suite.

Oui mais il veut s’arreter à 1990 et chaque année, il faudrai tirer une ligne de plus

Sub macro2()

Dim n
Dim s
 
 n = 1
 s = 0
      Sheets("Feuil1").Select
      Cells(n, 1).Select
      ActiveCell.Value = Year(Now)
   
 
     While ActiveCell.Value > 1990
         Cells(n, 1).Select
         ActiveCell.Value = Year(Now) - s
         n = n + 1
         s = s + 1
     Wend
   
End Sub

c’est pas beau mais avec un sandwich dans une main, c’est dur

Voilà c’est çà je voulais eviter de retirer une ligne a chaques nouvelles années donc pour çà qu’il me fallait une boucle qui fasse le reste automatiquement. Sinon Dredre, c’est la méthode que j’avais utilisé a la base celle que tu m’as indiqué mais elle ne me convenait pas. Merci bcp

Voilà, je viens d’essayer la macro de Cloch_hard et elle marche parfairement;
Je savais comment la programmer mais je ne connais pas la syntaxe du VBA pour Excel donc j’etais un peu bloqué sur l’aide…

Merci

Par contre lorsque j’ouvre mon fichier Excel, on me demande d’activer mes macros, je reponds oui mais cette macro que je viens de créer, ne s’execute pas, il faut que je la lance manuellement, comment faire pour qu’a l’ouverture; ma macros s’execute automatiquement ? Merci

Dans Visual Basic Editor,

A gauche, tu double clic sur Thisworkbook,
a doite, tu y mets

Private Sub Workbook_Open()
macro2
End Sub

et pour ne pas avoir a chaque fois le messages sur l’activation des macros

dans Excel,

Outils/Macro/Sécurité

et Niveau de sécurité faible

Merci bcp, j’avais fini par trouver pour l’execution de la macro en ouverture mais j’avais recopié toute la macro dans le Workbook_open() ca fait que si je voulais reutiliser par la suite la macro a nouveau, çà aurait posé probleme ou j’aurais du la recréer et donc avoir une redondance.