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 :

Macro s'executant à chaque changement et crash [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 3
    Par défaut Macro s'executant à chaque changement et crash
    Bonjour,

    Je suis assez débutant dans le language VBA (je suis plus familier avec python) et je cherche à réaliser une feuille excel dans laquelle les trois premiers champs (par ex A1, B1 et C1) serait destiné à écrire des informations qui seraient reporter automatiquement à un endroit spécifique dans ma feuille à la suite d'autres. Par exemple, si j'écris "Jules" en A1 il va se reporter en D23 avant de disparaitre de la case. Si je réécris "Vernes" dans la case A1, il va se reporter en D24 avant de disparaitre de A1. Problème: dès que je remplis la case A1, ça se reporte là où je veux, ça disparait de A1 mais mon Excel crash ! Voici mon code que je rentre dans visualiser le code en clique droit sur la feuille Excel:

    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
     
        Set KeyCells = Range("A1:C1")
     
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
               Is Nothing Then
     
            derniereLigne = Cells(Rows.Count, 5).End(xlUp).Row + 1
     
            Dim valeura As String
     
            valeura = Cells(1, 1)
     
            Cells(derniereLigne, 5) = valeura
            Range("A1").Clear
     
     
    End If
    End Sub
    C'est un code assez basique pour l'instant mais comme ça ne marche pas déjà pas sans crash.. N'ayant pas les connaissances nécessaires dans le domaines, j'espère que vous saurez m'aider !

    Merci pour votre lecture,
    Lucas

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 438
    Par défaut
    Bonjour,

    Cela vient du fait que les instructions relancent la routine Worksheet_Change. Une solution:
    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
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
        Dim derniereLigne As Long
        Dim valeura As String
        Set KeyCells = Range("A1:C1")
        If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
            derniereLigne = Cells(Rows.Count, 5).End(xlUp).Row + 1
            valeura = Cells(1, 1)
            Application.EnableEvents = False  '--- sans cela, les 2 instructions suivantes relanceront Worksheet_Change
            Cells(derniereLigne, 5) = valeura
            Range("A1").Clear
            Application.EnableEvents = True
        End If
    End Sub
    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 3
    Par défaut
    Merci pour le temps que tu as pris pour m'aider Eric ! Ce changement me permet de faire ce que je veux précisément

    Je vais aller me renseigner plus amplement sur les différentes instructions que j'ai utilisées pour mieux comprendre leur fonctionnement !

    Cordialement,
    Lucas

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

Discussions similaires

  1. [XL-2016] Crash du macro à l'execution
    Par Orcrux dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/04/2018, 19h18
  2. [XL-2013] Script de macro pour création d'onglet à chaque changement d'informations
    Par STAN60 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2016, 10h39
  3. lancement de macro a chaque changement de valeur d'une cellule
    Par bitissa1991 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/06/2016, 13h15
  4. [AC-2007] Lancer en automatique des macros à chaque changement de valeur
    Par MAO2000 dans le forum Access
    Réponses: 2
    Dernier message: 15/02/2015, 12h08
  5. [VBA]lancer une macro à chaque changement de cellule dans une feuille
    Par freddddd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h58

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