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

Macro recherche cellule mise en forme de type - - -

10 réponses
Avatar
fran25
Bonjour,

Généralement j'utilise les forums et je m'inspire des réponses fournis par
les experts mais la je ne trouve pas mon bonheur.

J'aimerai donc savoir comment faire une macro qui applique une mise en forme
du type (Ex: fond rouge; police en gras ; bordure basse et droite bleu) sur
une zone de cellule en (feuil1) par rapport à une plage de cellule située en
(feuil3), (liste de personnes dans une colonne) et ceci pour pls colonnes et
donc pls formats de mise en forme.

Puis faire une autre macro qui rechercher dans une zone de cellules
(feuil1), celles qui sont mise en forme du type (Ex: fond rouge; police en
gras ; bordure basse et droite bleu) et les extraire pour les mettre dans
(feuil2).

Merci,

cela m'aidera pour mon projet.

10 réponses

Avatar
michdenis
Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise en forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite bleu) sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge; police en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub
'---------------------------------------
Avatar
fran25
Merci pour votre réactivité (c'etait ma première question sur ce groupe de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge; police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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




Avatar
fran25
J'ai essayé mais la macro bloque à "C.copy Worksheets("Feuil2").Range("A" &
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce groupe de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge; police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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








Avatar
michdenis
| Selection.Style = "Il 11"

Ceci permet d'affubler la sélection de cellule au style choisis.

Mais dans le With LeCellFormat ... End With
tu dois définir les éléments qui caractérisent le format de
ta cellule.
Exemple de caractéristique : Ces propriétés doivent appartenir
à l'objet "LeCellFormat"

With LeCellFormat
.Font.Bold = True
.Font.Size = 12
.Borders(xlEdgeRight).ColorIndex = 25
.Interior.ColorIndex = 12
.Locked = True
End with

Et cette ligne de code de la procédure :
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
tu peux la remplacer par ceci :
Set c = .Find(What:="", after:=c, SearchFormat:=True)



"fran25" a écrit dans le message de groupe de discussion :

J'ai essayé mais la macro bloque à "C.copy Worksheets("Feuil2").Range("A" &
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce groupe de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge; police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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








Avatar
fran25
La macro ne bloque plus et j'ai précisé les caracteristiques du format
recherché
mais je ne retrouve rien en "Feuil3" ?

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches

.Borders(xlEdgeRight).ColorIndex = 41 'jaune clair
.Borders(xlEdgeBottom).ColorIndex = 41
.Interior.ColorIndex = 36 'bleu clair
.Locked = True

'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
c.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With

End Sub

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

| Selection.Style = "Il 11"

Ceci permet d'affubler la sélection de cellule au style choisis.

Mais dans le With LeCellFormat ... End With
tu dois définir les éléments qui caractérisent le format de
ta cellule.
Exemple de caractéristique : Ces propriétés doivent appartenir
à l'objet "LeCellFormat"

With LeCellFormat
.Font.Bold = True
.Font.Size = 12
.Borders(xlEdgeRight).ColorIndex = 25
.Interior.ColorIndex = 12
.Locked = True
End with

Et cette ligne de code de la procédure :
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
tu peux la remplacer par ceci :
Set c = .Find(What:="", after:=c, SearchFormat:=True)



"fran25" a écrit dans le message de groupe de
discussion :

J'ai essayé mais la macro bloque à "C.copy Worksheets("Feuil2").Range("A"
&
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce groupe
de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite
bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge;
police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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











Avatar
michdenis
Fichier exemple là : http://cjoint.com/?cyb47ogTDB



"fran25" a écrit dans le message de groupe de discussion :

La macro ne bloque plus et j'ai précisé les caracteristiques du format
recherché
mais je ne retrouve rien en "Feuil3" ?

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches

.Borders(xlEdgeRight).ColorIndex = 41 'jaune clair
.Borders(xlEdgeBottom).ColorIndex = 41
.Interior.ColorIndex = 36 'bleu clair
.Locked = True

'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
c.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With

End Sub

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

| Selection.Style = "Il 11"

Ceci permet d'affubler la sélection de cellule au style choisis.

Mais dans le With LeCellFormat ... End With
tu dois définir les éléments qui caractérisent le format de
ta cellule.
Exemple de caractéristique : Ces propriétés doivent appartenir
à l'objet "LeCellFormat"

With LeCellFormat
.Font.Bold = True
.Font.Size = 12
.Borders(xlEdgeRight).ColorIndex = 25
.Interior.ColorIndex = 12
.Locked = True
End with

Et cette ligne de code de la procédure :
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
tu peux la remplacer par ceci :
Set c = .Find(What:="", after:=c, SearchFormat:=True)



"fran25" a écrit dans le message de groupe de
discussion :

J'ai essayé mais la macro bloque à "C.copy Worksheets("Feuil2").Range("A"
&
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce groupe
de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite
bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge;
police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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











Avatar
fran25
D'abord mes excuses pour l'erreur sur l'adresse,
Mon projet évolue et j'essaie maintenant de faire avec vos infos, mais je
n'arrive pas à finaliser seul.

(S.W: GRrrrrr "des cours en VBA tu prendras"....).

En "gros",

Macro 1:
sur "Plan 1" couper les cellules (verrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan2" dans la
colonne sous la cellule "S2" .

Macro2:
sur "Plan 2" couper les cellules (vérrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan1" dans la
colonne sous la cellule "S2" .

Ci-dessous mon essaie

Sub TrouverFormat_retrait1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
Selection.Interior
.Interior.ColorIndex = 36 'jaune clair
.Interior.ColorIndex = 44 'or
.Interior.ColorIndex = 35 'vert clair
.Interior.ColorIndex = 43 'citron vert
.Interior.ColorIndex = 38 'rose saumon
.Interior.ColorIndex = 7 'rose
.Interior.ColorIndex = 37 'bleu moyen
.Interior.ColorIndex = 41 'bleu clair
.Interior.ColorIndex = 15 'gris -25
.Interior.ColorIndex = 48 'gris -50
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan1") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan2").Range("S2" & Z) = c.Value

'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If

Worksheets("Plan2").Select
Application.ScreenUpdating = True
End With
End Sub

Sub TrouverFormat_retour1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
.Interior.ColorIndex = 36
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan2") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan1").Range("S2" & Z) = c.Value
c.Clear
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With
Worksheets("Plan1").Select
Application.ScreenUpdating = True
End Sub


----- Original Message -----
From: "fran25"
To: "michdenis"
Sent: Wednesday, February 24, 2010 3:04 PM
Subject: Re: Macro recherche cellule mise en forme de type - - -


OK super, c'est ce que je cherchais à faire sauf que je voulais "couper"
et non pas "copier" les cellules au format "xxx".
Donc j'ai essayé de mettre "cut" a la place de "Copy" dans "c.Copy
Worksheets("Feuil2").Range("A" & Z)" mais ca ne fonctionne pas ?
De plus (aprés coup), comment réintégrer les cellules déplacés dans la
"Feuil1" d'origine mais dans une colonne sur le côté (colonne "L" par
exemple) et ceci par une autre macro (si ce n'est pas trop demander).


----- Original Message -----
From: "michdenis"
Newsgroups: microsoft.public.fr.excel
Sent: Wednesday, February 24, 2010 1:57 AM
Subject: Re: Macro recherche cellule mise en forme de type - - -


Fichier exemple là : http://cjoint.com/?cyb47ogTDB



"fran25" a écrit dans le message de groupe de
discussion :

La macro ne bloque plus et j'ai précisé les caracteristiques du format
recherché
mais je ne retrouve rien en "Feuil3" ?

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches

.Borders(xlEdgeRight).ColorIndex = 41 'jaune clair
.Borders(xlEdgeBottom).ColorIndex = 41
.Interior.ColorIndex = 36 'bleu clair
.Locked = True

'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
c.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With

End Sub

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

| Selection.Style = "Il 11"

Ceci permet d'affubler la sélection de cellule au style choisis.

Mais dans le With LeCellFormat ... End With
tu dois définir les éléments qui caractérisent le format de
ta cellule.
Exemple de caractéristique : Ces propriétés doivent appartenir
à l'objet "LeCellFormat"

With LeCellFormat
.Font.Bold = True
.Font.Size = 12
.Borders(xlEdgeRight).ColorIndex = 25
.Interior.ColorIndex = 12
.Locked = True
End with

Et cette ligne de code de la procédure :
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
tu peux la remplacer par ceci :
Set c = .Find(What:="", after:=c, SearchFormat:=True)



"fran25" a écrit dans le message de groupe de
discussion :

J'ai essayé mais la macro bloque à "C.copy
Worksheets("Feuil2").Range("A"
&
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce groupe
de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise
en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite
bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge;
police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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

















Avatar
michdenis
Un format de cellule ne peut pas comprendre 10
couleurs différentes de fond de cellule. Cela n'a
aucun sens.

Si ton besoin est de faire une recherche pour différents
formats de cellules, ceci soit se faire une recherche après l'autre.

L'objet "LeCellFormat" possède un certain nombre de
caractéristiques (propriétés) que tu peux utiliser. Tu dois
t'en tenir à ces dernières.

Je t'ai fait parvenir un fichier avec le code expliqué ligne à ligne !
Que puis-je faire de plus ?





"fran25" a écrit dans le message de groupe de discussion :


D'abord mes excuses pour l'erreur sur l'adresse,
Mon projet évolue et j'essaie maintenant de faire avec vos infos, mais je
n'arrive pas à finaliser seul.

(S.W: GRrrrrr "des cours en VBA tu prendras"....).

En "gros",

Macro 1:
sur "Plan 1" couper les cellules (verrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan2" dans la
colonne sous la cellule "S2" .

Macro2:
sur "Plan 2" couper les cellules (vérrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan1" dans la
colonne sous la cellule "S2" .

Ci-dessous mon essaie

Sub TrouverFormat_retrait1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
Selection.Interior
.Interior.ColorIndex = 36 'jaune clair
.Interior.ColorIndex = 44 'or
.Interior.ColorIndex = 35 'vert clair
.Interior.ColorIndex = 43 'citron vert
.Interior.ColorIndex = 38 'rose saumon
.Interior.ColorIndex = 7 'rose
.Interior.ColorIndex = 37 'bleu moyen
.Interior.ColorIndex = 41 'bleu clair
.Interior.ColorIndex = 15 'gris -25
.Interior.ColorIndex = 48 'gris -50
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan1") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan2").Range("S2" & Z) = c.Value

'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If

Worksheets("Plan2").Select
Application.ScreenUpdating = True
End With
End Sub

Sub TrouverFormat_retour1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
.Interior.ColorIndex = 36
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan2") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan1").Range("S2" & Z) = c.Value
c.Clear
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With
Worksheets("Plan1").Select
Application.ScreenUpdating = True
End Sub


----- Original Message -----
From: "fran25"
To: "michdenis"
Sent: Wednesday, February 24, 2010 3:04 PM
Subject: Re: Macro recherche cellule mise en forme de type - - -


OK super, c'est ce que je cherchais à faire sauf que je voulais "couper"
et non pas "copier" les cellules au format "xxx".
Donc j'ai essayé de mettre "cut" a la place de "Copy" dans "c.Copy
Worksheets("Feuil2").Range("A" & Z)" mais ca ne fonctionne pas ?
De plus (aprés coup), comment réintégrer les cellules déplacés dans la
"Feuil1" d'origine mais dans une colonne sur le côté (colonne "L" par
exemple) et ceci par une autre macro (si ce n'est pas trop demander).


----- Original Message -----
From: "michdenis"
Newsgroups: microsoft.public.fr.excel
Sent: Wednesday, February 24, 2010 1:57 AM
Subject: Re: Macro recherche cellule mise en forme de type - - -


Fichier exemple là : http://cjoint.com/?cyb47ogTDB



"fran25" a écrit dans le message de groupe de
discussion :

La macro ne bloque plus et j'ai précisé les caracteristiques du format
recherché
mais je ne retrouve rien en "Feuil3" ?

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches

.Borders(xlEdgeRight).ColorIndex = 41 'jaune clair
.Borders(xlEdgeBottom).ColorIndex = 41
.Interior.ColorIndex = 36 'bleu clair
.Locked = True

'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
c.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With

End Sub

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

| Selection.Style = "Il 11"

Ceci permet d'affubler la sélection de cellule au style choisis.

Mais dans le With LeCellFormat ... End With
tu dois définir les éléments qui caractérisent le format de
ta cellule.
Exemple de caractéristique : Ces propriétés doivent appartenir
à l'objet "LeCellFormat"

With LeCellFormat
.Font.Bold = True
.Font.Size = 12
.Borders(xlEdgeRight).ColorIndex = 25
.Interior.ColorIndex = 12
.Locked = True
End with

Et cette ligne de code de la procédure :
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
tu peux la remplacer par ceci :
Set c = .Find(What:="", after:=c, SearchFormat:=True)



"fran25" a écrit dans le message de groupe de
discussion :

J'ai essayé mais la macro bloque à "C.copy
Worksheets("Feuil2").Range("A"
&
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce groupe
de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise
en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite
bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge;
police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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

















Avatar
michdenis
Un dernier exemple : http://cjoint.com/?czvFYLHIt6

Dans la feuille, il y a 2 couleurs différentes de fond de cellule.
La procédure va déplacer ces cellules vers une nouvelle colonne
Si peux ajouter tous les colorindex que tu désires à la variable
arr= array(...)



"michdenis" a écrit dans le message de groupe de discussion :

Un format de cellule ne peut pas comprendre 10
couleurs différentes de fond de cellule. Cela n'a
aucun sens.

Si ton besoin est de faire une recherche pour différents
formats de cellules, ceci soit se faire une recherche après l'autre.

L'objet "LeCellFormat" possède un certain nombre de
caractéristiques (propriétés) que tu peux utiliser. Tu dois
t'en tenir à ces dernières.

Je t'ai fait parvenir un fichier avec le code expliqué ligne à ligne !
Que puis-je faire de plus ?





"fran25" a écrit dans le message de groupe de discussion :


D'abord mes excuses pour l'erreur sur l'adresse,
Mon projet évolue et j'essaie maintenant de faire avec vos infos, mais je
n'arrive pas à finaliser seul.

(S.W: GRrrrrr "des cours en VBA tu prendras"....).

En "gros",

Macro 1:
sur "Plan 1" couper les cellules (verrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan2" dans la
colonne sous la cellule "S2" .

Macro2:
sur "Plan 2" couper les cellules (vérrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan1" dans la
colonne sous la cellule "S2" .

Ci-dessous mon essaie

Sub TrouverFormat_retrait1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
Selection.Interior
.Interior.ColorIndex = 36 'jaune clair
.Interior.ColorIndex = 44 'or
.Interior.ColorIndex = 35 'vert clair
.Interior.ColorIndex = 43 'citron vert
.Interior.ColorIndex = 38 'rose saumon
.Interior.ColorIndex = 7 'rose
.Interior.ColorIndex = 37 'bleu moyen
.Interior.ColorIndex = 41 'bleu clair
.Interior.ColorIndex = 15 'gris -25
.Interior.ColorIndex = 48 'gris -50
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan1") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan2").Range("S2" & Z) = c.Value

'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If

Worksheets("Plan2").Select
Application.ScreenUpdating = True
End With
End Sub

Sub TrouverFormat_retour1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
.Interior.ColorIndex = 36
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan2") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan1").Range("S2" & Z) = c.Value
c.Clear
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With
Worksheets("Plan1").Select
Application.ScreenUpdating = True
End Sub


----- Original Message -----
From: "fran25"
To: "michdenis"
Sent: Wednesday, February 24, 2010 3:04 PM
Subject: Re: Macro recherche cellule mise en forme de type - - -


OK super, c'est ce que je cherchais à faire sauf que je voulais "couper"
et non pas "copier" les cellules au format "xxx".
Donc j'ai essayé de mettre "cut" a la place de "Copy" dans "c.Copy
Worksheets("Feuil2").Range("A" & Z)" mais ca ne fonctionne pas ?
De plus (aprés coup), comment réintégrer les cellules déplacés dans la
"Feuil1" d'origine mais dans une colonne sur le côté (colonne "L" par
exemple) et ceci par une autre macro (si ce n'est pas trop demander).


----- Original Message -----
From: "michdenis"
Newsgroups: microsoft.public.fr.excel
Sent: Wednesday, February 24, 2010 1:57 AM
Subject: Re: Macro recherche cellule mise en forme de type - - -


Fichier exemple là : http://cjoint.com/?cyb47ogTDB



"fran25" a écrit dans le message de groupe de
discussion :

La macro ne bloque plus et j'ai précisé les caracteristiques du format
recherché
mais je ne retrouve rien en "Feuil3" ?

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches

.Borders(xlEdgeRight).ColorIndex = 41 'jaune clair
.Borders(xlEdgeBottom).ColorIndex = 41
.Interior.ColorIndex = 36 'bleu clair
.Locked = True

'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
c.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With

End Sub

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

| Selection.Style = "Il 11"

Ceci permet d'affubler la sélection de cellule au style choisis.

Mais dans le With LeCellFormat ... End With
tu dois définir les éléments qui caractérisent le format de
ta cellule.
Exemple de caractéristique : Ces propriétés doivent appartenir
à l'objet "LeCellFormat"

With LeCellFormat
.Font.Bold = True
.Font.Size = 12
.Borders(xlEdgeRight).ColorIndex = 25
.Interior.ColorIndex = 12
.Locked = True
End with

Et cette ligne de code de la procédure :
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
tu peux la remplacer par ceci :
Set c = .Find(What:="", after:=c, SearchFormat:=True)



"fran25" a écrit dans le message de groupe de
discussion :

J'ai essayé mais la macro bloque à "C.copy
Worksheets("Feuil2").Range("A"
&
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce groupe
de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise
en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite
bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge;
police
en
| gras ; bordure basse et droite bleu) et les extraire pour les mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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

















Avatar
fran25
Bonjsoir,

C'est exactement ce que chercher à faire.

Encore Merci.

RV

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

Un dernier exemple : http://cjoint.com/?czvFYLHIt6

Dans la feuille, il y a 2 couleurs différentes de fond de cellule.
La procédure va déplacer ces cellules vers une nouvelle colonne
Si peux ajouter tous les colorindex que tu désires à la variable
arr= array(...)



"michdenis" a écrit dans le message de groupe de
discussion :

Un format de cellule ne peut pas comprendre 10
couleurs différentes de fond de cellule. Cela n'a
aucun sens.

Si ton besoin est de faire une recherche pour différents
formats de cellules, ceci soit se faire une recherche après l'autre.

L'objet "LeCellFormat" possède un certain nombre de
caractéristiques (propriétés) que tu peux utiliser. Tu dois
t'en tenir à ces dernières.

Je t'ai fait parvenir un fichier avec le code expliqué ligne à ligne !
Que puis-je faire de plus ?





"fran25" a écrit dans le message de groupe de
discussion :


D'abord mes excuses pour l'erreur sur l'adresse,
Mon projet évolue et j'essaie maintenant de faire avec vos infos, mais je
n'arrive pas à finaliser seul.

(S.W: GRrrrrr "des cours en VBA tu prendras"....).

En "gros",

Macro 1:
sur "Plan 1" couper les cellules (verrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan2" dans la
colonne sous la cellule "S2" .

Macro2:
sur "Plan 2" couper les cellules (vérrouillées) de diverses couleurs (10
couleurs differentes) de la plage "A1:R50"
(en gardant leurs couleurs respectives) et les coller sur "Plan1" dans la
colonne sous la cellule "S2" .

Ci-dessous mon essaie

Sub TrouverFormat_retrait1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
Selection.Interior
.Interior.ColorIndex = 36 'jaune clair
.Interior.ColorIndex = 44 'or
.Interior.ColorIndex = 35 'vert clair
.Interior.ColorIndex = 43 'citron vert
.Interior.ColorIndex = 38 'rose saumon
.Interior.ColorIndex = 7 'rose
.Interior.ColorIndex = 37 'bleu moyen
.Interior.ColorIndex = 41 'bleu clair
.Interior.ColorIndex = 15 'gris -25
.Interior.ColorIndex = 48 'gris -50
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan1") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan2").Range("S2" & Z) = c.Value

'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If

Worksheets("Plan2").Select
Application.ScreenUpdating = True
End With
End Sub

Sub TrouverFormat_retour1()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Locked = False
.Interior.ColorIndex = 36
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Plan2") 'Nom Feuille à adapter
Set Rg = .Range("A1:R50") ' Plage de la recherche à adapter
End With

Application.ScreenUpdating = False

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
Z = Z + 1
Worksheets("Plan1").Range("S2" & Z) = c.Value
c.Clear
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With
Worksheets("Plan1").Select
Application.ScreenUpdating = True
End Sub


----- Original Message -----
From: "fran25"
To: "michdenis"
Sent: Wednesday, February 24, 2010 3:04 PM
Subject: Re: Macro recherche cellule mise en forme de type - - -


OK super, c'est ce que je cherchais à faire sauf que je voulais "couper"
et non pas "copier" les cellules au format "xxx".
Donc j'ai essayé de mettre "cut" a la place de "Copy" dans "c.Copy
Worksheets("Feuil2").Range("A" & Z)" mais ca ne fonctionne pas ?
De plus (aprés coup), comment réintégrer les cellules déplacés dans la
"Feuil1" d'origine mais dans une colonne sur le côté (colonne "L" par
exemple) et ceci par une autre macro (si ce n'est pas trop demander).


----- Original Message -----
From: "michdenis"
Newsgroups: microsoft.public.fr.excel
Sent: Wednesday, February 24, 2010 1:57 AM
Subject: Re: Macro recherche cellule mise en forme de type - - -


Fichier exemple là : http://cjoint.com/?cyb47ogTDB



"fran25" a écrit dans le message de groupe de
discussion :

La macro ne bloque plus et j'ai précisé les caracteristiques du format
recherché
mais je ne retrouve rien en "Feuil3" ?

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches

.Borders(xlEdgeRight).ColorIndex = 41 'jaune clair
.Borders(xlEdgeBottom).ColorIndex = 41
.Interior.ColorIndex = 36 'bleu clair
.Locked = True

'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set c = .Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then
adr = c.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
c.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set c = .Find(What:="", after:=c, SearchFormat:=True)
Loop Until c.Address = adr
End If
End With

End Sub

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

| Selection.Style = "Il 11"

Ceci permet d'affubler la sélection de cellule au style choisis.

Mais dans le With LeCellFormat ... End With
tu dois définir les éléments qui caractérisent le format de
ta cellule.
Exemple de caractéristique : Ces propriétés doivent appartenir
à l'objet "LeCellFormat"

With LeCellFormat
.Font.Bold = True
.Font.Size = 12
.Borders(xlEdgeRight).ColorIndex = 25
.Interior.ColorIndex = 12
.Locked = True
End with

Et cette ligne de code de la procédure :
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
tu peux la remplacer par ceci :
Set c = .Find(What:="", after:=c, SearchFormat:=True)



"fran25" a écrit dans le message de groupe de
discussion :

J'ai essayé mais la macro bloque à "C.copy
Worksheets("Feuil2").Range("A"
&
Z)"
(merci pour la commande Format/style ,je ne la connaisais pas).

je mets en copie la macro en question

Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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
'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
Selection.Style = "Il 11"
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil2") 'Nom Feuille à adapter
Set Rg = .Range("A1:o46") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z + 1
C.Copy Worksheets("Feuil3").Range("A" & z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

End Sub


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

Merci pour votre réactivité (c'etait ma première question sur ce
groupe
de
discussion),
j'essaye et reviens vers vous.

Stls,
RV

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

Bonjour,

| J'aimerai donc savoir comment faire une macro qui applique une mise
en
forme
| du type (Ex: fond rouge; police en gras ; bordure basse et droite
bleu)
sur
| une zone de cellule en (feuil1) par rapport à une plage de cellule
située en
| (feuil3), (liste de personnes dans une colonne) et ceci pour pls
colonnes et
| donc pls formats de mise en forme.

Tu as pensé à créer un nouveau "style" à partir de la commande :
Format / Style

En vba, pour formater une plage de cellule, tu pourras utiliser une
commande ressemblant à ceci si le nom du Style est : "MonStyle"
Range("A1:A10").Style = "MonStyle"

| Puis faire une autre macro qui rechercher dans une zone de cellules
| (feuil1), celles qui sont mise en forme du type (Ex: fond rouge;
police
en
| gras ; bordure basse et droite bleu) et les extraire pour les
mettre
dans
| (feuil2).

Voici un exemple de code :

'---------------------------------------
Sub TrouverFormat()

Dim Rg As Range
Dim LeCellFormat As CellFormat

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

'Insère tous les éléments de formatage dont sont
'affublées les cellules que tu recherches
.Interior.ColorIndex = 36
.Font.Size = 12
'etc..La liste peut être longue ...
End With

'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("A:A") ' Plage de la recherche à adapter
End With

'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
z = z +1
C.copy Worksheets("Feuil2").Range("A" & Z)
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell,
SearchFormat:=True)
Loop Until C.Address = adr
End If
End With

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