Liste déroulante

Bonjour à tous !

J'ai un petit souci qui va peut-être sembler anodin aux pros de l'excel mais pour un semi-débutant comme moi..

Voilà : j'ai crée une liste déroulante janvier -> décembre et je voudrais qu'en changeant le mois, les données (qui diffèrent évidemment d'un mois à l'autre) changent également et ce tout en restant sur la même feuille.

Parce que pour l'instant le fait de choisir tel ou tel mois dans ma liste déroulante n'a aucune incidence sur mes données dans le tableau d'en dessous.

Je pense qu'il faut passer par une petite macro mais je suis à vrai dire perdu.

Je vous remercie par avance de votre réponse et vous souhaite à tous une très bonne journée!

Bonjour,

Peux-tu joindre un fichier excel ?

Tout d'abord merci pour cette réponse ultra-rapide !

Mon fichier comporte des données confidentielles mais si vraiment, je peux joindre un autre fichier simpliste qui expliquerait un peu mieux. Y a-t-il un hébergeur sympa?

Pour joindre un fichier

Ici

Oui, un fichier sans données confidentielles.

Ça m'apprendra à bien regarder !

J'ai simplifié au maximum pour que ce soit assez clair.

Là vous avez les données de Janvier par exemple et j'aimerai savoir comment faire pour mettre les données des autres mois sur la même feuille!

Merci !

19classeur1.xls (14.50 Ko)

Bonjour

Bien ton fichier, mais où sont les autres données ?

C'est toujours 2 informations par mois ?

A te lire

Bonne journée

Il y a une centaine d'informations coupées en 4 secteurs (par mois).

Je voudrais simplement avoir une piste pour avancer, pas que vous me le fassiez

Si je dois utiliser une macro ou si c'est un truc tout bête..

Bonjour

Très louable de ta part de vouloir le faire

Mais pour t'aider ( à trouver une piste) il manque des renseignements

Moi comme ça je ne vois pas

Les données à récupérer sont elles triées ?

Elles sont organisées comment ?

Je suivrai l'avancement mais pour le moment je ne sais pas

peut-être une formule ou une macro (la plus sur )

Bonne journée

Tu as des onglets Janvier, février etc.... ? Le même tableau sur chaque onglet ? Sinon, j'ai pas compris non plus

Merci de votre aide déjà

Sinon non je n'ai pas plusieurs onglets.

En fait, et peut-être que ça va simplifier la chose, les données seront tapées manuellement et ne sont récupérées d'aucun autre fichier excel.

Le seul truc c'est que j'aimerai justement éviter de faire plusieurs onglets (Janvier, Février,ect) et de tout regrouper dans un seul en choisissant simplement le mois à l'aide de la liste déroulante. Le tableau resterait le même d'un mois à l'autre, seules les données à taper changeraient.

Le problème, c'est que dans le fichier que tu as transféré, il n'y a qu'un tableau, et une liste déroulante.

Il manque des infos non ?

-- 28 Fév 2011, 11:53 --

Peut-être quelque chose comme ça ?

12v1.zip (8.35 Ko)

Voilà! C'est moche vu comme ça mais ça peut peut-être vous aider!

Les cellules à remplir manuellement sont celles comportant un "x". Les autres restant inchangées suivant mon souhait.

La liste déroulante est en haut à gauche.

Et donc j'aimerai taper mes résultats de janvier puis choisir mars, par exemple, dans liste et retaper d'autres résultats.

Merci !

15classeur1.xls (20.00 Ko)

En tapant d'autres résultats, tu veux que ceux ci s'ajoutent aux anciens ? ou alors qu'en tapant de nouveaux résultats, c'est la dernière valeur tapée qui soit la bonne ?

Cordialement

Que la dernière valeur soit la bonne. Mais qu'on puisse, à l'aide de la liste déroulante, retrouver et visualiser les chiffres des mois précédents (sur la même feuille et en un clic donc).

Merci de prendre sur votre temps

Première partie : pouvoir accéder aux données en choisissant le mois

20v1-hools.zip (22.00 Ko)

Est-ce que le fichier te convient pour le moment ?

Reste à faire : enregistrer les infos directement

Je suis preneur de conseils

Banzai, le code ci-dessous est-il bon ? (sans passer par les variables tableaux)

Je veux juste savoir si j'ai la bonne méthode (si je ne boucle pas inutilement sur certains trucs)

Merci

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ws1 As Worksheet
Set ws1 = Worksheets("SAISIE")

Dim ws2 As Worksheet
Set ws2 = Worksheets("BASE")

Application.ScreenUpdating = False

If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub

num_mois = ws1.Range("B1") * 2
last_row = ws2.Range("A65000").End(xlUp).Row
nb_secteurs = 4
d = num_mois
e = num_mois + 1

For a = 1 To nb_secteurs

        For b = d To e

            For c = 4 To last_row
            ws1.Cells(c + 4, u + 3) = ws2.Cells(c, b)
            Next c

            u = u + 2

        Next b

u = u + 2
d = d + 24
e = e + 24

Next a

Application.ScreenUpdating = True

End Sub

Merci beaucoup!

C'est exactement ce que je cherchais!

Par contre comment es-tu arrivé à le faire?

Bonsoir,

J'ai utilisé une macro (avec le code que tu as vu dans le message précédent).

Pour accéder à l'éditeur : menu outils - macro - visual basic editor

Ensuite tu verras l'éditeur qui va s'ouvrir, et à gauche tu verras "SAISIE" (c'est l'onglet sur lequel ton code agira).

Voilà, j'espère que ces quelques pistes t'aideront pour la suite de ton fichier.

Il ne te manque plus qu'à faire en sorte que dès que tu modifies une cellule (événement change), cela modifie l'onglet Base.

Cordialement

-- 03 Mar 2011, 15:38 --

Suite et fin pour moi.

Voici la deuxième partie (si tu modifies une cellule, ça modifie dans l'onglet).

Attention, ça ne fonctionne que si tu saisis ou supprime une seule cellule à la fois.

12v2.zip (26.66 Ko)

++

Private Sub Worksheet_Change(ByVal Target As Range)
'KETAMACANNA 03/03/11

Dim ws1 As Worksheet
Set ws1 = Worksheets("SAISIE")

Dim ws2 As Worksheet
Set ws2 = Worksheets("BASE")

If Not Intersect(Target, Range("pl_modif")) Is Nothing Then
    row_target = Target.Row - 4
      valeur = 1 + ((Int((Target.Column - 1) / 6)) * 24 + ws1.Range("B1").Value * 2 - 1)
         If ((Target.Column + 1) - 6 * Int((Target.Column + 1) / 6) = 0) * 1 = True Then
           ws2.Cells(row_target, valeur + 1) = Target.Value
             Else
        ws2.Cells(row_target, valeur) = Target.Value
    End If
End If

If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub

num_mois = ws1.Range("B1") * 2
last_row = ws2.Range("A65000").End(xlUp).Row
nb_secteurs = 4
d = num_mois
e = num_mois + 1

For a = 1 To nb_secteurs

        For b = d To e

            For c = 4 To last_row
            ws1.Cells(c + 4, u + 3) = ws2.Cells(c, b)
            Next c

            u = u + 2

        Next b

u = u + 2
d = d + 24
e = e + 24

Next a

End Sub
Rechercher des sujets similaires à "liste deroulante"