supprimer des lignes de couleurs dans un tableau

BOBIE

Habitué
bonjour à tous
j'ai généré le programme suivant qui ne marche pas et je ne comprend pas pourquoi.
le programme suivant consiste à supprimer toutes mes lignes de couleurs rouges mais ne marche pas :(
[cpp]
Sub SupprimerCouleurRouge()
Dim rcel As Range
Range("A1").Select
Selection.CurrentRegion.Select
For Each vcel In Selection
If rcel.Interior.ColorIndex = 3 Then
rcel.EntireRow.Delete
End If
Next rcel
End Sub
[/cpp]
merci d'avance pour votre aide
et bon week end à tous
 

zeb

Modérateur
Beurk. Des SELECT/SELECTION.

Je réécris ce programme sans toutes ces horreurs :
Code:
Sub SupprimerCouleurRouge()
    Dim rcel As Range

    For Each vcel In Range("A1" ).CurrentRegion
        If rcel.Interior.ColorIndex = 3 Then
           rcel.EntireRow.Delete
        End If
    Next rcel
End Sub

Ah, là c'est mieux.
As-tu utilisé l'Option Explicit (voir l'aide Excel à ce sujet) ?
Si je pose la question, c'est que je suis sûr que non. La preuve, ligne 4 :sarcastic:
 

zeb

Modérateur
Commentaires :

Soit le tableau [fixed]. A B
+-------+-------+-----
1 | Rouge | Blanc |
+-------+-------+-----
2 | Rouge | Blanc |
+-------+-------+-----
3 | Vert | Bleu |
+-------+-------+-----
| | |[/fixed]


Le For Each va nous faire, 1° A1, 2° B1, 3° A2, 4° B2, etc.

1° rcel = A1. rcel est rouge, on supprime la ligne 1.
[fixed]. A B
+-------+-------+--
1 |(Rouge)| Blanc |
+-------+-------+--
2 | Rouge | Blanc |
+-------+-------+--
3 | Vert | Bleu |
+-------+-------+--
| | |[/fixed]
La ligne 2 devient la ligne 1.

2° rcel = B1. rcel est blanc. On ne fait rien -> BUG!
Etape 2[fixed]. A B
+-------+-------+--
1 | Rouge |(Blanc)|
+-------+-------+--
2 | Vert | Bleu |
+-------+-------+--
| | |[/fixed]

Donc parcourir la zone CurrentRegion et y supprimer des lignes n'est pas la bonne solution.

 

BOBIE

Habitué
merci de répondre Zeb
je viens d'aller voir l'option explicit de l'aide excel (que je n'avais pas été voir :) ) et je ne trouve rien
seulement j'ai toujours le meme souçi lorsque je lance le nouveau programme cellui çi indique : "erreur de compilation : reférence de variable de contrôle incorrecte dans next"

 

zeb

Modérateur
Tu l'as ajouté l'option Explicit à ton programme ?
(La seule bonne réponse est OUI)

Et il ne te dit pas que tu t'es emmellé les doigts ?
(La seule bonne réponse est SI, ligne 4)

En plus, il te dit que la variable dans le next n'est pas la bonne. Tu as regardé la variable dans le For (ligne 4) ?


message subliminal : Ligne 4
 

BOBIE

Habitué
au risque de passer pour un débil j'avoue tou
je ne trouve pas l'option explicit je ne sais pas ce que s'est.
mon but est juste de supprimer toute les lignes rouges de ma feuille
 

zeb

Modérateur
tape "explicit" dans ton editeur de VB. Mets le curseur sur ce mot. Appuie sur la touche F1. Tu sauras tout


(Ligne 4)
 

BOBIE

Habitué
pour ceux que ça interressent ce code marche pour supprimer les lignes rouges d'une feuille
[cpp]
Dim rcel As Range
For Each rcel In Range("A1").CurrentRegion
If rcel.Interior.ColorIndex = 3 Then
rcel.EntireRow.Delete
End If
Next rcel
End Sub
[/cpp]
a+
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 088
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut