Copier avec condition VBA

Fermé
lucieaup - 12 juil. 2018 à 15:53
 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
A voir également:

3 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
12 juil. 2018 à 16:15
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
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
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
12 juil. 2018 à 17:07
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
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
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
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
0
C'est parfait ca marche, merci beaucoup!

Bonne journée,

lucie
0