Menu

Copier avec condition VBA

lucieaup - 12 juil. 2018 à 15:53 - Dernière réponse :  lucieaup
- 13 juil. 2018 à 14:57
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
Afficher la suite 

Votre réponse

6 réponses

via55 9435 Messages postés mercredi 16 janvier 2013Date d'inscription 18 juillet 2018 Dernière intervention - 12 juil. 2018 à 16:15
0
Merci
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
Commenter la réponse de via55
0
Merci
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
Commenter la réponse de lucieaup
via55 9435 Messages postés mercredi 16 janvier 2013Date d'inscription 18 juillet 2018 Dernière intervention - 12 juil. 2018 à 17:07
0
Merci
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
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
via55 9435 Messages postés mercredi 16 janvier 2013Date d'inscription 18 juillet 2018 Dernière intervention - 13 juil. 2018 à 14:36
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
C'est parfait ca marche, merci beaucoup!

Bonne journée,

lucie
Commenter la réponse de via55