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

Copie conditionnelle en fonction de la couleur d'un cellule

Aucune réponse
Avatar
Sandrine
Tout d'abord bonjour à tous, je vous lis régulièrement car je débute en
VBA et vos conseil me sont précieux.

D'après vos conseils j'ai essayé d'ecrire un petit bout de code pour
copier dans la feuille 2 de mon fichier les valeurs des cellules de la
feuille 1 en fonction de la couleur de fond.

dans une colonne j'ai sur la feuil1 :

bleu1
vert1
rouge1
bleu2
vert2
bleu3
vert3
rouge2

et dans la feuil2 je voudrais une colonne avec :

bleu1
bleu2
bleu3


Alors j'ai écrit un bout de code (en piochant des infos à droite à
gauche sur le net)qui ressemble à ça :

Sub Moi()

'je selectionne la premiere cellule ou je
'veux ecrire dans la feuil2 pour etre sûre
'que les offset plus tard se feront à
'partir de la bonne cellule
Worksheets("Feuil2").Activate
Sheets("Feuil2").Range("B4").Activate
'je selectionne la premiere cellule
'de ma colonne de la feuil1
Worksheets("Feuil1").Activate
Sheets("Feuil1").Range("B8").Activate
Do While ActiveCell.Value <> ""
If ActiveCell.Interior.ColorIndex = 8 Then
Mavariable = Selection.Value
Worksheets("Feuil2").Activate
Selection = Mavariable
ActiveCell.Offset(1, 0).Cells.Select
Worksheets("Feuil1").Activate
ActiveCell.Offset(1, 0).Cells.Select
End If
Loop
End Sub


Et croyez moi si vous voulez, mais quand je mets n'importe quelle
condition dans le IF, ça marche impeccable (OH MIRACLE ;-)) et quand je
mets la condition de couleur ça me plante excel. Pas un bug avec une
erreur qui offre l'option debogage, non non, le programme qui ne répond
plus du tout !!

Alors ma question est la suivante :
Quel est le probleme avec ma condition de couleur ?

Je sais qu'il y a des gens super balèzes qui me pourraient me filer un
bout de code tout pret a copier-collé, mais j'aimerais juste qu'on
explique ce qui va pas avec ma condition pour comprendre où j'ai
merdouillé ;-P.

Merci d'avancc pour votre aide.

Sandrine

2 réponses

Avatar
isabelle
bonjour Sandrine,

Sub Moi()
Dim c, x As Integer
Worksheets("Feuil1").Activate
For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
If c.Interior.ColorIndex = 5 Then
x = x + 1
Worksheets("Feuil2").Range("A" & x) = c
End If
Next
End Sub

isabelle


Tout d'abord bonjour à tous, je vous lis régulièrement car je débute en
VBA et vos conseil me sont précieux.

D'après vos conseils j'ai essayé d'ecrire un petit bout de code pour
copier dans la feuille 2 de mon fichier les valeurs des cellules de la
feuille 1 en fonction de la couleur de fond.

dans une colonne j'ai sur la feuil1 :

bleu1
vert1
rouge1
bleu2
vert2
bleu3
vert3
rouge2

et dans la feuil2 je voudrais une colonne avec :

bleu1
bleu2
bleu3


Alors j'ai écrit un bout de code (en piochant des infos à droite à
gauche sur le net)qui ressemble à ça :

Sub Moi()

'je selectionne la premiere cellule ou je
'veux ecrire dans la feuil2 pour etre sûre
'que les offset plus tard se feront à
'partir de la bonne cellule
Worksheets("Feuil2").Activate
Sheets("Feuil2").Range("B4").Activate
'je selectionne la premiere cellule
'de ma colonne de la feuil1
Worksheets("Feuil1").Activate
Sheets("Feuil1").Range("B8").Activate
Do While ActiveCell.Value <> ""
If ActiveCell.Interior.ColorIndex = 8 Then
Mavariable = Selection.Value
Worksheets("Feuil2").Activate
Selection = Mavariable
ActiveCell.Offset(1, 0).Cells.Select
Worksheets("Feuil1").Activate
ActiveCell.Offset(1, 0).Cells.Select
End If
Loop
End Sub


Et croyez moi si vous voulez, mais quand je mets n'importe quelle
condition dans le IF, ça marche impeccable (OH MIRACLE ;-)) et quand je
mets la condition de couleur ça me plante excel. Pas un bug avec une
erreur qui offre l'option debogage, non non, le programme qui ne répond
plus du tout !!

Alors ma question est la suivante :
Quel est le probleme avec ma condition de couleur ?

Je sais qu'il y a des gens super balèzes qui me pourraient me filer un
bout de code tout pret a copier-collé, mais j'aimerais juste qu'on
explique ce qui va pas avec ma condition pour comprendre où j'ai
merdouillé ;-P.

Merci d'avancc pour votre aide.

Sandrine


Avatar
Sandrine
Bonjour Isabelle,


Merci pour le code, ca merche impecable, mais j'ai un petit souci.
Dans ma feuille 2 j'aimerai que ca commence dan la colonne B a parti de
la ligne 3.
Ton code marche imppeccable à ce petit détail pret, mais du coup j'avoue
que j'y comprend plus rien.

Euh, au risque d'être un peu bornée quelqu'un peu m'expliquer pourquoi
la ligne "If ActiveCell.Interior.ColorIndex = 8 Then" plante mon excel ?
c'est juste par couriosité pour pas rester sur un échec quoi :-P

Merci en tout cas Isabelle, je vais essayer de trifouiller pour faire
démarrer à la ligne 3 mais pour l'instant j'ai réussi qu'a tout coincer ;-)

Sandrine




bonjour Sandrine,

Sub Moi()
Dim c, x As Integer
Worksheets("Feuil1").Activate
For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
If c.Interior.ColorIndex = 5 Then
x = x + 1
Worksheets("Feuil2").Range("A" & x) = c
End If
Next
End Sub

isabelle