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 :

procédure recherche et suppression [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut procédure recherche et suppression
    bonjours

    j'ai écrit un code mais il ne marche qu'a moitié et je ne sais pas pourquoi
    normalement il devrait me supprimer des lignes dans deux feuilles mais il ne me le fait que sur une feuille. Je dois dire que ça m'embête un peu.

    donc voilà le code

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub suppession_doublons()
    Dim plage, plagebis As Range
    Dim derlig As Long
    Dim lavaleur As Variant
    Dim rg As Range
     
     
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    Set plage = Range(Cells(1, 1), Cells(derlig, 5))
    tableau = plage.Value
        For i = 1 To derlig
            For j = 2 To 5
                For Each sh In Worksheets(Array("EXP-DIF", "AAR", "RST"))
                If tableau(i, 2) = 1 Then
                   If tableau(i, 3) = 1 Or tableau(i, 4) = 1 Then
                        lavaleur = tableau(i, 1)
                            If tableau(1, j) = sh.Name Then
                                sh.Select
                                    Range("A:A").Select
                                    For Each rg In Selection
                                        If rg = lavaleur Then
                                        rg.EntireRow.Delete
                                        End If
                                    Next rg
                             End If
                   End If
                End If
                Next sh
               Next j
        Next i
    End Sub
    je pense que c'est peut être dû à l'ordre des boucles mais je ne sais pas comment faire

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Bonjour,

    Je pense qu'avant de deleter, tu dois activer la feuille !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Worksheet("nom de la feuille 1").Activate
    rg.EntireRow.Delete
    Worksheet("nom de la feuille 2").Activate
    rg.EntireRow.Delete

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    non en faite non j'ai fait une petite erreur

    mon programme fonctionne nickel

    BUT!!!!

    il est vraiment trop long à charger

    est ce qu'il est possible de le simplifier au maximum pour gagner du temps

    voila merci d'avance

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Huitre,

    Ce qui nécessite beaucoup de ressource, à mon avis, c'est ton balayage de ta colonne A.
    Ceci outre le fait que le ne sert à rien, comme presque toujours.

    Essaie plutôt d'adapter l'aide en ligne de Findnext

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    j'ai remodifié mon programme (je n'ai pas utiliser le findnext)
    j'ai l'impression que ça s'execute plus vite mais ça ne supprime rien

    voilà les changement effectué ( en vert )


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub suppession_doublons()
    Dim plage, plagebis As Range
    Dim derlig, derlg As Long
    Dim lavaleur As Variant
    Dim rg As Range
    
    
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    Set plage = Range(Cells(1, 1), Cells(derlig, 5))
    tableau = plage.Value
        
        For i = 1 To derlig
            For j = 2 To 5
                For Each sh In Worksheets(Array("EXP-DIF", "AAR", "RST"))
                If tableau(i, 3) = 1 Then
                   If tableau(i, 2) = 1 Or tableau(i, 4) = 1 Then
                        lavaleur = tableau(i, 1)
                            If tableau(1, j) = sh.Name Then
                                sh.Select
                                    derlg = Range("A" & Rows.Count).End(xlUp).Row
                                    Set plagebis = Range(Cells(1, 1), Cells(derlig, 6))
                                    tableaubis = plagebis.Value
                                    For k = 1 To derligne
                                        If tableaubis(i, 1) = lavaleur Then
                                        tableaubis(i, 1).Select
                                        Selection.EntireRow.Delete
                                        End If
                                    Next k
                             End If
                   End If
                End If
                Next sh
               Next j
        Next i
    End Sub

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Comme tu voudras.

    De plus, ta boucle utilise une variable k et ton code à l'intérieur de celle-ci utilise une variable i.

    Encore une fois, arrête les

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/11/2006, 11h54
  2. Réponses: 17
    Dernier message: 08/06/2006, 09h34
  3. [IO]Recherche et suppression de lignes
    Par anthyme dans le forum Général Python
    Réponses: 9
    Dernier message: 20/04/2006, 17h47
  4. [VB]Recherche et suppression de caracteres
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 09/02/2006, 14h56

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