Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Cacher des lignes

  • Initiateur de la discussion Initiateur de la discussion natacha
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

natacha

Guest
salut

comment faire pour cacher des lignes dont certaines de ses cellules sont en rouge??

merci

Natacha
 
Bonjour Natacha, le forum

Tu désires une solution VB ou tu veux qu'on t'explique comment faire manuellement? :huh:
Les cellules sont en rouge, le fond, le cadre, la police?
s'il s'agit de la police, celle ci est en rouge , par un format personnalisé, une couleur de police ou un format conditionnel? :huh:

tout cela poue te dire que ta demande manque un peu de précisions!

Cordialement, A+
 
re bonjour

foire aux questions :huh:

ta demande initiale est de masquer les lignes
dans ton fichier tu demandes de les supprimer
peux tu préciser (pas la même chose en traitement)

tes cellules en rouge sont toujours en colonne b?

A+
 
désolé pour ce manque de précision
ce que je souhaite c'est cacher les lignes
et les cellules rouges peuvent être dans la colonne B mais également dans une autre

Merci
 
Re bonjour

voila un code qui fait cela

Sub Macro1()
Dim Cel_en_Cours As Range
For Each Cel_en_Cours In Range('A1').SpecialCells(xlCellTypeConstants, 23)
If Cel_en_Cours.Font.ColorIndex = 3 Then
Cel_en_Cours.MergeArea.EntireRow.RowHeight = 0
End If
Next Cel_en_Cours
For Each Cel_en_Cours In Range('A1').SpecialCells(xlCellTypeFormulas, 23)
If Cel_en_Cours.Font.ColorIndex = 3 Then
Cel_en_Cours.MergeArea.EntireRow.RowHeight = 0
End If
Next Cel_en_Cours
End Sub

j'ai utilisé une double passe pour limiter aux cellules ayant une constante ou une formule ainsi qu'une couleur de police rouge, cela permet de gagner en rapidité sur la recherche. Ne fonctionne pas pour les formats conditionnels ou personnalisés.

A+
 
Re bonjour

version plus rapide sur les feuilles chargées

Sub Macro2()
Dim Cel_en_Cours As Range
For Each Cel_en_Cours In Range('A1').SpecialCells(xlCellTypeConstants, 23)
If Cel_en_Cours.RowHeight > 0 Then
If Cel_en_Cours.Font.ColorIndex = 3 Then
Cel_en_Cours.MergeArea.EntireRow.RowHeight = 0
End If
End If
Next Cel_en_Cours
For Each Cel_en_Cours In Range('A1').SpecialCells(xlCellTypeFormulas, 23)
If Cel_en_Cours.RowHeight > 0 Then
If Cel_en_Cours.Font.ColorIndex = 3 Then
Cel_en_Cours.MergeArea.EntireRow.RowHeight = 0
End If
End If
Next Cel_en_Cours
End Sub

A+
 
boujour,
quand j'essaie ce programme j'ai un message d'erreur qui s'affiche:
Erreur d'execution '1004': erreur définie par application ou par objet

Merci

NATACHA
 
Pas d'affolement
le code donné ( par Yaehou si je me rappelle bien) est correct mais ne doit pas être répéter deux fois( c'est le problème qui nous arrive àtous avec le copiér coller)

pour éviter cette erreur 1004 voici le code épuré del a deuxieme boucle

Sub Macro2()
Dim Cel_en_Cours As Range
For Each Cel_en_Cours In Range('A1').SpecialCells(xlCellTypeConstants, 23)
If Cel_en_Cours.RowHeight > 0 Then
If Cel_en_Cours.Font.ColorIndex = 3 Then
Cel_en_Cours.MergeArea.EntireRow.RowHeight = 0
End If
End If
Next Cel_en_Cours

End Sub

Bravo pour le code
 
Bonjour Aixel

la deuxième boucle n'est pas la pour rien mais pour traiter les formules, la première boucle traitant les constantes. C'est d'ailleurs la qu'est le problème, cette macro plante sur la première boucle si il n'y a pas de constantes et sur la deuxième si il n'y a pas de formule.

voici le code modifié avec une gestion des erreurs

Cordialement, A+

Sub Macro3()
Dim Cel_en_Cours As Range, Test As Boolean, Range_Test As Range
Test = False
On Error GoTo Gere_Erreurs
Set Range_Test = Range('A1').SpecialCells(xlCellTypeConstants, 23)
On Error GoTo 0
If Test = False Then
For Each Cel_en_Cours In Range('A1').SpecialCells(xlCellTypeConstants, 23)
If Cel_en_Cours.RowHeight > 0 Then
If Cel_en_Cours.Font.ColorIndex = 3 Then
Cel_en_Cours.MergeArea.EntireRow.RowHeight = 0
End If
End If
Next Cel_en_Cours
End If
Test = False
On Error GoTo Gere_Erreurs
Set Range_Test = Range('A1').SpecialCells(xlCellTypeFormulas, 23)
On Error GoTo 0
If Test = False Then
For Each Cel_en_Cours In Range('A1').SpecialCells(xlCellTypeFormulas, 23)
If Cel_en_Cours.RowHeight > 0 Then
If Cel_en_Cours.Font.ColorIndex = 3 Then
Cel_en_Cours.MergeArea.EntireRow.RowHeight = 0
End If
End If
Next Cel_en_Cours
End If
Exit Sub
Gere_Erreurs:
Test = True
Resume Next
End Sub
 
Re bonjour

la même proc un peu simplifiée

A+

Dim Range_Test As Range
Sub Cache_lignes()
Dim Test As Boolean
Test = False
On Error GoTo Gere_Erreurs
Set Range_Test = Range('A1').SpecialCells(xlCellTypeConstants, 23)
On Error GoTo 0
If Test = False Then Cache_Lignes_Sub
Test = False
On Error GoTo Gere_Erreurs
Set Range_Test = Range('A1').SpecialCells(xlCellTypeFormulas, 23)
On Error GoTo 0
If Test = False Then Cache_Lignes_Sub
Exit Sub
Gere_Erreurs:
Test = True
Resume Next
End Sub
Sub Cache_Lignes_Sub()
Dim Cel_en_Cours As Range
For Each Cel_en_Cours In Range_Test
With Cel_en_Cours
If .RowHeight > 0 Then
If .Font.ColorIndex = 3 Then .MergeArea.EntireRow.RowHeight = 0
End If
End With
Next Cel_en_Cours
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
107
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…