Problème Macro + liste déroulante

  • Initiateur de la discussion Initiateur de la discussion sheryo
  • 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 !

sheryo

XLDnaute Nouveau
Bonjour,

Après beaucoup de recherche je me tourne vers vous en espérant une réponse 🙂 .
Voilà mon souci : je dois créer une macro dans excel qui construit une liste déroulante, cette liste déroulante contient plusieurs String (jusqu'ici j'ai su faire),
Le problème est qu'après sélection de la string dans la liste déroulant il faut qu'une valeur lui soit affecté et affiché.

Exemple:
si je clique sur Lundi dans ma liste déroulante, il faut que 1 soit écrit dans ma cellule, etc pour les autres jours...

Code qui permet juste de sélectionner et d'afficher les jours :

Range("E2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
 
Re : Problème Macro + liste déroulante

Bonjour sheryo et Bienvenue, re tous,

Le but ?
As-tu besoin de macro ?

Moins il y en a, mieux on se porte.

Un exemple joint pourrait être utile. (zippé l'exemple et argumenté)

A te lire.

Bonne soirée.

Jean-Pierre
 
Re : Problème Macro + liste déroulante

Merci de me répondre,
Le but est de simplifié la saisie d'information, la macro est fortement conseillé.
Sauf s'il y a plus facile?
Je suis ouvert à tout.
Le code que je peux poster ne correspond pas a ce que je veux, est-il nécessaire de le donner?
 
Re : Problème Macro + liste déroulante

Re,

Si "Le code que je peux poster ne correspond pas a ce que je veux, est-il nécessaire de le donner?".

NON, bien sûr, ce qu'il faut, c'est un extrait (judicieux) de ta problématique, ce que tu veux obtenir, sinon les meilleurs conseils ne serviront à rien et on peut tourner en rond pendant plusieurs semaines...

Je ne sais comment t'expliquer mieux.

Jean-Pierre
 
Re : Problème Macro + liste déroulante

Re,

Le code proposé précédemment fonctionne ainsi :
Lors du clique dans la liste déroulante de lundi (par exemple), lundi s'écrit dans la cellule

Ceux à quoi je veux arriver :
Lors du clique dans la liste déroulante de lundi (par exemple), je souhaite que la valeur 1 soit afficher dans la cellule.

Amicalement.
 
Re : Problème Macro + liste déroulante

Re,

Si tu veux travailler sur une cellule (click ou ce que l'on veut) et qu'en même temps tu ais une réponse sur cette même cellule, clair que là c'est du VBA....

Mais, sans EXEMPLE JOINT et TRAVAILLER dans LE VIDE......

Je n'ai, ni envie, ni la patience de refaire ton code, l'USF, la combo ou autre du même genre... si cela existe, bien sûr.

Alors, soit sympa. aides nous à t'aider.
 
Re : Problème Macro + liste déroulante

Bonsoir sheryo, jeanpierre, le Forum,

Tout d'abord, pour gérer l'affichage du 1 à la place de Lundi, oui VBA me semble tout à fait requis, mais pour la création de la liste de validation elle-même, je suis comme l'ami jeanpierre, je ne vois absolument pas l'intérêt de le faire par VBA...

Ceci dit, si tu souhaites pouvoir remplacer le choix effectué par une valeur n'appartenant pas à la liste (remplacement de Lundi par la valeur 1 par exemple), la première modification qu'il convient de faire dans ton code, c'est de remplacer ta ligne :
Code:
[SIZE=2].ShowError = [COLOR=NAVY]True[/COLOR][/SIZE]
Par
Code:
[SIZE=2].ShowError = [COLOR=NAVY][B]False[/B][/COLOR][/SIZE]
Avant de passer à la suite, je te conseille déjà d'optimiser un peu ta procédure (les Select et le Paste sont inutiles ici, tu peux agir directement sur la plage de cellules comme suit ) :
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]

[COLOR=NAVY]Sub[/COLOR] ListeDeroulante()
    [COLOR=NAVY]With[/COLOR] Range("E2:E26").Validation
        .Delete
        .Add [COLOR=NAVY]Type[/COLOR]:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche"
        .IgnoreBlank = [COLOR=NAVY]True[/COLOR]
        .InCellDropdown = [COLOR=NAVY]True[/COLOR]
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = [COLOR=NAVY]True[/COLOR]
        .ShowError = [COLOR=NAVY]False
    End With
End Sub[/COLOR][/SIZE]
Enfin, pour répondre à ta question, il convient de passer par l'évènement Change() dans le module de code de ta feuille :
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS LE MODULE DE CODE DE LA FEUILLE[/I][/B][/COLOR]

[COLOR=NAVY]Private Sub[/COLOR] Worksheet_Change([COLOR=NAVY]ByVal[/COLOR] Target [COLOR=NAVY]As[/COLOR] Range)
[COLOR=NAVY]Dim[/COLOR] j [COLOR=NAVY]As String
Static[/COLOR] EnCours [COLOR=NAVY]As Boolean
    If Not[/COLOR] Application.Intersect(Target, Range("E2:E26")) [COLOR=NAVY]Is Nothing[/COLOR] And [COLOR=NAVY]Not[/COLOR] EnCours [COLOR=NAVY]Then[/COLOR]
        j = ActiveCell.Text
        EnCours = [COLOR=NAVY]True[/COLOR]
        ActiveCell.Value = Switch(j = "Lundi", 1, j = "Mardi", 2, j = "Mercredi", 3, j = "Jeudi", 4, j = "Vendredi", 5, j = "Samedi", 6, j = "Dimanche", 7)
        EnCours = [COLOR=NAVY]False
    End If
End Sub[/COLOR][/SIZE]
A quoi sert la variable EnCours ? Sans cette variable test, l'expression "ActiveCell.value = ..." va déclencher elle-même un évènement Change() qui entrainerait une réaction inattendue de VBA puisque tu te situes dans une procédure évènementielle qui surveille justement les modifications de cellules... Cette variable sert donc à court-circuiter cet évènement inopportun.

Cordialement,
 
Re : Problème Macro + liste déroulante

MERCI beaucoup myDearFriend!,

Tu m'enlèves "une grosse épine du pied" 🙂

Saurais-tu par hasard comment faire en sorte de charger les modules avec un script sur des fichiers excel différents (sans avoir à entrer dans chaque fichier excel et les écrires manuellement )?
Est ce que c'est possible?

Amicalement.
 
- 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

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
3
Affichages
918
Réponses
16
Affichages
3 K
Réponses
1
Affichages
1 K
Réponses
4
Affichages
1 K
Réponses
2
Affichages
884
Retour