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 :

Déclenchement auto d'une macro? [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut Déclenchement auto d'une macro?
    Bonjour à tous,

    Voici mon problème :
    Avec une fonction SI je vais chercher une info (dans une autre feuille) à mettre dans la case "I22".
    Si cette info vaut "100%" alors je veux mettre "0" dans J22
    Sinon mettre "3" dans J22.

    Je veux faire ça sous forme de macro automatique (sans cliquer sur un bouton de commande).

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "I22" Then
        If Target = "100%" Then
            [J22].Value = "0"
        ElseIf Target = "75%" Then
            [J22].Value = "3"
        End If
    End If
    End Sub
    Et ça ne me fait rien du tout

    Je suppose que tout vient de la déclaration de ma première ligne "Worksheet_Change" qui n'est pas bonne ?

    Merci pour votre aide!
    Aud- [débutante]

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Change simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Target = "100%" Then
    par
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ElseIf Target = "75%" Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ElseIf Target = 0.75 Then
    ++
    Minick
    ++
    Minick

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    je viens d'essayer ta solution (j'ai même essayé avec des "" et aussi avec des Like) mais ça ne me fait toujours pas les modifications automatiquement

    Le pire c'est que j'ai essayé de mettre un point d'arrêt dans la macro et en fait il se trouve que cette macro n'est jamais lue!

    une autre idée?

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Tu es certain d'avoir mis le code dans la feuille ou tu veux que le code evenementielle se lance
    et pas dans un module???

    ++
    Minick
    ++
    Minick

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    yep yep, je suis certaine que c'est dans la bonne feuille et pas dans un module

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Bizarre

    J'ai fait le test et je n'ai pas de probleme.

    Dans un autre code n'aurais-tu pas desactive les evenements
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    ++
    Minick
    ++
    Minick

  7. #7
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Re bonjour

    essaies de placer ton code dans l'évènement: Worksheet_SelectionChange

    a plus

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    alors je confirme que je n'ai rien désactivé et le fait de changer en SelectionChange ne change rien à mon problème

    Je comprends pas ce qui se passe!

  9. #9
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour canary Gégé29 Minick le forum a adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("i22")) Is Nothing Then
    If Target.Text = "100%" Then [J22].Value = 0 Else [J22].Value = 3
    End If
    End Sub
    SALUTATIONS

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    si je clique sur la case I22 alors le 3 apparait (si c'est 75%) mais dans mon application, je n'ai pas à cliquer dessus pour le faire apparaitre....

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    désolée Laeticia mais ta solution ne fonctionne pas non plus :s

    PS: ça sert à quoi "Option Explicit" ?

  12. #12
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re, option explicit sert a déclarer les variable explicitement par défaut il se met automatiquement.dans chaque module cela évite de le rajouter. dans le cas présent il sert a rien pas de variable par contre je comprends pas bien se que tu veus faire!!!
    SALUTATIONS

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    bonjour à tous, le forum,

    perso , je n'ai pas compris la cohérence entre l'énoncé et le code.

    vous parlez d'aller chercher une info dans une autre feuille, mais le code n'y fait jamais référence; l'info est à placer dans la cellule "I22" du feuillet courant mais le code inscrit l'info dans la cellule "J22".

    Pour rendre automatique, la récupération de l'info; il y a à mon sens deux événements à traiter :
    1) La modification l'info dans l'autre feuillet, passant de "100%" à "75%" et inversement (Worksheet_Change()) de l'autre feuillet

    2) L'activation du feuillet devant récupérer l'info (WorkSheet_Activate())

    puisque ces deux événements, lance la même procédure; créer une procédure public qui sera appelée par les deux événements.

  14. #14
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Quand on ne comprend plus rien, il faut peut-être relire la question.

    Comment vat-tu chercher une info (dans une autre feuille) à mettre dans la case "I22"?

    Pourquoi ne pas mettre une fonction SI dans la cellule J22?

    Les solutions les plus simples sont parfois les meilleurs.

    a quatre on devrait y arriver

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Alors je récapitule :

    Mon problème :
    Avec une fonction SI je vais chercher une info (dans une autre feuille) à mettre dans la case "I22".
    Si cette info vaut "100%" alors je veux mettre "0" dans J22
    Sinon mettre "3" dans J22.
    Je veux faire ça sous forme de macro automatique (sans cliquer sur un bouton de commande).

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "I22" Then
        If Target = 1 Then
            [J22].Value = "0"
        ElseIf Target = 0.75 Then
            [J22].Value = "3"
        End If
    End If
    End Sub
    Et ça ne me fait rien du tout

    Si je change la première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    en :
    [CODE]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cette fois il faut que je clique sur I22 pour que le nombre en J22 apparaisse...

    Moi j'ai simplement besoin que le nombre en J22 apparaisse automatiquement.
    Comment faire ?

    Voici la ligne de code pour aller chercher l'info de la case I22 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(1;AnalyseF3!$J$35:$T$154;EQUIV("Indice fiabilité";AnalyseF3!$J$3:$T$3;0);FAUX)
    Explication : je vais chercher dans la feuille AnalyseF3 la valeur se trouvant dans "Indice de fiabilité" et je vais mettre cette valeur dans I22 qui est dans la feuille "Synthèse".

  16. #16
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    pourquoi ne pas mettre la fonction suivante dans J22?


  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    sauf qu'en vrai j'ai plus que 2 valeurs :
    100% => 0
    75% => 3
    50% => 7
    25% => 15

    comment cela peut s'écrire avec une condition SI ?

  18. #18
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut Euréka
    Tout à fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(I22=100%;0;SI(I22=75%;3;SI(I22=50%;7;SI(I22=25%;15;""))))

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    En effet! j'avoue... j'aime me compliquer l'existence! lol
    Merci pour cette solution toute simple

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

Discussions similaires

  1. Auto desactiver une macro apres avoir cliqué dessus
    Par pimousse1976 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/08/2014, 23h18
  2. [XL-2007] déclenchement périodique d'une macro
    Par norman5 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/06/2011, 21h22
  3. déclenchement conditionnel d'une macro
    Par lafron dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/12/2009, 21h48
  4. [XL-2007] Enregistrement auto d'une macro
    Par gksig dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2009, 11h04
  5. Déclenchement auto d'une fonction sans intervention humaine
    Par lodan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/03/2007, 17h31

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