Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

maquer une ligne en fonction d'une couleur de fond

17 réponses
Avatar
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

10 réponses

1 2
Avatar
isabelle
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


Avatar
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" a écrit dans le message de groupe de 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
Avatar
marc
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




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


"michdenis" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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



Avatar
michdenis
| Est-ce que tu crois que ce code fonctionne pour Excel 2003?

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

"michdenis" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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



Avatar
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" a écrit dans le message de groupe de discussion :
#
Bonjour Michdenis
Est-il possible que la macro s'exécuter automatiquement dès que je
sauvegarde le document?
merci

"michdenis" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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



Avatar
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de discussion :
#
Bonjour Michdenis
Est-il possible que la macro s'exécuter automatiquement dès que je
sauvegarde le document?
merci

"michdenis" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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





Avatar
michdenis
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" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de news:

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" a écrit dans le message de groupe de discussion :
#
Bonjour Michdenis
Est-il possible que la macro s'exécuter automatiquement dès que je
sauvegarde le document?
merci

"michdenis" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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





1 2