Modification macro pour couleur cellules

Bonjour à tous

Voila j'ai programme qui fonctionne très bien grace à votre aide

mais une modification est nécessaire sur une Macro pour un bon résultat

j'ai tenter de faire cette modif mais bug je suis pas à la hauteur de résoudre ce problème.

voici la ligne que j'ai rajoutée

.Range(.Cells(i, j).Offset(0, 2), .Cells(i, j).Offset(0, Range("o34") - 28)).Interior.ColorIndex = 5 'Bleu fonçé de "29 à 42"-"modification personnel"

qui est à modifier !!!

je vous joint une petite partie de ce fichier.

Merci aux prochains intervenants

19grille.zip (46.02 Ko)

Bonjour Gabinos, bonjour le forum,

Je n'ai pas pris le temps de bien regarder ton fichier mais je vois des points dans ta ligne de code. J'imagine qu'elle est précédée d'un : With Sheets("feuil2") et terminée par un End With.

Dans ce cas ne manquerait-il pas un point devant Range("o34") ?

.Range(.Cells(i, j).Offset(0, 2), .Cells(i, j).Offset(0, .Range("o34") - 28)).Interior.ColorIndex = 5 'Bleu fonçé de "29 à 42"-"modification personnel"

merci de vous occuper de mon problème

mais sa change rien au résultat.

je refait une petite modif qui est presque bonne , voila

les cellules bleu fonçées sont régler

.Range(.Cells(i, j).Offset(0, 2), .Cells(i, j).Offset(0, Range("o34") - 27)).Interior.ColorIndex = 5 'Bleu fonçé de "29 à 42"-"modification personnel"

il me reste le souci que sa déborde de 2 cases bleu clair sur les colonnes séparation de couleur Vert

faire l'essai c'est imperceptible à vue d'oeil

j'ai juste fait -27 à la la place de -28 sur la ligne en cause.

on s'approche du résultat attendu !

je vous remet un exemple plus concret.

18grille01.zip (45.96 Ko)

Re,

Je ne comprends rien à tes conditions If. Les commentaires de code ne correspondent pas au code.

Voici ton code avec les commentaires correspondants. Tu verras qu'il y a des aberrations. J'ai mis systématiquement des points devant les Range car, malgré ce que tu dis, ça a une importance...

With Sheets("feuil2")
    For j = 3 To 100 Step 16 'de la colonne C à la colonne ?? afin d'être large (au 10.12.2012, dernière colonne utilisée = 90)
        For i = 5 To 100 'de la ligne 5 à la ligne 100 afin d'être large.  ATTENTION, IL Y A DEUX TABLEAUX L'UN SOUS L'AUTRE
            If .Cells(i, j) = .Range("M34") And .Cells(i, j).Offset(0, 1) = .Range("N34") Then ' On a trouvé les bonnes cellules à modifier
                If .Range("O34") <= 14 Then 'condition 1 : si O34 est inférieur ou églale à 14
                    .Range(.Cells(i, j).Offset(0, 2), .Cells(i, j).Offset(0, .Range("O34") + 1)).Interior.ColorIndex = 3 'Rouge de "1 à 14"
                Else ' sinon (condition 1), donc si O34 est supérieur à 14
                    .Range(.Cells(i, j).Offset(0, 2), .Cells(i, j).Offset(0, .Range("O34") - 13)).Interior.ColorIndex = 8 'Bleu clair de "15 à 28"
                    If .Range("O34") <= 28 Then 'condition 2 : si O34 est iférieur ou égale à 28, donc est compris entre 15 et 28 (bizarrement là, rien ne se passe)
                    Else ' sinon (condition 2), donc O34 et supérieur à 28
                        .Range(.Cells(i, j).Offset(0, 2), .Cells(i, j).Offset(0, .Range("O34") - 27)).Interior.ColorIndex = 5 'Bleu fonçé de "29 à 42"-"modification personnel"
                        If .Range("O34") <= 26 Then 'condition 3 : cette condition ne sera jamais remplie il faudrait la placer avant !
                            .Range(.Cells(i, j).Offset(0, .Range("o34") - 12), .Cells(i, j).Offset(0, 15)).Interior.ColorIndex = 48 'Gris Fonçé "cellule 0 neutre"
                        End If 'fin de la condition3
                    End If 'fin de la condition 2
                End If 'fin de la condition 1
                Exit Sub 'sort de la procédure
            End If 'fin de la condition 1
        Next i
    Next j
End With

merci de t'avoir pencher sur cette macro.

si ta le temps remettre dans l'ordre les conditions comme tu le précise

1° condition c'est color rouge

2° condition c'est color bleu clair

3° condition c'est color Bleu fonçé

l'autre condition c'est Gris Foncé cellule neutre

j'ai remis le point devant chaque .Range un oublie certes

mon problème c'est que la couleur bleu foncé rempli bien son rôle

sauf quelle déborde de 2 cases sur les colonnes "vert"

"Précision je suis un amateur je tatonne , je ne suis pas un prof"

Merci pour toutes ces infos, on en apprend tout les jours.

Re,

On a tous commencé en tâtonnant et je suis loin d'être pro !...

Ce que j'aimerais que tu me précises, se sont le conditions :

1ère - inférieur (ou égal) à... ou de tant à tant ou supérieur (ou égal) à ...

2ème - inférieur (ou égal) à ... ou de tant à tant ou supérieur (ou égal) à ...

3ème - inférieur (ou égal) à ... ou de tant à tant ou supérieur (ou égal) à ...

Ça me sera plus facile pour écrire le code et le tester...

La 1ère condition doit être égal ou Sup à 1 et inf à 15

la 2ème condition doit être égal ou sup à 15 et inf ou égal à 28

la 3 éme condition doit être égal ou sup à 29 et égal à 42 ou inf à 43

voila cette demande .

charlie

Bonsoir Gabinos, bonsoir le forum,

J'ai réinitialiser ton tableau en remettant les couleurs d'origine et j'ai retapé toutes les séries qu'il contenait. Je n'obtiens aucun dépassement avec le code ci-dessous. Comme il se trouve est dans l'événement Change de l'onglet, il est inutile d'y faire référence. J'ai donc supprimé le With... End With et tous les points qui allaient avec. J'ai remplacé les If par un Select Case beaucoup plus adapté à ton cas

Le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer, J As Integer

If Range("O34") < 1 Or Range("O34") > 60 Then Exit Sub
If Not Application.Intersect(Target, Range("M34:N34")) Is Nothing Then
    For I = 5 To 100 'de la ligne 5 à la ligne 100 afin d'être large.  ATTENTION, IL Y A DEUX TABLEAUX L'UN SOUS L'AUTRE
        For J = 3 To 100 Step 16 'de la colonne C à la colonne ?? afin d'être large (au 10.12.2012, dernière colonne utilisée = 90)
           If Cells(I, J) = Range("M34") And Cells(I, J).Offset(0, 1) = Range("N34") Then ' On a trouvé les bonnes cellules à modifier
                Select Case Range("O34")
                    Case 1 To 14
                        Range(Cells(I, J).Offset(0, 2), Cells(I, J).Offset(0, Range("O34") + 1)).Interior.ColorIndex = 3 'Rouge de "1 à 14"
                    Case 15 To 28
                        Range(Cells(I, J).Offset(0, 2), Cells(I, J).Offset(0, Range("O34") - 13)).Interior.ColorIndex = 8 'Bleu clair de "15 à 28"
                    Case 29 To 48
                        Range(Cells(I, J).Offset(0, 2), Cells(I, J).Offset(0, Range("O34") - 27)).Interior.ColorIndex = 5 'Bleu fonçé de "29 à 42"-"modification personnel"
                End Select 'fin de la condition3
               Exit Sub 'sort de la procédure
           End If 'fin de la condition 1
       Next J
    Next I
End If
End Sub

Le fichier :

19gabinos-v01.xlsm (73.68 Ko)

Merci

les premiers test sont parfait

je replace sa dans mon prog d'origine et te tient au courant

Tout est top

un grand merci pour cette aide rapide éfficasse

Très Très satisfait

Joyeux Noël

Rechercher des sujets similaires à "modification macro couleur"