coloration de colonnes et "décoloration"

Doom76

XLDnaute Nouveau
Bonjour,

Je ne sais pas ce qui est préférable, une macro (ma préférence) ou une MFC:

- tout d'abord, je voudrais que chaque fois que deux nombres identiques se suivent sur la ligne 2, l'une des deux colonnes se colore en bleu par exemple.

- ensuite, je voudrais que les cellules vertes redeviennent incolores mais que le texte devienne vert.

Ceci devrait se faire dans toutes les feuilles d'un fichier.

En pièce-jointe, un exemple simplifié. La feuille 2 représente le résultat auquel je voudrais arriver.

En espérant que ce soit clair...merci d'avance
 

Pièces jointes

  • Inventaire.xls
    20 KB · Affichages: 75
  • Inventaire.xls
    20 KB · Affichages: 81
  • Inventaire.xls
    20 KB · Affichages: 83

kjin

XLDnaute Barbatruc
Re : coloration de colonnes et "décoloration"

bonsoir,
- tout d'abord, je voudrais que chaque fois que deux nombres identiques se suivent sur la ligne 2, l'une des deux colonnes se colore en bleu par exemple
Sélectionnes les colonnes B à ...?
MFC --> la formule est --> =B$2=A$2
- ensuite, je voudrais que les cellules vertes redeviennent incolores mais que le texte devienne vert.
bin là, j'ai un peu plus de mal à comprendre
A+
kjin
 

Doom76

XLDnaute Nouveau
Re : coloration de colonnes et "décoloration"

Merci kjin pour la rapidité de ta réponse! C'est pas tout à fait ce que je souhaitais (je voulais que la colonne se colore) mais vu que c'est très léger, ça ira parfaitement :D

Concernant la deuxième partie de ma question, il faudrait que seules les cellules vertes (j'ai d'autres cellules colorées) redeviennent "incolore" et que le texte qui y est contenu devienne quant à lui vert.

Merci encore!
 

kjin

XLDnaute Barbatruc
Re : coloration de colonnes et "décoloration"

Bonsoir,
C'est pas tout à fait ce que je souhaitais (je voulais que la colonne se colore) mais vu que c'est très léger, ça ira parfaitement
:confused: Si tu as pris soins de sélectionner toutes les colonnes de ton tableau et que tu as bien mis les $ dans la formule, c'est toute la colonne qui se colore
Concernant la deuxième partie de ma question, il faudrait que seules les cellules vertes (j'ai d'autres cellules colorées) redeviennent "incolore" et que le texte qui y est contenu devienne quant à lui vert.
A part en VBA, je ne vois pas comment
A+
kjin
 

Doom76

XLDnaute Nouveau
Re : coloration de colonnes et "décoloration"

OK je n'avais pas compris cette subtilité. Un très grand merci à toi! :)

Concernant ma deuxième question, en effet, je pense qu'il faut faire une macro...

Des idées?

Merci d'avance.
 

kjin

XLDnaute Barbatruc
Re : coloration de colonnes et "décoloration"

Bonsoir,
Supprime la Mfc précédente et dans un module standard
Code:
Sub couleur()
Dim Ws As Worksheet, Cel As Range
For Each Ws In ActiveWorkbook.Sheets
    For Each Cel In Ws.UsedRange
        If Cel.Row = 2 And Cel = Cel.Offset(0, 1) Then Cel.EntireColumn.Interior.ColorIndex = 34
        If Cel.Interior.ColorIndex = 43 Then
            Cel.Interior.ColorIndex = xlNone
            Cel.Font.ColorIndex = 43
        End If
    Next
Next
End Sub
Attention, comme tu l'as demandé, ce sont toutes les feuilles qui sont concernées.De plus je me suis basé sur le "vert" (43) de ton modèle.
A+
kjin
A+
kjin
 

Doom76

XLDnaute Nouveau
Re : coloration de colonnes et "décoloration"

Alors là je n'ai qu'un mot...génial!!!! Merci infiniment!

J'aurais peut être une dernière petite chose à te demander.
Si je comprends bien, d'abord la macro colore les colonnes "doubles" et ensuite elle s'occupe de passer le texte en vert. Ne serait-il pas possible d'opérer dans l'autre sens de sorte que d'abord le texte se colore puis ensuite viennent les colonnes? Du coup, il y aurait aussi l'écriture verte dans les colonnes colorées.

Si tu as compris tout ce que j'ai écris, tu es un champion car c'est vraiment à s'arracher les cheveux :-D

Si tu ne peux pas, pas grave, la solution que tu m'as apportée est déjà vraiment fantastique!

Bonne soirée!
 

jeremie1977

XLDnaute Nouveau
Re : coloration de colonnes et "décoloration"

bonsoir

sinon moi j'ai ça
c'est plus simpliste mais je debute

Dim nb_lignes As Integer
Dim nb_colonnes As Integer

Sub initialisation()
'on regarde la dernière ligne du tableau
nb_lignes = Worksheets("feuil1").Cells(65536, 1).End(xlUp).Row
'on regarde la dernière colonne du tableau
nb_colonnes = Worksheets("feuil1").Cells(1, 255).End(xlToLeft).Column
End Sub



Sub couleur_texte()
'on apelle la procedure d'initialisation des variables
Call initialisation
'on fait deux boucles pour décrire toutes les cases du tableau
' i est l'indice de ligne
For i = 1 To nb_lignes
'j est l'indice de colonne
For j = 1 To nb_colonnes
' on regarde si la cellule que l'on scrute actuellement à le fond vert
If Worksheets("feuil1").Cells(i, j).Interior.ColorIndex = 43 Then
'si ou on enleve la couleur du fond
Worksheets("feuil1").Cells(i, j).Interior.ColorIndex = xlNone
' on colore la police en vert
Worksheets("feuil1").Cells(i, j).Font.ColorIndex = 43
End If
Next j
Next i
End Sub

Sub couleur_colonnes()
Call initialisation
For i = 1 To nb_colonnes
'on scrute toutes les cellules de la ligne 2
'on regarde si la valeur de la cellule actuelle est egal à la valeur qui est dans temp
If Worksheets("feuil1").Cells(2, i).Value = temp Then
'comme on renseigne temp en fin de boucle il y a dans temp la valeur de la cellule precedente
'donc si la valeur de la cellule actuelle est egale à la valeur de la cellule d'avant, on colore la colonne
Worksheets("feuil1").Columns(i).Interior.ColorIndex = 5
End If
'on stocke dans temp la valeur de la cellule actuelle pour la comparer à la prochaine cellule
temp = Worksheets("feuil1").Cells(2, i).Value
Next i
End Sub


il y une procedure pour les colonnes et une pour le texte
si ça peux aider...
 

kjin

XLDnaute Barbatruc
Re : coloration de colonnes et "décoloration"

Re, bonsoir jeremie,
C'était pas précisé mais je te concède que j'aurais du prévoir ;)
Code:
Sub couleur()
Dim Ws As Worksheet, Cel As Range, i as byte
For Each Ws In ActiveWorkbook.Sheets
    For Each Cel In Ws.UsedRange
        If Cel.Interior.ColorIndex = 43 Then
            Cel.Interior.ColorIndex = xlNone
            Cel.Font.ColorIndex = 43
        End If
    Next
    For i = 1 To Ws.UsedRange.Columns.Count
        If Ws.Cells(2, i) = Ws.Cells(2, i + 1) Then Ws.Columns(i).Interior.ColorIndex = 34
    Next
Next
End Sub
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 201
Membres
103 762
dernier inscrit
rouazali