maquer une ligne en fonction d'une couleur de fond

Le
marc
Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule sur
fond gris soient masquer automatiquement. Je ne sais pas comment faire mon
code en VBA.
Merci de m'aider
Marc
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #18649011
bonjour Marc,

la couleur est appliquée par quel méthode, Format ou Mise en forme
conditionnel ?

isabelle

marc a écrit :
Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une
cellule sur fond gris soient masquer automatiquement. Je ne sais pas
comment faire mon code en VBA.
Merci de m'aider
Marc


michdenis
Le #18651081
Sous Excel 2007, j'ai utilisé ceci pour la recherche
VbYellow fait parti des constantes couleurs d'excel
il ya aussi VBRed, vbblack, vbwhite, vbgreen, vbblue, vbmagenta, vbCya
.Interior.Color = vbYellow

Si tu as utilisé les index des couleurs, tu devras modifier
la ligne de code de la lprocédure .Interior.Color = vbYellow
par Interior.ColorIndex = 6 ou l'index approprié.

'--------------------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range, LeCellFormat As CellFormat
Dim C As Range, Adr As String
With Feuil1
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Plage sur laquelle se fait la recherche
Set Rg = .Range("A1", .Cells(DerLig, DerCol)).SpecialCells(xlCellTypeVisible)

Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.Interior.Color = vbYellow
'La liste pourrait être plus longue ...
End With
End With
'Détermine la plage de cellules où s'effectue

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", searchorder:=xlByRows, SearchFormat:=True)
If Not C Is Nothing Then
Adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
C.EntireRow.Hidden = True
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:=C(1, 1), SearchFormat:=True)
Loop Until C.Address = Adr
End If
End With

End Sub
'--------------------------------------------




"marc"
Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule sur
fond gris soient masquer automatiquement. Je ne sais pas comment faire mon
code en VBA.
Merci de m'aider
Marc
marc
Le #18651191
Bonjour Isabelle
La couleur est appliqué par Format.
Je suis sur Excel 2003.
Merci encore une fois pour ton aide.
Marc


"isabelle" a écrit dans le message de news:
u%
bonjour Marc,

la couleur est appliquée par quel méthode, Format ou Mise en forme
conditionnel ?

isabelle

marc a écrit :
Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule
sur fond gris soient masquer automatiquement. Je ne sais pas comment
faire mon code en VBA.
Merci de m'aider
Marc




michdenis
Le #18651181
Tu pourrais ajouter en début de la procédure :
Application.ScreenUpdating = False
marc
Le #18651171
Bonjour Michdenis
Est-ce que tu crois que ce code fonctionne pour Excel 2003?
Merci de ton aide
Marc


"michdenis"
Sous Excel 2007, j'ai utilisé ceci pour la recherche
VbYellow fait parti des constantes couleurs d'excel
il ya aussi VBRed, vbblack, vbwhite, vbgreen, vbblue, vbmagenta, vbCya
.Interior.Color = vbYellow

Si tu as utilisé les index des couleurs, tu devras modifier
la ligne de code de la lprocédure .Interior.Color = vbYellow
par Interior.ColorIndex = 6 ou l'index approprié.

'--------------------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range, LeCellFormat As CellFormat
Dim C As Range, Adr As String
With Feuil1
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Plage sur laquelle se fait la recherche
Set Rg = .Range("A1", .Cells(DerLig,
DerCol)).SpecialCells(xlCellTypeVisible)

Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.Interior.Color = vbYellow
'La liste pourrait être plus longue ...
End With
End With
'Détermine la plage de cellules où s'effectue

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", searchorder:=xlByRows, SearchFormat:=True)
If Not C Is Nothing Then
Adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
C.EntireRow.Hidden = True
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:=C(1, 1), SearchFormat:=True)
Loop Until C.Address = Adr
End If
End With

End Sub
'--------------------------------------------




"marc" discussion :

Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule
sur
fond gris soient masquer automatiquement. Je ne sais pas comment faire mon
code en VBA.
Merci de m'aider
Marc



michdenis
Le #18651281
| Est-ce que tu crois que ce code fonctionne pour Excel 2003?

Aucun problème
marc
Le #18651271
Bonjour Michdenis
Est-il possible que la macro s'exécuter automatiquement dès que je
sauvegarde le document?
merci

"michdenis"
Sous Excel 2007, j'ai utilisé ceci pour la recherche
VbYellow fait parti des constantes couleurs d'excel
il ya aussi VBRed, vbblack, vbwhite, vbgreen, vbblue, vbmagenta, vbCya
.Interior.Color = vbYellow

Si tu as utilisé les index des couleurs, tu devras modifier
la ligne de code de la lprocédure .Interior.Color = vbYellow
par Interior.ColorIndex = 6 ou l'index approprié.

'--------------------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range, LeCellFormat As CellFormat
Dim C As Range, Adr As String
With Feuil1
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Plage sur laquelle se fait la recherche
Set Rg = .Range("A1", .Cells(DerLig,
DerCol)).SpecialCells(xlCellTypeVisible)

Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.Interior.Color = vbYellow
'La liste pourrait être plus longue ...
End With
End With
'Détermine la plage de cellules où s'effectue

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", searchorder:=xlByRows, SearchFormat:=True)
If Not C Is Nothing Then
Adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
C.EntireRow.Hidden = True
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:=C(1, 1), SearchFormat:=True)
Loop Until C.Address = Adr
End If
End With

End Sub
'--------------------------------------------




"marc" discussion :

Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule
sur
fond gris soient masquer automatiquement. Je ne sais pas comment faire mon
code en VBA.
Merci de m'aider
Marc



michdenis
Le #18651261
Oui, tu utilises cet événement du ThisWorkbook de ton classeur

à chaque fois que tu vas enregistrer ton classeur, juste avant
cette procédure va appeler la macro et l'exécuter

'-----------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Tu entres le nom de ta macro
End Sub
'-----------------------------



"marc" #
Bonjour Michdenis
Est-il possible que la macro s'exécuter automatiquement dès que je
sauvegarde le document?
merci

"michdenis"
Sous Excel 2007, j'ai utilisé ceci pour la recherche
VbYellow fait parti des constantes couleurs d'excel
il ya aussi VBRed, vbblack, vbwhite, vbgreen, vbblue, vbmagenta, vbCya
.Interior.Color = vbYellow

Si tu as utilisé les index des couleurs, tu devras modifier
la ligne de code de la lprocédure .Interior.Color = vbYellow
par Interior.ColorIndex = 6 ou l'index approprié.

'--------------------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range, LeCellFormat As CellFormat
Dim C As Range, Adr As String
With Feuil1
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Plage sur laquelle se fait la recherche
Set Rg = .Range("A1", .Cells(DerLig,
DerCol)).SpecialCells(xlCellTypeVisible)

Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.Interior.Color = vbYellow
'La liste pourrait être plus longue ...
End With
End With
'Détermine la plage de cellules où s'effectue

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", searchorder:=xlByRows, SearchFormat:=True)
If Not C Is Nothing Then
Adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
C.EntireRow.Hidden = True
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:=C(1, 1), SearchFormat:=True)
Loop Until C.Address = Adr
End If
End With

End Sub
'--------------------------------------------




"marc" discussion :

Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule
sur
fond gris soient masquer automatiquement. Je ne sais pas comment faire mon
code en VBA.
Merci de m'aider
Marc



marc
Le #18651541
Voici ce que j'ai écrit dans ThisWorkbook
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sub Test()
End Sub

Et j'ai une erreur de compilation. Désolé de te déranger, je ne suis pas
programmeur.
merci de ton aide


"michdenis"
Oui, tu utilises cet événement du ThisWorkbook de ton classeur

à chaque fois que tu vas enregistrer ton classeur, juste avant
cette procédure va appeler la macro et l'exécuter

'-----------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
'Tu entres le nom de ta macro
End Sub
'-----------------------------



"marc" #
Bonjour Michdenis
Est-il possible que la macro s'exécuter automatiquement dès que je
sauvegarde le document?
merci

"michdenis"
Sous Excel 2007, j'ai utilisé ceci pour la recherche
VbYellow fait parti des constantes couleurs d'excel
il ya aussi VBRed, vbblack, vbwhite, vbgreen, vbblue, vbmagenta, vbCya
.Interior.Color = vbYellow

Si tu as utilisé les index des couleurs, tu devras modifier
la ligne de code de la lprocédure .Interior.Color = vbYellow
par Interior.ColorIndex = 6 ou l'index approprié.

'--------------------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range, LeCellFormat As CellFormat
Dim C As Range, Adr As String
With Feuil1
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Plage sur laquelle se fait la recherche
Set Rg = .Range("A1", .Cells(DerLig,
DerCol)).SpecialCells(xlCellTypeVisible)

Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.Interior.Color = vbYellow
'La liste pourrait être plus longue ...
End With
End With
'Détermine la plage de cellules où s'effectue

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", searchorder:=xlByRows, SearchFormat:=True)
If Not C Is Nothing Then
Adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
C.EntireRow.Hidden = True
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:=C(1, 1), SearchFormat:=True)
Loop Until C.Address = Adr
End If
End With

End Sub
'--------------------------------------------




"marc" discussion :

Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule
sur
fond gris soient masquer automatiquement. Je ne sais pas comment faire
mon
code en VBA.
Merci de m'aider
Marc





michdenis
Le #18651531
Il faut faire attention au service de messagerie, il lui arrive
de couper les lignes à des endroits inopportun.

La ligne de déclaration de la procédure doit être écrite sur la même ligne.
sinon tu peux utiliser cette syntaxe (ne pas oublier le "_" à la fin de la ligne.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)

"marc"
Voici ce que j'ai écrit dans ThisWorkbook
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Sub Test()
End Sub

Et j'ai une erreur de compilation. Désolé de te déranger, je ne suis pas
programmeur.
merci de ton aide


"michdenis"
Oui, tu utilises cet événement du ThisWorkbook de ton classeur

à chaque fois que tu vas enregistrer ton classeur, juste avant
cette procédure va appeler la macro et l'exécuter

'-----------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
'Tu entres le nom de ta macro
End Sub
'-----------------------------



"marc" #
Bonjour Michdenis
Est-il possible que la macro s'exécuter automatiquement dès que je
sauvegarde le document?
merci

"michdenis"
Sous Excel 2007, j'ai utilisé ceci pour la recherche
VbYellow fait parti des constantes couleurs d'excel
il ya aussi VBRed, vbblack, vbwhite, vbgreen, vbblue, vbmagenta, vbCya
.Interior.Color = vbYellow

Si tu as utilisé les index des couleurs, tu devras modifier
la ligne de code de la lprocédure .Interior.Color = vbYellow
par Interior.ColorIndex = 6 ou l'index approprié.

'--------------------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range, LeCellFormat As CellFormat
Dim C As Range, Adr As String
With Feuil1
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
searchorder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Plage sur laquelle se fait la recherche
Set Rg = .Range("A1", .Cells(DerLig,
DerCol)).SpecialCells(xlCellTypeVisible)

Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.Interior.Color = vbYellow
'La liste pourrait être plus longue ...
End With
End With
'Détermine la plage de cellules où s'effectue

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", searchorder:=xlByRows, SearchFormat:=True)
If Not C Is Nothing Then
Adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
C.EntireRow.Hidden = True
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:=C(1, 1), SearchFormat:=True)
Loop Until C.Address = Adr
End If
End With

End Sub
'--------------------------------------------




"marc" discussion :

Bonjour à vous tous
J'aimerais, que dans un fichier, les lignes qui ont au moins une cellule
sur
fond gris soient masquer automatiquement. Je ne sais pas comment faire
mon
code en VBA.
Merci de m'aider
Marc





Publicité
Poster une réponse
Anonyme