À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.
Ô Saint Excel, Grand Dieu de l'Inutile.
Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.
Bonjour cmarcotte
Bonjour Joe.levrai
C'est facile, non seulement à mettre en oeuvre, mais également à faire mieux encore dans ce sens. Et sans sendkeys (à toujours éviter comme la peste) ni lourdeur additionnelle - et dépendance ! - de langages script, etc ...Il souhaite simplement "déplier" automatiquement une liste de validation disposée dans cette cellule
à trop vouloir mâcher le travail des utilisateurs, on finit parfois par en perdre ses cheveux
Je viens de le faire à l'instant, mais il importe que jpma75 fasse l'effort, s'il veut en profiter, de se montrer très précis (donnant donnant****** ou rien du tout est devenu ma devise de ces jours-ci).
EDIT : ****** pour jpma75 :
Voilà ce qu'il y a à la clef du "donnant donnant" :
lorsque l'utilisateur se rend dans la/les cellule(s) concernée(s) :
- s'ouvre sous lui une liste déroulante remplie des choix possibles
- si la cellule ne contient rien ou une valeur non admise : aucune présélection dans la liste et l'utilisateur devra y faire un choix valide
- si la cellule contient déjà une valeur valide, elle apparaîtra déjà sélectionnée dans la liste. L'utilisateur pourra alors : soit la conserver, soit en changer
- au sortir de cette liste :
------ la cellule aura la valeur qui y a été sélectionnée ou conservera sa valeur ancienne si aucune sélection
------ la liste disparaîtra alors de la vue (elle ne réapparaîtra que si l'utilisateur se rend dans une autre cellule également concernée par ce mécanisme)
LE TOUT : en un nombre ridicule de lignes de code et uniquement du VBA. Aucune dépendance de quelque sorte que ce soit.
Intéressant n'est-il-pas (à la british) ?
Mais voilà : tu n'auras cela qu'à la condition indiquée plus haut : un effort pour te montrer clair, précis et complet (comme demandé). Ou tu n'auras rien (c'est cela, mon "donnant donnant").
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Bonjour Jacques,
Tout à fait d'accord, c'est la moindre des chosesMais voilà : tu n'auras cela qu'à la condition indiquée plus haut : un effort pour te montrer clair, précis et complet (comme demandé). Ou tu n'auras rien (c'est cela, mon "donnant donnant").
Ryu
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Bonjour Ryu
Hé oui ! Le paradoxe est là : lorsque le demandeur ne fait pas l'effort qu'il attend par contre des répondeurs ! Cela commence réellement à m'insupporter.
Si la chose t'intéresse : dis-le et je te l'envoie volontiers par MP, avant de l'effacer (comme d'hab ) sur ma machine.
Amitiés
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Re Jacques,
tu le sais bien autant que Marc (que je salue) tout m'intéresse, ma curiosité et ma soif d'apprendre n'a pas de frontière et de limite (juste celle du temps, qui fait défaut , mais on fait avec).
C'est avec plaisir, je veux bien que tu me l’envoies.
Merci
Ryu
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Tu l'auras juste après ma sieste, Ryu. Mais ne la mets pas sur le forum avant un bon mois, sauf si jpma75 a entre temps réagi en faisant l'effort demandé.
EDIT : finalement envoyé avant ma sieste.
Amitiés
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Bonjour,
kiki29,
Merci pour ces précisions. J'ai bien noté la nécessité de répéter la ligne mais j'avoue ne pas avoir grillé le dernier neurone qui me reste pour saisir toute la subtilité de la démonstration.
Docmartin,
Génial ! Parfait ! Here is the solution !! Pas tout compris, mais c'est adopté, testé, et validé. Merci !
unparia,
L'utilisateur ouvre le classeur sur lequel s'affiche un tableau de référence. Ce tableau a pour objet d'être dupliqué mais dans sa version de référence son affichage est restreint ; l'utilisateur peut néanmoins modifier des valeurs de quotas (qui seront reprises dans les duplications) et accéder à des options. L'une d'entre elles, lance la duplication. Dans le nouveau tableau (nouvelle feuille) créé, l'utilisateur doit impérativement saisir une date car celle-ci renommera la feuille active (Sheetname). Il est donc important que, dès l'option de duplication lancée, le menu déroulant s'ouvre pour inviter l'utilisateur à remplir la cellule. L'ouverture du menu se fait par un "Worksheet_selectionChange" (à noter que si l'utilisateur ne saisit rien, je l'y ré-invite par un "Worksheet_Change").
Dans la cellule où s'affiche le menu déroulant, il y a : "Données/Validation de Données/Autoriser : Liste/Source : =Calendrier".
Calendrier est une plage nommée :
Précision (au cas où), les dates qui sont proposées dans le menu déroulant doivent être différentes de celles qui figurent déjà dans les noms de feuilles existantes ! Donc, je les récupèrent ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part =DECALER(menus!$K$5;;;NBVAL(menus!$K$5:$K$21))
... et dans ma plage "Calendrier" je gère les doublons par rapport à ce que m'a renvoyé la procédure "Sub Rec_Noms_Onglets()".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub Rec_Noms_Onglets() Dim ws As Worksheet, i As Integer i = 2 Application.EnableEvents = False 'attention Sheets("menus").Columns(1).ClearContents For Each ws In Application.Worksheets If ws.Name <> "menus" And ws.Name <> "réf." Then Sheets("menus").Range("A" & i) = ws.Name ' Sheets("menus").Range("A1").End(xlUp).Offset(1, 0) = ws.Name i = i + 1 End If Next ws Application.EnableEvents = True End Sub
Donc rien d'extraordinaire dans ce menu déroulant, mais comme tu voulais le détail...
Cdt
Je ne vois là ni où est le menu déroulant, ni quel objet il est, ni où tu y utilises le sendkeys.
Peux-tu préciser ?
Veux-tu dire que ton menu déroulant contient les données d'une plage (serait-ce ta plage nommée "calendrier" dans la feuille "Menus"?) et qu'une saisie doit nécessairement correspondre à une sélection dans ce menu déroulant ?
Si oui : quelles sont les cellules à contrôler ainsi lors de la saisie ? (celles liées à ton "menu déroulant)
Ce sont ces réponses-là, que j'attends, pas des précisions sur la manières dont ont été définies les valeurs (apparemment celles de la plage nommée "calendrier") à afficher dans ton "menu déroulant" et parmi lesquelles en sélectionner une).
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Dire que VBA fournit deux InputBoxes pour des affaires du genre :
Inputbox() et application.inputbox()
Il n'y a pas de menu dans VBA. Ce que tu appelles un menu déroulant n'existe pas, sauf si c'est quelque chose que tu as patenté. Pour tous ceux qui répondent ici, un menu déroulant est issu d'un ruban ou d'une barre d'outils. Ce n'est pas une liste déroulante, ni un ListBox ni un combobox, ni une liste de validation ou n'importe quoi d'autre. Quand on utilise sans aucune explication un terme différent pour désigner un objet différent de celui qui est généralement connu de l'ensemble des membres cela ne mène nulle part.le menu déroulant s'ouvre pour
Donc ton "menu déroulant" a l'air d'être une liste de validationDans la cellule où s'affiche le menu déroulant, il y a : "Données/Validation de Données/Autoriser : Liste/Source : =Calendrier".
Ça c'est sûr que d'appeler une liste un menu n'a rien d'extraordinaire pour la précision.
Donc rien d'extraordinaire dans ce menu déroulant, mais comme tu voulais le détail...
Cdt
À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.
Ô Saint Excel, Grand Dieu de l'Inutile.
Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.
Bonsoir,
InputBox, oui bien sûr ; je l'utilise quand il faut mais (AMHA) ça va encore plus vite de cliquer sur une date (surtout si le menu de la liste de validation s'ouvre "automatiquement") que de la saisir.
Et comme je le précisais plus haut, seules certaines dates sont possibles et c'est justement celles qui sont accessibles dans la liste de validation.
J'ai un doute. Quand j'écris :
... est-ce qu'on peut ne pas imaginer que je parle d'une liste déroulante ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 With Range("k2") .MergeArea.ClearContents .Select SendKeys "%{Down}" End With
Cdt
NON
K2 c'est une cellule. Et comme, sauf horreur de ma part, la limite de caractères dans une cellule c'est 256 et peut-être même 32767, il est possible qu'une cellule contienne plusieurs lignes. Le filtre place également des listes dans des cellules. Certaines opérations de tri également. Et c'est sans compter toutes les boîtes de dialogue intégrées qui sont utilisables en VBA.
À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.
Ô Saint Excel, Grand Dieu de l'Inutile.
Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.
Bien, je note donc qu'un SendKeys "%{Down}" fait bien plus que je ne le pensais mais comme de toute façon il n'a manifestement pas la faveur des contributeurs, je pense que je m'en tiendrai à le limiter à l'ouverture d'une liste déroulante (oups "déroutante" jusqu'à ce que kiki29 via docmarti m'apportent une solution que je n'aurais jamais pu trouver par moi-même).
Cdt
Bonjour,
M'est avis que tu devrais jeter un œil par là et oublier ton SendKeys, (et peut-être aussi d'entrer dans la liste).
Parce qu'Excel a un objet Validation
(Mais je n'ai rien sous la main qui ait besoin de validation)
À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.
Ô Saint Excel, Grand Dieu de l'Inutile.
Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.
Bonjour,
Merci. J'ai jeté un oeil. C'est trop compliqué pour moi. J'y reviendrai peut-être dans quelques mois ou quelques années. Mais merci pour cette piste.
Cdt
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager