XL 2016 Fonction .select et curseur

maroon

XLDnaute Junior
Bonjour,

J'aurais besoin d'aide pour un problème avec la fonction .select.
J'ai écris les lignes suivantes pour mettre en couleur chaque ligne qui contient la valeur 0 en colonne 3. Les lignes correspondantes sont bien mises en couleur, sauf que je constate que la ou les lignes qui sont sélectionnées avec ma souris avant de lancer la macro sont aussi mises en couleur!!

VB:
X= Sheets("Feuil1").Range("A65000").End(xlUp).Row
    For i = 2 To X
        If Cells(i, 3) = "0" Then Cells(i, 1).Select
      .Range(Selection, Selection.End(xlToRight)).Interior.ColorIndex = 6
Next i

Est-ce que quelqu'un sait pourquoi et comment y remédier?? Ce code est inscrit dans un code un peu plus long mais je ne pense pas que ça pose problème.

Merci d'avance pour votre aide !!
 

maroon

XLDnaute Junior
Bonjour @Phil69970,

Merci pour ta réponse!
Alors ta proposition réglait le problème du curseur, en revanche il n'y a que la cellule (i,3) qui était mise en couleur. En rectifiant pour prendre en compte toute la ligne ça fonctionne super!!

VB:
fin = Sheets("Feuil1").Range("A65000").End(xlUp).Row
    
    For i = 2 To X
         If Cells(i, 3) = "0" Then .Range(Cells(i, 1), Cells(i, 1).End(xlToRight)).Interior.ColorIndex = 6
    Next i

Ca fait un moment que je tournais en rond, merci beaucoup pour ton aide rapide!!
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

J'aurais besoin d'aide pour un problème avec la fonction .select.
J'ai écris les lignes suivantes pour mettre en couleur chaque ligne qui contient la valeur 0 en colonne 3. Les lignes correspondantes sont bien mises en couleur, sauf que je constate que la ou les lignes qui sont sélectionnées avec ma souris avant de lancer la macro sont aussi mises en couleur!!

VB:
X= Sheets("Feuil1").Range("A65000").End(xlUp).Row
    For i = 2 To X
        If Cells(i, 3) = "0" Then Cells(i, 1).Select
      .Range(Selection, Selection.End(xlToRight)).Interior.ColorIndex = 6
Next i

Est-ce que quelqu'un sait pourquoi et comment y remédier?? Ce code est inscrit dans un code un peu plus long mais je ne pense pas que ça pose problème.
C'est la logique de ton code qui n'est pas bonne.

Dans l'état actuel, au premier tour de la boucle For, i est égal à 2 et si la cellule C2 n'est pas égale à zéro, tu passes à l'instruction suivante sans sélectionner la cellule A2, et tu colories la sélection, donc tu colories les cellules qui étaient sélectionnées avant de rentrer dans ta boucle For.

Au deuxième tour, i=3, et si la cellule C3 n'est pas égale à zéro, tu passes à l'instruction suivante sans sélectionner la cellule A3, et tu recolories la sélection, donc tu recolories les cellules qui étaient sélectionnées avant de rentrer dans ta boucle For.

Ainsi de suite jusqu'au moment où tu rencontres une cellule Cx qui est égale à zéro et où tu sélectionnes donc la cellule Ax que tu colories. Et que tu vas colorier de nouveau à chaque tour de la boucle For jusqu'à ce que tu rencontres une autre cellule Cy qui n'est pas égale à zéro.
etc.

Une correction de la logique du code pourrait être :
VB:
X= Sheets("Feuil1").Range("A65000").End(xlUp).Row
For i = 2 To X
    If Cells(i, 3) = "0" Then
        Cells(i, 1).Select
        .Range(Selection, Selection.End(xlToRight)).Interior.ColorIndex = 6
    End If
Next i

Mais les Select étant fortement déconseillés (car ils allongent la durée d'exécution de la macro), une meilleure solution est celle de @Phil69970.


Sinon, au lieu d'utiliser une macro, tu peux utiliser une MFC (Mise en Forme Conditionnelle).
 
Dernière édition:

maroon

XLDnaute Junior
Bonjour @Marcel32,

Merci beaucoup pour ton aide! Ca explique pourquoi je n'avais pas ce problème pour une requête en particulier et je constate effectivement qu'elle est présente dans la deuxième ligne! J'arrivais pas à croire que ça me posait problème pour toutes les requêtes sauf UNE! Maintenant je comprends!

Je suis encore débutant (même si ça fait des années que je bidouille) et je ne savais pas que "Then" fonctionnait différemment en fonction de sa position!

Merci encore pour toutes ces explications!
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo