Menu

Un problème d'appel de macro [Résolu]

Messages postés
9
Date d'inscription
jeudi 21 mars 2019
Statut
Membre
Dernière intervention
15 mai 2019
- - Dernière réponse : Moldude
Messages postés
9
Date d'inscription
jeudi 21 mars 2019
Statut
Membre
Dernière intervention
15 mai 2019
- 29 mars 2019 à 19:04
Bonjour,

Je suis (de nouveau) perdu avec une macro. Voici mon problème je cherche à appeler une macro en fonction du contenu d'une cellule. Ce contenu est toujours sous forme de texte (par exemple HER5). En farfouillant j'ai trouvé un script récurent mais de un, il ne fonctionne pas. Et de deux si il fonctionnait, il se ferait de manière automatique et je ne peux pas l'affecter à un bouton (je pense que c'est du à "Private Sub").
Est ce que quelqu'un pourrait m’éclairer sur pourquoi le tout ne fonctionne pas et comment affecter ce genre de macro a un bouton.
Voici ce que j'ai :

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("Q3") = "HER3" Then

Call HERregion

End If

If Range("Q3") = "HER5" Then

Call HERdep

End If

End Sub

D'avance merci et bonne journée.

PS: je précise aussi que le contenu de la cellule Q3 a plusieurs valeur possible et que chacune appelle une macro différente. Et également que mes macro lancée sans ceci fonctionnent tout à fait.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
1371
1
Merci
Bonjour,
Mettre cette macro dans un module
Sub Appel()
    If Range("Q3") = "HER3" Then
        Call HERregion
    ElseIf Range("Q3") = "HER5" Then
        Call HERdep
    End If
End Sub

Insérez un bouton Contrôle de formulaire et affectez cette macro a ce bouton

Pour ce faire: clic droit sur le bouton et Affecrter une macro…
Au cas ou vous ne sauriez pas

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 39335 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f894009
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
1
Merci
Bonjour,

La proposition est bonne, toutefois j'ajouterais ceci en complément ...

Selon la description, je cite : "je précise aussi que le contenu de la cellule Q3 a plusieurs valeur possible"

Le Select Case me paraît plus approprié et plus facile à entretenir.

Option Explicit
'

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Cible As Range
    
    Set Cible = Range("Q3")
    
    ' Le changement provient-il de la cellule Q3
    If Not (Application.Intersect(Target, Cible) Is Nothing) Then
        ' Si oui
        Select Case Cible.Value
            Case "HER3"
                Call HERregion
            Case "HER5"
                Call HERdep
            Case "Etc..."
                Call HERetc...
        End Select
    End If

End Sub
'


Private Sub HERregion()
    MsgBox "Methode HERregion"
End Sub
'

Private Sub HERdep()
    MsgBox "Methode HERdep"
End Sub

Private Sub HERetc...()
    MsgBox "Methode HERetc..."
End Sub



Disons simplement une autre façon de faire.

K

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 39335 internautes nous ont dit merci ce mois-ci

f894009
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
1371 -
Bonjour,

Certes, certes mais pour les puristes, le select case est plus lent que le if then else mais c'est jouable si pas trop de tests. Tout est relatif quand il est question de vitesse d'exécution en fonction de l'utilisateur
Kalissi
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20 -
Tout à fait d'accord :-)
Commenter la réponse de Kalissi
Messages postés
9
Date d'inscription
jeudi 21 mars 2019
Statut
Membre
Dernière intervention
15 mai 2019
0
Merci
Bonjour,
Merci pour le script il fonctionne parfaitement, est court et facile d'accès c'est pile ce qu'il me fallait.
La seconde méthode est aussi intéressante je la garde sous le coude opur des cas plus complexes.
En tout cas merci a vous deux pour la pertinence de vos réponse et votre rapidité.
Commenter la réponse de Moldude