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

7 réponses

1 2
Avatar
isabelle
bonjour Marc,

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Test 'il faut mettre seule ment le nom de la macro
End Sub

isabelle

marc a écrit :
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
marc
Désolé de te déranger encore une fois.
J'ai tout écrit sur la même ligne, et j'ai quand même un erreur de
compilation
Voici un exemple de mon fichier
http://cjoint.com/?coo57dhBBp
Merci encore une fois de ton aide
marc





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

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








Avatar
michdenis
Si tu utilises Outlook Express, tu peux aller :
barre des menus / outils / options / onglet "Envoi"

Format d'envoi du courrier et Format d'envoi des
messages de groupe de discussion
Tu peux en cliquant à tour de rôle sur les boutons
"Paramètres" déterminer le nombre de caractères
qu'un ligne peut avoir avant que l'application
insère un retour à la ligne automatique.
Cela peut réduire énormément les retours à
la ligne intempestive.



"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





Avatar
Mgr T. Banni
comme a écrit isabelle, marc

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
test
End Sub

je ne suis pas près de te sanctifier!!!! même si je te conseille de faire un
peu de lessive dans ton code

Mgr T.B.

"marc" a écrit dans le message de news:
%
Désolé de te déranger encore une fois.
J'ai tout écrit sur la même ligne, et j'ai quand même un erreur de
compilation
Voici un exemple de mon fichier
http://cjoint.com/?coo57dhBBp
Merci encore une fois de ton aide
marc





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

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












Avatar
Mgr T. Banni
heu tu as aussi oublié en fin de ta proc "test" d'écrire End Sub
voili voilou
Mgr T.B.

"marc" a écrit dans le message de news:
%
Désolé de te déranger encore une fois.
J'ai tout écrit sur la même ligne, et j'ai quand même un erreur de
compilation
Voici un exemple de mon fichier
http://cjoint.com/?coo57dhBBp
Merci encore une fois de ton aide
marc





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

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












Avatar
michdenis
Voici ton fichier fonctionnel : http://cjoint.com/?coppLVWT2x

Quand tu appelles une procédure et que tu l'as placé
dans la Feuil1 (nom de la propriété Name de la feuille et
non le nom de l'onglet de la feuille, tu dois inscrire le nom
de la feuille devant le nom de la macro. Quand tu places la
macro dans un module standard, tu n'as pas besoin d'inscrire
le nom du module.

Et tu dois faire attention à cette ligne de code ;
.Interior.ColorIndex = 6
il se peut que dans un autre classeur que cet index soit différent
pour le savoir tu le testes :
Msgbox Range("G24").interior.Colorindex
G24 représentant une cellule dont tu veux tester la couleur


"marc" a écrit dans le message de groupe de discussion :
#
Désolé de te déranger encore une fois.
J'ai tout écrit sur la même ligne, et j'ai quand même un erreur de
compilation
Voici un exemple de mon fichier
http://cjoint.com/?coo57dhBBp
Merci encore une fois de ton aide
marc





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

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








Avatar
marc
J'aimerais tous vous remercier de votre aide.
Désolé encore une fois du dérangement.
Merci et bonne journée
Marc

"michdenis" a écrit dans le message de news:
Si tu utilises Outlook Express, tu peux aller :
barre des menus / outils / options / onglet "Envoi"

Format d'envoi du courrier et Format d'envoi des
messages de groupe de discussion
Tu peux en cliquant à tour de rôle sur les boutons
"Paramètres" déterminer le nombre de caractères
qu'un ligne peut avoir avant que l'application
insère un retour à la ligne automatique.
Cela peut réduire énormément les retours à
la ligne intempestive.



"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