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 !
Je sollicite aujourd'hui les spécialistes du vba non pas pour me trouver quelques lignes de code, mais pour m'expliquer un phénomène étrange concernant le vba, car si j'admets ne pas tout savoir (heureusement), j'aime comprendre les choses. 😕
Dans le fichier joint, il y a 3 onglets qui représentent le même graphique :
-feuillle1, tout marche impec. Merci à Hulk qui m'a retrouvé le fil et à Bigfish le génial créateur du fichier. 🙂🙂
-feuille2, j'ai remplacé pour des raisons d'affinité la fonction RECHERCHEV par la fonction INDEX et le choix du nom (données -> validation) par une zone de liste déroulante "formulaire".
Là le code ne fonctionne plus. Les colonnes contenant les valeurs zéro ne se masquent pas. 😡
-feuille3, en remplaçant la zld par une combobox, et en modifiant
Private Sub Worksheet_Change(ByVal Target As Range) par
Private Sub ComboBox1_Change() tout marche bien. 😀
(Merci à RENAUDER -salut Eric !-pour le truc)
La question qui me turlupine est : pourquoi Excel en veut-il autant à la fonction INDEX et/ou aux zones de listes déroulantes ? 😡
Merci d'avance pour vos éclairages. 🙄
JB
PS : je m'excuse par avance si je réponds pas à vos messages. Je pars en déplacement professionnel et ne rentrerai que vendredi 29, à moins que...
Sub Zonecombinée12_QuandChangement()
Dim MaCellule As Range
For Each MaCellule In Range("M26:Q26")
If MaCellule.Value = 0 Then
'On Error Resume Next
MaCellule.EntireColumn.Hidden = True
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotVisibleOnly = True
Else
MaCellule.EntireColumn.Hidden = False
End If
Next
'Range("D22").Select
End Sub
et en commentant le code VBA présent dans la feuille 2
Meuh non ! J'ai saisis la formule suivante en M26 de ta Feuil3 :
=INDEX(E5:E8;EQUIV($L$26;$D$5:$D$8;0)) à tirer vers la droite, of course...
et la liste de validation en L26 : =$D$5:$D$8
et avec Worksheet_Change
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaCellule As Range
For Each MaCellule In Range("M26:Q26")
If MaCellule.Value = 0 Then
On Error Resume Next
MaCellule.EntireColumn.Hidden = True
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotVisibleOnly = True
Else
MaCellule.EntireColumn.Hidden = False
End If
Next
Range("L26").Select
End Sub
Et tout fonctionne parfaitement 😉
Tu vois qu'XL ne déteste pas INDEX / EQUIV 😛
Par contre, kjin, l'évènement Calculate n'est peut-être pas trop conseillé pour ce genre d'opération car il est appelé autant de fois qu'il y a de cellules contenant une formule 🙄
Bonsoir,
Nolich, je n'ai fait que répondre à la question, l'événement "Change" n'étant pas intercepté dans le cas précis que soumets JB.
Si tu remplaces la zone combinée par une liste de validation, tu es dans le cas de la feuil1, et JB signale bien que dans ce cas, ça fonctionne !
Sinon, affecter la macro directement à la zone combinée, comme l'a suggéré VbaCrumble.
A+
kjin
Tu me fais penser que l'évènement Worksheet_Change est également appelé plusieurs fois car la modification du nom entraîne 6 modifications de résultats 😛
Ceci dit, je crois plutôt qu'il y a eu mauvaise utilisation de la fonction INDEX car JB ne par le pas d'EQUIV 🙄
Moi je m'incruste juste pour saluer, sur la pointe des pieds, la présence de jeanmarie, à mon sens trop rarement présent (mais t'as le droit, bien sûr)....
Bisous à toi, tu nous manques avec tes formules, tes matricielles, and so on ...
Bonjour le forum, bonjour à tous, et remerciements à tous ceux qui se sont intéressés à mon "problème".🙂😀🙂
vba crumble, nolich, merci de vos réponses instructives
kjin, merci de m'avoir fait découvrir l'évènement Worksheet calculate, dont la différence ténue avec Worksheet change est simple : ou ça marche, ou ça marche pas ! 😛
brigitte, merci de ton message dont j'ai compris la nostalgie quand j'ai découvert le fichier de jeanmarie...🙂
jeanmarie, merci de m'avoir soufflé avec ton fichier. Il faut reconnaître que dans la formule :
combiner les fonctions
TRANSPOSE - PETITE.VALEUR - SI - DECALER - EQUIV - COLONNE et LIGNE dans une formule matricielle relève du génie, du virtuose ou de l'extraterrestre...😱
Pour ma part, je maîtrise très bien parmi toutes ces fonctions la fonction SI...
Il me faudra à peu près 6 mois pour tout comprendre...😕😕😕
Merci encore à tous (ce masculin générique englobe également Brigitte, dont j'adore l'avatar...)😉
Merci pour ton petit clin d'oeil à mon avatar. C'est moi à deux ans, j'étais trognon, hein ? pourtant parait que je m'étais fait gronder sévère... Voici la photo en grand pour toi... (arf)
C'est gentil Jean Marc, mais bon... je ne crois pas que tu aies raison... Je n'ai pas changé... dans la tête et le coeur (toujours aussi gamine : enthousiaste d'un rien, d'une fleur, d'un sourire, riant d'un rien, triste d'une méchanceté, contrariée par les vents contraires, et vite de nouveau en selle)..
Sinon... malheureusement, les couettes sont parties, la blondeur aussi, etc...
- 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