Copier avec condition VBA

Bonjour à tous,

Je vous solicite pour un conseil (une correction de formule je pense). Je suis en train de coder un fichier en VBA et je pense que je ne compose pas mon code correctement.

Je voudrais que toutes les valeurs de ma colonne X qui ne sont pas dans ma colonne AC egalement remontent sur une feuille à part.

J'ai cherché sur le forum et j'ai esayé deux méthodes ( Autofilter et range count), mais aucune ne marche .

Pourriez-vous m'aider?

merci

3 réponses

  1. Bonjour Lucieaup

    Une possibilité :
    Dim Ligne As Long
    Ligne = Sheets("Feuil1"). Columns(24).Find("*", , , , xlByColumns, xlPrevious).Row  ' derniere ligne remplie col X
    For n= 2 to Ligne ' boucle sur lignes depuis la 2eme jusqu'à la dernière
    If Sheets("Feuil1").range("X" & n) <> Sheets("Feuil1").range("AC" & n) then '' si valeurs différentes en X et AC
    x=x+1
    Sheets("Feuil2").Range("A") & x = Sheets("Feuil1").range("X" & n) 'place valeur en col A de feuil2
    End If
    Next
    

    Cdlmnt
    Via
    0
    1. Bonjour,

      Merci pour votre réponse, j'ai essayé mais ca ne fonctionne pas. De plus si je comprend bien votre code il teste que la valeur de X2 par exemple ne soit pas égale à AC 2, hors je voudrais qu'il t'este toute la colonne car cette valeur pourrait être ailleurs.

      Je vous ai mis mon fichier en pièce jointe, il y a d'autres macros c'est la dernière dont on parle.

      https://www.cjoint.com/c/HGmoJx0661H

      merci
      0
      1. Dans ce cas il faut passer par un NB.SI

        Sub finalbatch()
        x = 3
        Dim Ligne As Long
        Ligne = Sheets("ZPOCL").Columns(24).Find("*", , , , xlByColumns, xlPrevious).Row ' derniere ligne remplie col X
        For n = 2 To Ligne ' boucle sur lignes depuis la 2eme jusqu'à la dernière
        If Application.WorksheetFunction.CountIf(Sheets("ZPOCL").Range("AC:AC"), Sheets("ZPOCL").Range("X" & n)) = 0 Then ' si valeurs n'existe pas dans AC
        x = x + 1
        Sheets("Database").Range("A" & x) = Sheets("ZPOCL").Range("X" & n) 'place valeur en col A de feuil2
        End If
        Next

        End Sub
        0
        1. Bonjour,

          Merci c'est génial ca marche impeccable et sans erreur. J'ai juste un point, ca me remonte des cases blanches, comment les lui faire enlever?

          merci
          0
        2. Bonjour

          C'est que tu dois avoir des vides dans ta colonne X, alors complète le IF ainsi :

          If Application.WorksheetFunction.CountIf(Sheets("ZPOCL").Range("AC:AC"), Sheets("ZPOCL").Range("X" & n)) = 0 And Sheets("ZPOCL").Range("X" & n) <>"" Then

          Cdlmnt
          Via
          0
        3. C'est parfait ca marche, merci beaucoup!

          Bonne journée,

          lucie
          0