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 :

Execution automatique d'une macro


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut Execution automatique d'une macro
    Bonjour,

    J'ai rédigé une macro dans l'éditeur de macro VBA et je voudrais qu'elle s'exécute automatiquement lorsque des données changent dans mon document ou à chaque fois que j'affiche la feuille concernée par la macro.

    Je ne sais pas quelle syntaxe utiliser.

    Merci d'avance pour vos réponses.

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut Macro fonction
    Il faut que votre macro soit une procédure de type Function alors vous vous en servez comme les fonctions internes d'Excel.

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut MERCI!!!
    Effectivement, je n'y avais pas pensé... et ça MARCHE!!!

    Mais dans le cas où ma macro ne renvoie pas de valeur, comment faire pour qu'elle s'exécute automatiquement (car du coup, je ne peux pas faire de fonction)? Admettons par exemple qu'il s'agisse d'une macro de mise en forme des cellules.

    Merci beaucoup en tout cas

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut Exécution automatique
    Utilisez les évenements des feuilles de calculs.
    Pour mettre du code lié à une feuille cliquez droit sur l'onglet > Visualiser code
    l'éditeur VBA s'ouvre
    tapez alors le code que vous désirez par exemple le bout de code que je met sera exécuter chaque fois que la feuille sera activée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub WorkSheet_Activate ()
    <div style="margin-left:40px">Code de la macro</div>
    End sub
    Il existe d'autre évenement que Activate il y a aussi Calculate par exemple.
    Vous les trouverez dans l'aide d'Excel

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Merci rjamin pour la réponse. Je viens d'essayer la solution avec l'évènement "Activate". Cela a fonctionné une fois mais ne fonctionne plus maintenant. J'ai beau sortir et rentrer sur la feuille, rien ne se produit...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut ouf...
    C'est bon, je viens de comprendre, j'avais fait une faute de frappe...

    En revanche, j'ai parcouru l'aide au sujet des évènements, et je n'en ai pas trouvé qui permettrait d'obtenir les résultats immédiatement ou au bout d'un certain que l'on pourrait définir dans le code.

    Cela existe-t-il?

  7. #7
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut Déclanchement de l'exécution d'une macro
    Voyez du coté de Time ou Timer qui donne l'heure system.
    Avec un variable de départ on peu calculer un temps en faisant la différence entre Actuel et Départ et si le temps est dépassé on appelle le code pour déclencher l'exécution.
    Mais pas sûr que c'est ce que vous voulez faire.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        'Ton code
    End Sub
    A chaque changement dans ta feuille, ton code s'exécutera.

    Tu peux aussi utliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     
    End Sub
    Dans ce cas, ton code se lancera à chaque changement de sélection de ta part sur la feuille (dès que tu changes de cellule avec ton curseur).

    Dans ton cas, c'est Workbook_SheetChange que tu dois utiliser. Tu avais simplement utilisé le mauvais événement.

    A+

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut Oups!!
    Je viens d'essayer un SheetSelectionChange ou un SheetChange et j'ai peur d'avoir créé un code redondant. Du coup, la feuille de calcul se s'arrête pas de calculer et je n'arrive pas à la stopper. C'est ennuyeux parce le curseur de la souris se transforme en sablier et je ne peux plus rien faire.

    Y aurait-il une manip' pour casser le calcul?

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Yvanou et le forum
    Y aurait-il une manip' pour casser le calcul?
    "Quand j'accélère trop, je ne maîtrise plus ma trajectoire... comment faire pour utiliser le frein en même temps"
    Moi j'opterai pour deminuer l'accélération.

    Si tu donnais ton code, on pourrait sans doute l'arranger de manière à ne pas créer une boucle infinie.
    A+

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut AAaahhh...
    C'est bon, problème de calcul infini résolu: il fallait tout simplement appuyer sur Esc

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
    Dim Plage As Range
    Dim Cel As Range
     
    Dim ligne As Integer
     
    Dim Taille_List As Integer
    Taille_List = Nbre_Ligne
     
    Set Plage = Range(Cells(7, 15), Cells((Taille_List + 6), 15))
    'défini la plage sur laquelle le code doit passer
     
    For Each Cel In Plage
        If IsEmpty(Cel) Then
     
            ligne = Cel.Row
     
            If Cells(ligne, 13) = "Urgence" _
            Or Cells(ligne, 13) = "Important" _
            Or (Cells(ligne, 13) = "Intermédiaire" And Cells(ligne, 22) = "Urgence") _
            Then
     
                Cel = "Phase 1"
     
            ElseIf Cells(ligne, 13) = "Intermédiaire" _
            Then
     
                Cel = "Phase 2"
     
            ElseIf (Cells(ligne, 13) = "-NC-" And Cells(ligne, 22) = "Intermédiaire") _
            Then
     
                Cel = "Phase 3"
     
            Else: Cel = "-NR-"
     
            End If
        End If
     
    Next Cel
     
    End Sub
    Bon, je ne comprend toujours pas ce qui ne fonctionne pas dans mon code. J'ai pourtant mis l'évènement SheetChange mais rien ne se produit dans ma feuille lorsque je change quelquechose.

    Je voudrais créer un code qui:

    - rempli les cellules de "Plage" en fonction du contenu d'autres cellules de la feuille
    - me permet, si j'ai envie, de mettre mon propre contenu dans ces cellules
    - que les cellules se mettent à jour automatiquement si, par exemple, quelque chose change dans une des cellules concernée par les critères ou si j'efface le contenu d'une des cellules de "Plage".

    J'espère avoir été clair...

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Yvanou et le forum
    Bon, je ne comprend toujours pas ce qui ne fonctionne pas dans mon code.
    Moi non plus, il semble correct
    - que les cellules se mettent à jour automatiquement si, par exemple, quelque chose change dans une des cellules concernée par les critères ou si j'efface le contenu d'une des cellules de "Plage".
    Tu n'utilises pas l'adresse de la/les cellule(s) modifiée(s) => quelque soit la cellule modifiée, elle lance la macro et quelque soit la feuille. à chaque cellule modifiée, suivant la valeur de Nombre de la variable "Nbre_Ligne" elle recalcule toute ta liste : ce qui peut être extrêmement lourd si Nbre_Ligne est grand (de l'ordre de factorielle(Nbre_Ligne)), mais ce n'est pas infini.

    Plusieurs solution sont possible pour éviter cette boucle : utiliser target me semble indispensable. Un Enableevents me semble indiqué (avec gestion des erreurs), mais l'utilisation de Target me semble préférable : seule la modification d'une des cellules de la liste, ou d'une des cellules étant testés peut influencer la liste, et doit faire l'objet du traitement de la liste
    A+

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    Oki, merci, je vais essayer de revoir mon code avec les Targets.

Discussions similaires

  1. [AC-2000] execution automatique d'une macro
    Par antakini dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/07/2012, 10h55
  2. [Toutes versions] execution automatique d'une macro à l'ouverture
    Par loic072 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/11/2011, 14h10
  3. [XL-2007] execution automatique d'une macro
    Par bird007 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/06/2010, 12h31
  4. execution automatique d'une macro dans une feuille
    Par lilly91 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/12/2009, 13h54
  5. exécution automatique d'une macro
    Par faayy dans le forum Access
    Réponses: 12
    Dernier message: 15/06/2005, 14h52

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