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 de comparaison de valeurs et suppression ligne


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut MACRO de comparaison de valeurs et suppression ligne
    Bonjour,

    Je débute en programmation VBA et en programmation tout court d’ailleurs aussi.

    J'essais de créer un programme Excel permettant de me créer des listes de pièces à expédier correspondant à une nomenclature selon leur lieu de stockage.

    Je vous joint une extrait de mon fichier sur lequel je bloque.

    Voici mon problème :

    J'ai une première feuille nommée LISTE qui correspond à une liste de pièces à servir. J'ai crée sur cette feuille un bouton "Nettoyage" qui doit ne me laisser dans cette liste que les références de pièces présentent dans la feuille DATA, puis SUPPRIMER les références présentent dans la feuille DB SITE.

    Je crois avoir trouvé le problème de la macro associé au bouton "NETTOYAGE" :
    toutes les références sont supprimées car dans tous les cas, même si ma condition est remplie une fois dans la boucle, elle sera ensuite fausse plus tard donc la ligne sera supprimée.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub CommandButton_nettoyage_Click()
     
    Application.ScreenUpdating = False
     
    ' selection des pièces présentent sur site
     
    Dim X As Integer
    Dim Y As Integer
     
    'Je remonte de la derniere ligne jusqu'a la ligne 10
        For X = Sheets("LISTE").Range("A1000").End(xlUp).Row To 10 Step -1
            For Y = Sheets("DATA").Range("A1000").End(xlUp).Row To 1 Step -1
        'si les valeurs sont différentes
                If Sheets("LISTE").Range("A" & X) <> Sheets("DATA").Range("A" & Y) Then
                'Je supprime la ligne entière
                    Rows(X).EntireRow.Delete
                End If
            Next Y
        Next X
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''Effacement des pièces en DB sur le site d'intervention''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    Dim I As Integer
    Dim J As Integer
     
     
     
    'Je remonte de la derniere ligne jusqu'a la ligne 1
    For I = Sheets("LISTE").Range("A1000").End(xlUp).Row To 10 Step -1
        For J = Sheets("DB SITE").Range("A1000").End(xlUp).Row To 1 Step -1
        'si dans la cellule A il y a la valeur que je cherche
            If Sheets("LISTE").Range("A" & I) = Sheets("DB SITE").Range("A" & J) Then
                'Je supprime la ligne entière
                Rows(I).EntireRow.Delete
            End If
        Next J
    Next I
     
     
     
    Application.ScreenUpdating = True
     
            MsgBox "Nettoyage  effectué !", _
            vbExclamation, "FELICITATION !"
     
    End Sub

    J'ai essayé d'utiliser une condition Booléenne dans une macro associée au bouton "NETTOYAGE 2", mais je ne sais pas du tout comment écrire cette macro...

    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
    Private Sub CommandButton_nettoyage2_Click()
     
    Dim condition As Boolean
     
        condition = True Or False
     
    Dim X, Y As Integer
     
        'Je remonte de la derniere ligne jusqu'a la ligne 10
        For X = Sheets("LISTE").Range("A1000").End(xlUp).Row To 10 Step -1
            For Y = Sheets("DATA").Range("A1000").End(xlUp).Row To 1 Step -1
        'si les valeurs sont différentes
                condition = Sheets("LISTE").Range("A" & X) = Sheets("DATA").Range("A" & Y)
                If condition = False Then: Rows(X).EntireRows.Delete
                End If
            Next Y
        Next X
     
    End Sub
    Peut être auriez vous une solution à mon problème ?

    Je vous remercie,

    Julien
    Pièces jointes en attente de validation Pièces jointes en attente de validation

Discussions similaires

  1. [XL-2010] Suppression colonne suivant valeur cellule 1ère ligne (en-tête)
    Par 2lester dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/08/2017, 21h11
  2. [XL-2007] macros suppression ligne
    Par ronin.01 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/03/2011, 19h35
  3. [XL-2003] Insertion de ligne vierges, recopie de valeur et suppression de ligne référente.
    Par zewho dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/12/2009, 08h31
  4. Comparaison de valeur de ligne avec deux feuilles différentes
    Par charlix dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/07/2008, 15h54
  5. Réponses: 10
    Dernier message: 07/12/2006, 20h52

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