VBA - IF et If Not

Vinvol

XLDnaute Junior
Bonjour le forum,

Manifestement, une subtilité d'utilisation des formules "If" et "If Not" en VBA doit m'échapper.
Jusqu'ici, si ma condition était "cellule contient "truc"", j'utilisais If et dans le cas inverse, "cellule est différente de "truc"", j'utilisais If Not. Et ça marchait très bien !

Mais avec la condition : si la ligne n'est pas surlignée en rouge, donc If Not .Rows(x).Interior.ColorIndex = 3 Then, il considère que la condition n'est jamais remplie...

J'ai un fichier où j'ai surligné certaines lignes en rouge pour leur réserver un traitement particulier. Cette étape fonctionne.
Mais dans un deuxième temps, je voudrais m'intéresser aux autres lignes (les blanches, les vertes, les bleues, etc), donc toutes sauf les rouge. Mais je n'arrive pas à les isoler...

Petite précision : je ne peux pas me contenter d'un Else, parce que le fait que la ligne soit rouge ou non n'est pas la seule condition (la ligne doit être rouge, tel cellule ne doit pas être vide, telle cellule contenir tel mot, etc). Et certaines de ces conditions sont remplies pour les autres lignes. Donc ce qui est faux pour le IF ligne Rouge n'est pas systématiquement vrai pour le IF ligne pas rouge (trop facile sinon !!). D'où le traitement en deux temps.
Toutes les autres confitions fonctionnent, il n'y a que cette maudite couleur qui bloque.

Quelqu'un aurait-il une solution ?
Ci joint un petit fichier d'exemple: comment remplir la colonne G en ne sélectionnant que les lignes non rouges ?

Merci,
Vincent
 

Pièces jointes

  • Test.xlsm
    16.3 KB · Affichages: 44
  • Test.xlsm
    16.3 KB · Affichages: 42
  • Test.xlsm
    16.3 KB · Affichages: 49

Pierrot93

XLDnaute Barbatruc
Re : VBA - IF et If Not

Bonjour,

petite info au passage, pour que cela fonctionne il faudrait que toutes les cellules d'une même ligne soient de la même couleur...

bon après midi
@+

Edition : bonjour PierreJean:)
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : VBA - IF et If Not

Re

Il faut apparemment que toute la ligne ait la même couleur

Vois ceci

Edit: Boum !! Salut Pierrot
 

Pièces jointes

  • Test.xlsm
    16.1 KB · Affichages: 44
  • Test.xlsm
    16.1 KB · Affichages: 44
  • Test.xlsm
    16.1 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : VBA - IF et If Not

Bonjour Vinvol,

Les lignes 2 et 5 ne sont que partiellement colorées.

Dans ce cas .Rows(j).Interior.ColorIndex renvoie la valeur Null.

Pour s'en rendre compte, il suffit de mettre dans la 2ème boucle MsgBox .Rows(j).Interior.ColorIndex

Il faut donc lire la couleur d'une seule cellule :

Code:
For j = 2 To 5
If Not .Cells(j, 1).Interior.ColorIndex = 3 Then
.Cells(j, 7) = "Pas rouge"
End If
Next
Edit : ah mais il y a du monde, hello les deux Pierre :)

A+
 
Dernière édition:

Vinvol

XLDnaute Junior
Re : VBA - IF et If Not

Bonjour Pierrot93, pierrejean et job75 !!

Merci pour ces réponses rapides qui vont toutes dans le même sens. Effectivement, je vais faire tourner la seconde boucle sur la couleur d'une seule cellule.

D'un autre côté (mais ça ne change rien à le réalité d'Excel), j'ai du mal à concevoir que la formule puisse planter à cause de lignes multicolores.
Si la ligne et partiellement blanche, verte et rouge par exemple, eh bien elle n'est pas intégralement rouge. Je ne trouve pas ça logique que la réponse soit Null plutôt que faux.
Bref, c'est bien une subtilité qui m'échappait !!

Merci encore pour cette solution,
Vincent
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - IF et If Not

Re, bonjour Job:)

remarque il suffit de tester si c'est "null" ou pas...

Code:
If IsNull(Rows(i).Interior.ColorIndex = 3) Then MsgBox "pas rouge"

ou :

Code:
If Not IsNull(Rows(i).Interior.ColorIndex = 3) Then MsgBox "rouge"
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - IF et If Not

Re,

Aarf Job:), pas sûr que l'on puisse utiliser Null en l'état.... ce que dit l'aide vba à ce sujet...
Le mot clé Null est utilisé comme un sous-type Variant. Il indique qu'une variable ne contient aucune donnée valide.

perso préfère utiliser la fonction "IsNull" pour tester.... enfin c'est juste mon avis...

bonne soirée
@+
 

Discussions similaires

Réponses
0
Affichages
201

Statistiques des forums

Discussions
312 855
Messages
2 092 852
Membres
105 544
dernier inscrit
Eden90