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 utilisée trop longue et surement mal utilisée.. [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Supply Chain Manager
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Supply Chain Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Par défaut Macro utilisée trop longue et surement mal utilisée..
    Bonjour,

    Etant débutant en VBA je m'en remets à vos conseils.
    Je souhaite mettre en place un fichier possédant une macro pour les entrées en sorties de stock (sans historique).

    Ci-dessous la macro utilisée pour une ligne.

    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
    Private Sub Worksheet_Change(ByVal target As Range)
     
        If target.Count > 1 Then Exit Sub
        Application.EnableEvents = False
        If target.Address = "$H$5" Or target.Address = "$F$5" Then
            If target.Address = "$H$5" Then
                Range("G5") = Range("G5") + target
            ElseIf target.Address = "$F$5" Then
                Range("G5") = Range("G5") - target
            End If
            target = ""
        End If
     
    Application.EnableEvents = True
    End Sub
    Je l'ai testé elle marche très bien et c'est le résultat que je souhaite obtenir.
    Malheureusement, mon tableau excel ne possède pas qu'une seule ligne mais 600.. j'ai essayé de le faire pour chaque ligne mais impossible de dépasser la ligne 180 pour cause de procédure trop longue.
    Je m'en remets donc à vos conseils si je peux la réduire ou l'utiliser autrement..

    Merci
    Baptiste

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonsoir

    Si j'ai bien compris ton besoin

    si tu ne met à jour que la ligne active

    Je ne comprend pas ton problème.

    A +

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par Combaz67 Voir le message
    j'ai essayé de le faire pour chaque ligne mais impossible de dépasser la ligne 180
    Je ne sais pas comment tu as essayé mais en utilisant la macro suivante tu ne vas pas être bridé et elle fonctionne sur toutes les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal target As Range)
     
        If target.Count > 1 Then Exit Sub
        If target.Row < 5 Then Exit Sub ' ligne début traitée
        Application.EnableEvents = False
        If target.Column = 8 Then ' "H"
            Cells(target.Row, "G").Value = Cells(target.Row, "G").Value + target.Value
            target = ""
        ElseIf target.Column = 6 Then  ' "F"
            Cells(target.Row, "G").Value = Cells(target.Row, "G").Value - target.Value
            target = ""
        End If
        Application.EnableEvents = True
    End Sub
    Edit : un stock géré de cette façon n'a aucune chance de fournir des résultats justes (jusqu'à preuve du contraire bien sûr !)

  4. #4
    Candidat au Club
    Homme Profil pro
    Supply Chain Manager
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Supply Chain Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Par défaut
    C'est ce qu'il me fallait ! Merci anasecu ! Bien vu l'utilisation sur les colonnes, c'était le blocage.

    Pour gérer le stock je suis d'accord en un sens, mais pour initier de nouvelles personnes, je préfère commencer ainsi !
    La démarche est d'inscrire les entrées et sorties pour éviter les écarts très important pour l'inventaire de fin d'année

    Citation Envoyé par anasecu Voir le message
    Bonjour,


    Je ne sais pas comment tu as essayé mais en utilisant la macro suivante tu ne vas pas être bridé et elle fonctionne sur toutes les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal target As Range)
     
        If target.Count > 1 Then Exit Sub
        If target.Row < 5 Then Exit Sub ' ligne début traitée
        Application.EnableEvents = False
        If target.Column = 8 Then ' "H"
            Cells(target.Row, "G").Value = Cells(target.Row, "G").Value + target.Value
            target = ""
        ElseIf target.Column = 6 Then  ' "F"
            Cells(target.Row, "G").Value = Cells(target.Row, "G").Value - target.Value
            target = ""
        End If
        Application.EnableEvents = True
    End Sub
    Edit : un stock géré de cette façon n'a aucune chance de fournir des résultats justes (jusqu'à preuve du contraire bien sûr !)

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

Discussions similaires

  1. [XL-2007] Macro beaucoup trop longue
    Par Orhleil dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/08/2011, 17h02
  2. [AC-2003] Tuer une macro trop longue à s'exécuter
    Par reeenooo dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/10/2009, 18h43
  3. GLFW caché utilise trop de ressource
    Par SpongeBob dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 15/06/2009, 12h18
  4. Application utilise trop de mémoire
    Par blaster681 dans le forum Général Java
    Réponses: 20
    Dernier message: 21/03/2009, 19h22

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