Copie de toutes les cellules avec une certaine valeur d'une autre colonne de sauter des blancs

J'ai trois colonnes A, B et C:
La colonne A contient les noms, NOM1, NOM2, ...
La colonne B contient que les valeurs "OUI" ou "NON".
La colonne C est supposé contenir les noms de la colonne A qui ont de la valeur "OUI" dans la colonne B.

Je peux dire que tant que la valeur est "OUI" dans la colonne B, copie la valeur de la colonne A à la colonne C. Très simple:

C1=IF(B1="YES",A1,"")

Mais cela comprendra les cellules vides qui je ne veux pas. Donc je suppose que je suis à la recherche d'un moyen de copier tous les noms de la colonne A avec la valeur "OUI" dans la colonne B et de les coller dans la colonne C de sauter les blancs.

J'ai trouvé un projet VBA que les couleurs toutes les cellules à l'intérieur d'une colonne avec une certaine valeur. Je ne suis pas sûr de savoir comment modifier ce en quoi j'ai besoin. Ici c'est le code que j'ai trouvé jusqu'à présent.

QUESTIONS
1) Erreur d'Exécution '1004' définie par l'Application ou par l'Objet défini d'erreur
2) Copie à partir de la Colonne
3) Vérifier et Supprimer les Doublons de NewRange

EDIT 1: Ajout de lignes de commentaires dans le code
EDIT 2: Changement NewRange à être fabriqués à partir de la colonne A avec un Décalage (non testé en raison d'une erreur d'exécution)
MODIFIER 3: Code pour copier la forme d'une feuille séparée de code pour le coller dans une autre feuille
EDITION 4: Ajout de la correction de l'utilisateur @abahgat
MODIFIER 5: Supprimer les doublons

Sub RangeCopyPaste()
Dim cell As Range
Dim NewRange As Range
Dim MyCount As Long
MyCount = 1

'--> Loop through each cell in column B
'--> Add each cell in column A with value "YES" in column B to NewRange 
For Each cell In Worksheets("Sheet1").Range("B1:B30")
    If cell.Value = "YES" Then
        If MyCount = 1 Then Set NewRange = cell.Offset(0,-1)
        Set NewRange = Application.Union(NewRange, cell.Offset(0,-1))
        MyCount = MyCount + 1
    End If
Next cell

'--> Copy NewRange from inactive sheet into active sheet
NewRange.Copy Destination:=activesheet.Range("C1")

'--> Remove Duplicates
activesheet.Range("C1:C30").RemoveDuplicates

End Sub

OriginalL'auteur |