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 de code [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    Par défaut Amélioration de code
    Bonjour,

    Je cherche le meilleur moyen de réduire ce morceau de code, surtout pour que cela soit rapide pour ajouter des termes afin de supprimer les lignes supplémentaires en évitant d'avoir 200 lignes de codes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 500 To 3 Step -1
                If (Worksheets("Feuil3").Cells(i, 3)) Like "*Agent*" Then Worksheets("Feuil3").Rows(i).Delete
                If (Worksheets("Feuil3").Cells(i, 3)) Like "*Infirmier*" Then Worksheets("Feuil3").Rows(i).Delete
                If (Worksheets("Feuil3").Cells(i, 3)) Like "*Policier*" Then Worksheets("Feuil3").Rows(i).Delete
                If (Worksheets("Feuil3").Cells(i, 3)) Like "*Technicien*" Then Worksheets("Feuil3").Rows(i).Delete
    Next i

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    entraîne-toi manuellement par filtre … Une fois les données affichées correspondant uniquement aux lignes à supprimer,
    repartir du début en activant l'Enregistreur de macros : une base de code est livrée sur un plateau !

    Une variante de ton code (mais moins bonne que le filtre) toujours avec le BA-BA d'Excel,
    cette fois au lieu d'un filtre la fonction de feuille de calculs EQUIV (Match en VBA) :

    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
        VA = [{"*Agent*","*Infirmier*","*Policier*","*Technicien*"}]
        Application.ScreenUpdating = False
     
        With Worksheets("Feuil3")
            With Range(.[C1], .Cells(.Rows.Count, 3).End(xlUp))
                For Each V In VA
                    Do
                        VR = Application.Match(V, .Cells, 0)
                        D% = IsNumeric(VR)
                        If D Then .Parent.Rows(VR).Delete
                    Loop While D
                Next
            End With
        End With
     
        Application.ScreenUpdating = True

    Mais au lieu de modifier le code, il est plus judicieux de dédier une feuille de paramétrage pour la liste à supprimer …

    ______________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre confirmé
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    Par défaut
    Merci bien pour ce retour Marc.

    Je crois que je vais me tourner vers ta solution n°1, celle de l'enregistreur.

    Car le code que tu m'a donné ne pourra pas convenir dans mon cas. En effet, il n'accepte pas plus de 17 ou 18 identificateurs. Or, j'en ai besoin de bien plus.
    Quant au fait de passer par
    dédier une feuille de paramétrage pour la liste à supprimer...
    Je ne pense pas que je saurai faire ça pour l'instant ^^

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Hexa82 Voir le message
    Car le code que tu m'a donné ne pourra pas convenir dans mon cas. En effet, il n'accepte pas plus de 17 ou 18 identificateurs. Or, j'en ai besoin de bien plus.
    Aucun souci pour en coder bien plus ! Il suffit de les placer dans une variable puis d'y appliquer la méthode Evaluate


    Citation Envoyé par Hexa82 Voir le message
    Quant au fait de passer par dédier une feuille de paramétrage pour la liste à supprimer...
    Je ne pense pas que je saurai faire ça pour l'instant
    C'est pourtant la solution évidente, la plus simple tant côté utilisateur que du côté programmation !

    Créer une plage nommée ou une table (ListObject) dans Excel est de niveau grand débutant !

    Et même sans juste en réservant une colonne … Peu importe l'évolution de la liste, il n'y aura pas besoin de modifier le code !

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

Discussions similaires

  1. Amélioration de code
    Par Devilju69 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2008, 15h01
  2. Optimisations et Améliorations de code
    Par womannosky dans le forum Langage
    Réponses: 19
    Dernier message: 02/07/2008, 15h05
  3. [Optimisation]Peut-on améliorer ce code ?
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/08/2007, 15h43
  4. [Tableaux] Amélioration de code (if)
    Par Sir Tengu dans le forum Langage
    Réponses: 3
    Dernier message: 24/12/2006, 00h26
  5. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 20h13

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