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

  • Initiateur de la discussion Initiateur de la discussion zhenhua
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

zhenhua

Guest
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 modification par un modérateur:
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
 
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.
 
Re : Affichage d'une plage nommée à partir d'une liste déroulant

T_T très touchée. Merci beaucoup à tout le monde. Le problème est résolu grâce à vous.
Les 2 solutions fonctionnent nickel.
Merci again!!!!!!!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
259
  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
2 K
Retour