Affichage d'une plage nommée à partir d'une liste déroulant (résolu)

zhenhua

XLDnaute Nouveau
Bonjour tout le monde,

J'ai cherché sur internet pendant des semaines la solution sans pouvoir en trouver.
Veuillez m'aider T_T

J'ai un fichier en PJ qui consititue de 4 onglets.
Mon but est de créer un formulaire de calcul automatisé dans l'onglet "Liste Déroulante", à partir les données stockées dans les 3 autres onglets.

1. Sélectionner la "catégorie" --> fait
2. Sélectionner la "sous-catégorie" par rapport à la catégorie choisie --> fait
3. Afficher la zone de calcul à remplir en fonction du couple "catégorie/sous-catégorie" choisi (des plages pré-nommées dans l'onglet "standard de calcul") --> pas fait (effet voulu est que quand y'a aucune catégorie/sous-catégorie choisie, la zone de calcul est vide, il s'affiche et se met à jour quand la catégorie/sous-catégorie change)

ps: j'ai utilisé un code de copier/coller pour but de montrer le résultat attendu.

En attendant des réponses!!SVP!
2013-08-20_153246.png
 
Dernière édition:

PMO2

XLDnaute Accro
Re : Affichage d'une plage nommée à partir d'une liste déroulant

Bonjour,

Copiez le code suivant dans la fenêtre de code de la feuille "Liste Déroulante"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim bool As Boolean
Dim S As Worksheet
Dim R As Range
Dim N As Name
Dim A$
'---
Application.EnableEvents = False
If Target.Address = "$E$10" Then
  bool = True
  [f10] = ""
End If
If Target.Address = "$F$10" And Not bool Then
  '--- Supprime la zone de calcul ---
  Set R = Range("g10:h" & [h9].CurrentRegion.Rows.Count + 8 & "")
  R.Delete
  '--- Copie la zone de calcul ---
  For Each N In ThisWorkbook.Names
    If N.Name = Target Then
      Exit For
    End If
  Next N
  A$ = Mid(N, 2, InStr(1, N, "!") - 2)
  If Left(A$, 1) = "'" Then
    A$ = Mid(A$, 2, Len(A$) - 2)
  End If
  On Error Resume Next
  Set S = ThisWorkbook.Worksheets(A$)
  Set R = S.Range(N.RefersToRange.Address)
  If Err = 0 Then R.Copy Destination:=[g10]
End If
Application.EnableEvents = True
Application.CutCopyMode = False
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Affichage d'une plage nommée à partir d'une liste déroulant

Bonjour.
En toute première approche :
Code:
=INDIRECT($F$10)
validé en matriciel (Ctrl+Majuscule+Entrée) sur au moins H10:H18 marche pour les valeurs pour certaines sous catégories. Mais PMO2 a passé l'étape suivante permettant de reproduire la mise en forme. Mais il me semble que le code pourrait être plus simple en essayant simplement de prendre Application.Range(Me.[F10].Value)

Edit Ce qu'a fait PierreJean que je salue.
 

Discussions similaires