2017-09-11 1 views
0

Je le défi suivant:VBA: Taillez cellules Si la valeur est dans le Range

Dans une feuille de calcul, je dois supprimer les blancs indésirables dans une certaine plage de cellules via la fonctionnalité de garniture. Cela fonctionne déjà très bien avec le code suivant:

Sub remove_blanks() 

Dim rC As Range 

Application.ScreenUpdating = False 

For Each rC In ActiveSheet.Range("C1:C5000") 
    If Not (rC.HasFormula) Then rC = Trim(rC) 
Next 

Application.ScreenUpdating = True 

End Sub 

Maintenant, il me faudrait mettre en place un contrôle où la fonction ci-dessus ne devrait fonctionner que si une cellule est marquée comme « OUI » dans une autre colonne.

E.g. Si la colonne A une valeur de la cellule est « OUI », alors seulement la fonction ci-dessus devrait fonctionner pour la même cellule dans la colonne C.

Cordialement, Stefan

Répondre

1

il suffit de modifier votre ligne de:

If Not (rC.HasFormula) Then rC = Trim(rC) 

à:

If Not (rC.HasFormula) And Range("A" & rC.Row).Value = "YES" Then rC = Trim(rC) 

ce qui vérifie également la valeur dans la colonne « A » dans la même ligne que rC est égal à « OUI »

0

Une autre approche utilisant le .Offset

If Not rC.HasFormula And rC.Offset(0, [-2]).Value = "YES" Then rC = Trim(rC) 
+0

juste curieux de savoir pourquoi vous avez besoin du '[]' 'la -2'? cela ne fonctionnerait-il pas de la même façon avec 'Offset (0, -2)'? –

+0

J'ai eu une erreur une fois (il y a quelques années) et depuis j'ai utilisé les crochets. –