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 :

Optimiser boucle de recherche [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2011
    Messages : 115
    Par défaut Optimiser boucle de recherche
    bonjour a tous,
    Je fais appel a vous aujourd'hui car j'ai un petit soucis d'optimisation avec mon code que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub supprimerlignemot()
    Application.ScreenUpdating = False
    Dim I     As Long
    Dim Plage As Range
    Set Plage = Range("E2:E" & Range("E65536").End(xlUp).Row)
    For I = Plage.Cells.Count To 1 Step -1
        If InStr(Plage.Cells(I).Text, "Remplacement") Then
        Plage.Cells(I).EntireRow.Delete
        End If
    Next
    Application.ScreenUpdating = True
    End Sub
    Le code ci-dessus permet de regarde sur chaque ligne dans la colonne E si il n'y a pas un mot en particulier dans la cellule et de supprimer la ligne si il est présent.
    Le code s’exécute sur la totalité tu tableau et prend pas mal de temps (plusieurs minutes). Est-il possible d’exécuter le code seulement sur la longueur du tableau ?

    Merci !

  2. #2
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    Hello

    essaie d'utiliser un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while not Range("E:E").find("...") is nothing
    ca sera peut-etre plus rapide (à tester)
    ++
    Nico

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2011
    Messages : 115
    Par défaut
    salut nicopilami et merci pour ta réponse.
    Mes cases ne contiennent pas uniquement le mot que je cherche, il est comprit dans une phrase a chaque fois differente fera t-il l'affaire ? (je ne peux pas encore le tester)

  4. #4
    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,

    Un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub supprimerlignemot()
    Dim Plage As Range
        Application.ScreenUpdating = False
        Set Plage = Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row)
        While Not Plage.Find("Remplacement", LookIn:=xlValues, lookat:=xlPart) Is Nothing
            Plage.Find("Remplacement", LookIn:=xlValues, lookat:=xlPart).EntireRow.Delete
        Wend
        Set Plage = Nothing
        Application.ScreenUpdating = True
    End Sub
    Avec le paramètre lookat:=xlPart, on détecte une correspondance avec une partie du texte recherché.

    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2011
    Messages : 115
    Par défaut
    Merci gFZT82 c'est tout a fait ce que je cherchais : le rows.count que je n'ai pas sut sortir.
    Encore une fois le forum a réussi a m'aider.
    Merci a tous et bonne journée

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

Discussions similaires

  1. Boucle If-recherche dans une BD
    Par ladywhite dans le forum ASP.NET
    Réponses: 11
    Dernier message: 20/05/2007, 09h53
  2. Réponses: 1
    Dernier message: 16/03/2007, 14h26
  3. [Optimisation] Boucles for ou while et mysql_result ?
    Par sorenson dans le forum Langage
    Réponses: 5
    Dernier message: 22/12/2006, 09h55
  4. Optimisation requete de recherche
    Par Greg84 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 04/08/2006, 09h29
  5. Optimisation d'une recherche et mise à jour
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/01/2005, 18h38

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