IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

faire rouler une macro à partir d'une valeur d'un menu déroulant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Par défaut faire rouler une macro à partir d'une valeur d'un menu déroulant
    Un peu débutant avec la programmation. Voilà j'ai une feuille Excel déjà tout monté et que je veux modifier.

    Ma première étape qui fonctionne, était d'évaluer une cellule( de la colonne A) et faire en sorte que de cellule sur la même ligne fusionne collone F @ Q). Mon macro fonctionne. Mais voilà faut que j'exécute mon macro manuellement pour que le tout se produise.

    Cependant, j'aimerais activer cette macro lorsque je change la valeur des cellules dans la colonne A. Valeur qui sont dans un menu déroulant. ou que le macro soit actif en permanence lorsqu'on utilise la feuille Excel.

    Pour l'instant, toutes les ligne de code que j'ai trouvé sur le web avec soit du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ToggleButton1_Click()
    If Not Intersect(Target, Range("A53")) Is Nothing Then
            Select Case Range("A53")
                Case "Alerte": alerte
     
     
            End Select
    End If
    End Sub
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Activate(ByVal Target As Range)
        If Target.Address = "A53" Then
            Call Alerte
        End If
    End Sub
    Ne fonctionne pas.

    Il y'a surement quelque chose que je pige pas! J'ai essayé de modifier et adapter les ligne de code sans que rien fonctionne....

    Je suis largué..

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Si vous voulez que la macro réagisse à la sélection de la cellule A53, alors il faut faire une macro évènementielle (qui se déclenche à la sélection de la cellule) et supprimez les autres.

    Macro à coller dans le module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Address = "$A$53" Then Alerte
    End Sub
    Cdlt

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Par défaut
    Ça fonctionne toujours pas. Voici le codage dans VBA.
    La première partie fonctionne lorsque que je fait "exécuter" le macro.

    Mais je veux qu'il s'active automatiquement lorsque dans la la liste déroulante de la colonne A , "Alerte" est choisi. À noter que quasiment toutes les cellules de la colonne A ont cette liste déroulante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Alerte()
    ' Pour Alerte fusionner pour écrire
    For Each cell In Range("A1", Range("A65536").End(xlUp))
    If cell = "Alerte" Then
    cell.Offset(, 5).Resize(, 26).MergeCells = True
    End If
    Next cell
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Address = "$A$36" Then Alerte
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Alors copiez cette macro dans le module de la feuille et supprimez les autres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$A$36" And Target.Value = "Alerte" Then
            Target.Offset(, 5).Resize(, 26).MergeCells = True
        End If
    End Sub
    Cdlt

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Par défaut
    Arturo83 merci je crois que ça va simplifier le codage de tout mettre ensemble.

    Mais ça ne fonctionne toujours pas.



    Nom : Capture d’écran 2021-02-11 073953.png
Affichages : 152
Taille : 11,3 Ko

    À noter que j'ai changé la cellule A36 pour A34 dans ton code. A36 ayant déjà passé à travers de ma macro précédemment de façon manuelle.
    La colonne A étant des choix d'une liste déroulante.

    Je cherche à passer de la ligne 32 à ce que j'obtiens en ligne 36.

    Merci

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Par défaut
    Bon j'ai ré-essayer le codage de Arturo83 avec quelques modifs.
    J'ai ciblé une autre cellule qu'une en colonne A et quand j'écris manuellement "Alerte" le fusionnage se fait. Le codage d'Arturo83 fonctionne quand je le met dans feuille et non dans module.

    J'en déduit que le problème serait lié à la cellule avec sa liste déroulante. Comment procéder Alors?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête prenant une valeur dans un menu déroulant
    Par skerboeu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/12/2008, 11h44
  2. Récupérer une valeur d'un menu déroulant
    Par lupus83 dans le forum Langage
    Réponses: 6
    Dernier message: 08/03/2008, 22h01
  3. Faire renvoyer une valeur 'true' par une methode ?
    Par patthepat dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 10/05/2007, 05h51
  4. Réponses: 8
    Dernier message: 17/08/2006, 16h16
  5. Faire apparaître une valeur inexistante en DB
    Par CyBeRoN dans le forum Langage SQL
    Réponses: 18
    Dernier message: 09/11/2005, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo