Comparaison et selection

Résolu
dianbobo Messages postés 167 Statut Membre -  
dianbobo Messages postés 167 Statut Membre -
voila cette fois ci
je voudrai faire la chose suivante
1) comparer chacun des nombres de la colonne A a partir de A51 AUX NOMBRES de la feuille "synthèse" a la colonne G (G1 a G1000) par exemple de la feuille "MC" si je retrouve le meme nombre et si dans dans la memme ligne la colonne AA m'indique le mot clé "TF " alors je conserve la ligne qui contient le nombre de depart dans ma feuille "synthese "
si a la colonne AA a la ligne corres pondante je trouve autre chose que "TF "
alors j'efface cette ligne dans ma feuille synthese.

merci de votre aide
j'ai voulu essayé avec une macro enregistré dans excel mais ça ne donne pas ce que je veux

voila un exemple
feuil(synthèse)
A51=7555 
alors je vais chercher si ce nombre a la colonne G de la feuille "MC"
SI A51= G102 
par exemple
et si
 AA102="TF"
toujours dans la feuil "MC"

alors la ligne 51 de la feuil "synthèse " est conserver
mais si
A51=G102 et AA102#"TF"
alors la ligne 51 de la feuil "synthese" doit etre effacé.
et ainsi de suite ..j'usqu'a la ligne A500 PAR EXEMPLE DE LA FEUILLE "SYNTHESE"

merci de votre aide

9 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Beh ton message y vient de la ligne
        msgbox "Cellule " & cell.Address & " sans correspondance dans MC", 
    

    Supprime la, elle ne sert pas dans la macro si ce n'est d'avertissement.
    A+
    1
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Je ne sais pas si j'ai bien tout compris ?
    Fait quand même une copie de ton classeur avant de tester...
    Sub Bouton1()
    Dim Lig As Long
        With Sheets("synthèse")
            While Cells(Lig, 1) <> ""
                If .Cells(Lig, 1) = Sheet("MC").Cells(Lig, "G") Then
                    .Cells(Lig, "AA") = "tf"
                    Lig = Lig + 1
                Else
                    Rows(Lig).Delete
                End If
            Wend
        End With
    End Sub

    A+
    0
  3. dianbobo Messages postés 167 Statut Membre 1
     
    j'ai essayé
    il y a eu un premier message d'erreur
    a la ligne 5 de ton code sheets au lieu de sheet

    j'ai relancé le code mais il m'indique toujours un message d'erreur
    du type "X 400"

    pour mieux comprendre ce que j'essaie de faire :
    j'ai une feuille nommé "synthèse" qui a une colonne A51 a A425
    DANS chacune des cellules de la colonne A51 a A425 j'ai un nombre entier
    le but c'est de conserver ces lignes ou pas en faisant donc la chose suivante :
    je recherche a la colonne G de la feuille "MC" chacun des nombres de la colonne A51 a la colonne A425 une fois le nombre est trouvé
    alors sur la meme ligne je vais a la colonne AA toujours dans la feuille "MC" si j'ai le caractere "TF" ALORS JE conserve la ligne correspondante au nombre dans ma feuille "synthese" sinon je l'efface

    j'espere avoir eté un peu plus clair.

    merci de votre aide
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    essaie avec..
    Sub Bouton1()
    Dim Lig As Long, LigG As Long, DerLigG As Long
    Dim C As Variant
        DerLigG = Sheets("MC").Range("G65535").End(xlUp).Row
        With Sheets("synthèse")
            While Cells(Lig, 1) <> ""
                C = .Cells(Lig, 1)
                For LigG = 1 To DerLigG
                    If C = Sheets("MC").Cells(LigG, "G") Then
                        If Sheets("MC").Cells(LigG, "AA") = "tf" Then
                            Lig = Lig + 1
                        Else
                            .Rows(Lig).Delete
                        End If
                        Exit For
                    End If
                Next LigG
            Wend
        End With
    End Sub

    Si tu a encore une erreur met le N° mais aussi le libellé de l'erreur.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dianbobo Messages postés 167 Statut Membre 1
     
    voila j'ai réessayé
    j'ai la meme erreur
    en fait c'est une boite de dialogue intitulée Microsoft visual basic
    x 400
    ok aide


    rien d'autre ne s'affiche
    0
  7. dianbobo Messages postés 167 Statut Membre 1
     
    peu tu stp m'expliquer les lignes de ton code
    pour savoir s'il fait bien ce que je veux

    merci
    0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Faut d'abord liquider cette erreur.
    Restart le code et clic sur aide, fait un copier/coller de la page d'aide.
    0
  9. dianbobo Messages postés 167 Statut Membre 1
     
    j'ai réessayé malheusement ma page d'aide ne m'affiche rien du tout
    du coup jai testé un autre code


    Sub Bouton1()
    Dim rngBF1 As Range, rngBF2 As Range
    dim vLig as long
     
    Application.ScreenUpdating = False
     
    'définition de la plage sur la feuille synthèse (ici de A1 à la dernière cellule remplie) : 
    Set rngBF1 = Sheets("synthèse").Range("A1:" & Sheets( _
                 "synthèse").Cells(Rows.Count, 1).End(xlUp).Address)
     
    'définition de la plage sur la feuille MC (ici de G1 à la dernière cellule remplie) : 
    Set rngBF2 = Sheets("MC").Range("G1:" & Sheets( _
                 "MC").Cells(Rows.Count, 7).End(xlUp).Address)
     
    For Each cell In rngBF1
        If Not IsError(Application.Match(cell, rngBF2, 0)) Then
            vLig = Application.Match(cell, rngBF2, 0) 'vLig = n° de la ligne trouvée dans la feuille MC
            If Sheets("MC").Range("AA" & vLig) = "TF-Post" Then
                'on ne fait rien
            Else
                Sheets("synthèse").Rows(cell.Row).Delete
            End if
        Else
            Application.ScreenUpdating = True
            cell.Select
            msgbox "Cellule " & cell.Address & " sans correspondance dans MC", vbokonly + vbcritical, "Anomalie"
        End If
    Next
     
    Application.ScreenUpdating = True
    End Sub
     


    il fonctionne mais trop lent car il verifie si chaque cellule de la colonne A a bien un correspondant a la colonne G de la feuille "MC"

    donc il y a une boite de dialogue qui s'affiche a chaque fois qu'il n'y pas de correspondance et moi je dois cliquer dessus pour pouvoir avancer
    du coup s'il y a 10000 cellules a tester de sera donc penible ..!!

    si quelqu'un peu bien me donner de l'aide sur ce code
    merci

    avant tout sachez que :

    j'ai testé le code je croix qu'il est bon mais il y a un soucis par rapport a deux choses
    premierement ma feuille synthese est un filtre que j'ai réalisé via un code
    du coup dans ma feuille synthese il y a des lignes qui n'existent pas ma premiere cellule est donc A51 mais peu etre A30 car ça depend du fichier source qui n'a toujours pas le meme nombre de valeurs à trier.
    donc ma premiere valeur et en A51 par exemple et la derniere
    A200 par exemple mais il y a supression de certaines lignes entre A51 ET A200..
    aussi dans la feuille "MC" c'est a partir de G2 que les nombres commencent

    donc quand j'ai executé le code j'ai eu le message d'erreur ci-dessous DANS UNE BOITE DE DIALOGUE appelée "ANOMALIE"
    " cellule $A$1 sans correspondance dans MC
    lorsque je clic sur OK ça me fais passé a la cellule suivante .. et ainsi de suite .. jusqu'a ce que je parcours toute la colonne "A" mais si j'ai une colonne A a 1000 cellules ça devient penible
    sinon j'ai supression des lignes ça signifie que le code m'efface bien ce que je veux ...

    merci de votre aide POUR LE RENDRE PLUS EFFICACE
    0
  10. dianbobo Messages postés 167 Statut Membre 1
     
    VOILA j'ai essayé ça marche bien

    merci encore
    0