Se connecter avec
S'enregistrer | Connectez-vous

supprimer des lignes de couleurs dans un tableau

Dernière réponse : dans Programmation
Partagez

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 :( 
  1. Sub SupprimerCouleurRouge()
  2. Dim rcel As Range
  3. Range("A1").Select
  4. Selection.CurrentRegion.Select
  5. For Each vcel In Selection
  6. If rcel.Interior.ColorIndex = 3 Then
  7. rcel.EntireRow.Delete
  8. End If
  9. Next rcel
  10. End Sub

merci d'avance pour votre aide
et bon week end à tous

Beurk. Des SELECT/SELECTION.

Je réécris ce programme sans toutes ces horreurs :
  1. Sub SupprimerCouleurRouge()
  2. Dim rcel As Range
  3.  
  4. For Each vcel In Range("A1" ).CurrentRegion
  5. If rcel.Interior.ColorIndex = 3 Then
  6. rcel.EntireRow.Delete
  7. End If
  8. Next rcel
  9. 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: 

Commentaires :

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



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.
. A B
+-------+-------+--
1 |(Rouge)| Blanc |
+-------+-------+--
2 | Rouge | Blanc |
+-------+-------+--
3 | Vert | Bleu |
+-------+-------+--
| | |

La ligne 2 devient la ligne 1.

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


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

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"

Contenus similaires
Posez votre question

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) ?


Spoiler
message subliminal : Ligne 4

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

pour ceux que ça interressent ce code marche pour supprimer les lignes rouges d'une feuille
  1. Dim rcel As Range
  2. For Each rcel In Range("A1").CurrentRegion
  3. If rcel.Interior.ColorIndex = 3 Then
  4. rcel.EntireRow.Delete
  5. End If
  6. Next rcel
  7. End Sub

a+
Posez votre question