macro couleur de cell

J

jean michel

Guest
bonjour à tous,

j'ai encore besoin de votre aide
je galère sur une macro

je voudrais écrire une macro capable de scanner dans une page toutes les cellule peintes en jaune (colorIndex = 36) et qu'ensuite elle copie colle en valeur uniquement ces champs de cellules

ma question se décompose donc en plusieurs questions auxquelles vous pourrez pt répondre :
1. comment dire à une macro de chercher toutes les cellules peintes en jaunes
2. comment lui dire de sélectionner les cellule jaunes
3. lui dire de faire un copy paste value only (ca je devrait m'en sortir)

Merci d'avance pour votre aide

cordialement
JM
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Jean Michel, bonjour le forum,

Je te propose une solution qui utilise un tableau dynamique qui enregistre les cellules peintes en jaunes sur une plage donnée (à adapter à ton cas) puis, les restitue dans une autre feuille :


Sub Macro1()
Dim Cel As Range 'déclare la variable Cel
Dim Tabl() As Variant 'déclare le tableau de variable Tabl
Dim x As Integer 'déclare la variable x
Dim y As Integer 'déclare la variable y

x = 0 'définit la variable x
For Each Cel In Range('A1:B10') 'boucle sur toutes les cellule de la plage (plage à adapter à ton cas)
If Cel.Interior.ColorIndex = 36 Then 'condition : si la cellule Cel est jaune
ReDim Preserve Tabl(x) 'redimensionne le tableau Tabl
Tabl(x) = Cel.Value 'ajoute la valeur de la cellule au tableau de variables
x = x + 1 'redéfinit la variable x
End If 'fin de la condition
Next Cel 'prochaine cellule de la plage

For y = 0 To UBound(Tabl, 1) 'boucle sur toutes les valeurs du tableau
'sélectionne la feuille 'tafeuille' (à adapter) et
'restitue les valeurs dans la colonne A (à partir de A1)
Sheets('tafeuille').Cells(y + 1, 1).Value = Tabl(y)
Next y

End Sub
 
J

Jeanpaul

Guest
utiliser l'instruction
for each cellule in 'la feuille en question'.cells
if interior.colorindex = xxxx (à désigner)
.....faire ceci ou cela

next cellule

c'est une bonne base pour réussir
utilisez l'aide de VBA pour ne pas faire d'erreur de syntaxe ou ... d'orthographe

bon courage, et à plus tard peut-être
 
J

Jean-paul

Guest
la sélection des cellules se fait par l'instruction if interior.colorindex =
suivi du numéro de la couleur à trouver.
s'il y a plusieurs nuances de jaune à trouver, il faut les répertorier toutes et modifier l'instruction
if interior.colorindex = numéro1 or interior.colorindex= numéro2...etc.

on peut aussi placer toutes les valeurs de couleur dans une suite de cellules contigües (ou pas) lui attribuer un nom 'mescellules'et utiliser
for each cellule in mescellules
if....colorindex....etc
 
J

jean michel

Guest
si je te donne un exemple peux-tu regarder stp et me dire ou cela plante

je te remercie par avance


JM [file name=colormacro.zip size=8060]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/colormacro.zip[/file]
 

Pièces jointes

  • colormacro.zip
    7.9 KB · Affichages: 24

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

regarde ton fichier avec la nouvelle macro si j'ai bien compris

[file name=colormacro_20050915122439.zip size=7799]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/colormacro_20050915122439.zip[/file]
 

Pièces jointes

  • colormacro_20050915122439.zip
    7.6 KB · Affichages: 9
J

jean michel

Guest
et bien pascal tu as encore frappé très fort du moins tu réponds toujours aussi bien à mes questions

mais pour transformer l'essai un peu d'explication me ferait le plus grand bien

peux-tu me dire ce que signifieSpecialCells(xlCellTypeLastCell).Column

dans
colonne = Sheets('a').Range('A1').SpecialCells(xlCellTypeLastCell).Column
ligne = Sheets('a').Range('A1').SpecialCells(xlCellTypeLastCell).Row

For Each cell In Sheets('a').Range(Cells(1, 1), Cells(ligne, colonne))
If cell.Interior.ColorIndex = 36 Then cell = cell.Value
Next cell

encore merci ct parfait
jm
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re

Soit tu protèges tes feuilles par macro en userinterfaceonly (voir les fils de thierry sur le sujet soit tu mets cette ligne en début de code avec le mot de passe s'il y en a un

Sheets('a').Unprotect password:='123'

puis en fin de code

Sheets('a').Protect password:='123'
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re

Voici ton fichier modifié

Cela te remplacera les formules par les valeurs des cellules en jaune si elles ne sont pas protégées. Si protection pas de remplacement [file name=colormacro_20050916081043.zip size=8076]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/colormacro_20050916081043.zip[/file]
 

Pièces jointes

  • colormacro_20050916081043.zip
    7.9 KB · Affichages: 10
J

jean michel

Guest
super pascal merci pour cette solution ca marche sur le fichier colormacro.xls

mais je voudrais la lancer du fichier colormacro pour le fichier le faire sur un autre fichier et j'y arrive pas
je pense qu'il fo rajouter workbooks('autrefichier.xls') mais rien ne se passe.
saurais-tu une dernière me guider stp ?

merci et bravo
 

PascalXLD

XLDnaute Barbatruc
Modérateur
RE

Voici ton fichier sans les macros je t'ai déplacé les macros dans le deuxième classeur

Bon courage [file name=ClasseurMacro.zip size=13652]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ClasseurMacro.zip[/file]
 

Pièces jointes

  • ClasseurMacro.zip
    13.3 KB · Affichages: 18

Discussions similaires

Réponses
20
Affichages
2 K

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 974
dernier inscrit
chmikha