Se connecter avec
S'enregistrer | Connectez-vous

supprimer des lignes de couleurs dans un tableau

Dernière réponse : dans Programmation

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
Lassé par la pub ? Créez un compte
Expert Programmation

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: 
Expert Programmation

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"

Expert Programmation

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

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+
Lassé par la pub ? Créez un compte