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 :

Amélioration code VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut Amélioration code VBA
    Bonjour,

    J'aurais besoin de vos lumières en VBA pour m'aider à améliorer un code me permettant de faire la chose suivante :

    J'ai dans une première feuille des noms de pays associés à des valeurs.
    Dans une deuxième feuille, j'affiche ou je masque les lignes correspondant à ces pays en comparant ces valeurs à une valeur de référence définie sur la feuille 2 (voir le fichier joint pour illustration).

    Pour l'instant mon code correspond à une macro qui se déclenche lorsque l'on clique sur le bouton "OK". A la place, j'aimerais que la macro soit lancée à chaque fois que je modifie la valeur de référence. Comment fait-on cela ?

    Aussi, mon vrai fichier contenant beaucoup de lignes, je me demandais s'il n'y avait pas une alternative plus efficace que ce que j'ai pour le moment. Quelque chose qui ne passerait pas les lignes une à une peut-être ?

    Merci !

    Hélixe.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux utiliser l'évènement Change de la feuille 2 pour détecter un changement de la valeur de C2.
    Pour le deuxième point, la désactivation de l'écran devrait te faire gagner du temps.
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ligne As Integer
        'ActiveSheet.Unprotect
        If Target.Count = 1 And Target.Address = "$C$2" Then
            Application.ScreenUpdating = False
            For ligne = 6 To 11
                'Si la valeur saisie est supérieure au code du pays, on masque la ligne du pays
                If Range("C2") > WorksheetFunction.VLookup(Cells(ligne, 1).Value, Sheets("Feuil1").Range("A1:B7"), 2, False) Then
                    Rows(ligne).EntireRow.Hidden = True
                Else
                    Rows(ligne).EntireRow.Hidden = False
                End If
            Next
            Application.ScreenUpdating = True
        End If
        'ActiveSheet.Protect
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Améliorer code VBA pour mise en forme
    Par majothi dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/12/2012, 08h20
  2. Amélioration d'un code VBA
    Par Jerome25 dans le forum VBA Access
    Réponses: 7
    Dernier message: 02/08/2011, 15h43
  3. Amélioration code VBA
    Par amelyfred dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2010, 14h28
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

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