Colorisation de cellule en fonction de saisie avec boucle

marti018

XLDnaute Junior
Bonjour,
je vous explique mon petit souci..

j'ai un tableau avec des colonnes qui contiennes elles même trois sous colonnes.

En fonction de la saisie faite en entete de colonne principale les sous colonnes se colorisent.

j'ai inclu une boucle car je peux rajouter des colonnes au fur et à mesure

seulement cela ne fonctionne pas...:rolleyes:

comment faire pour que le code s'actualise à chaque foi que ces cellules sont modifiées et non pas les cellules de toute la feuille....

je suis client de toute proposition..je joins mon classeur pour une explication plus claire.

merci d'avance...
julien.
 

Pièces jointes

  • 25.07 envoi.zip
    22.2 KB · Affichages: 35

porcinet82

XLDnaute Barbatruc
Re : Colorisation de cellule en fonction de saisie avec boucle

Salut marti018,

Il me semble bien reconnaitre ce fichier !!!
Il faut etre un peu plus precis dans tes explications ca là, pas evident de tout comprendre.
Tu dis
En fonction de la saisie faite en entete de colonne principale les sous colonnes se colorisent
, mais a quoi correspond les entete de colonne princiaple, les sous colonnes...

Tu dis également
comment faire pour que le code s'actualise à chaque foi que ces cellules sont modifiées et non pas les cellules de toute la feuille....
, qu'enteds-tu par la?

En pièce jointe, mets nous ton fichier de départ et le résultat que tu souhaites obtenir apres traitement de la macro. Et dis nous quel code doit t'on modifier parce que j'ai jeté un oeil et il y en a pas mal, même si Pascal te la un peu raccourci...

@+
 

Charly2

Nous a quittés en 2006
Repose en paix
Re : Colorisation de cellule en fonction de saisie avec boucle

Bonjour Julien, bonjour Romain,
bonjour à toutes et à tous :)

Pour en rajouter une couche de plus après mon ami Romain, je ne comprends pas ton code :

Code:
[SIZE=1][FONT=Courier New][COLOR=blue]Sub[/COLOR] Colorisation()
[COLOR=green]'[/COLOR]
[COLOR=blue]Dim[/COLOR] v [COLOR=blue]As Integer[/COLOR]
[COLOR=blue]Dim[/COLOR] nbrcolonne [COLOR=blue]As Integer[/COLOR]
[COLOR=green]'[/COLOR]
  nbrcolonne = Range("A10").End(xlToRight).Column
 
  [COLOR=blue]For[/COLOR] v = 1 [COLOR=blue]To[/COLOR] nbrcolonne
    [COLOR=blue]Set[/COLOR] zone1 = Range("C" & v)
 
    [COLOR=blue]If[/COLOR] zone1 = "M" [COLOR=blue]Then[/COLOR]
      ColorisationSiM
    [COLOR=blue]ElseIf[/COLOR] zone1 = "I" [COLOR=blue]Then[/COLOR]
      ColorisationSiI
    [COLOR=blue]ElseIf[/COLOR] zone1 = "O" [COLOR=blue]Then[/COLOR]
      ColorisationSiO
    [COLOR=blue]End If[/COLOR]
 
  [COLOR=blue]Next[/COLOR] v
 
[COLOR=blue]End Sub[/COLOR][/FONT][/SIZE]

A priori, je crois comprendre que v est une variable représentant la colonne en cours de traitement. Or tu fais ensuite :

Set zone1 = Range("C" & v)

C est la colonne et v aussi !!! :eek:

Là, je pense qu'il nous faudrait, comme te l'a dit Romain, ton fichier avec l'intégralité du code.

Une dernière chose : si tu as construit une maquette de ta feuille en ayant placé les couleurs (sauf si la lettre à prendre en compte est en ligne 9), l'insertion de trois colonnes en fin de tableau conservera la mise en forme...

A+ ;)
 

marti018

XLDnaute Junior
Re : Colorisation de cellule en fonction de saisie avec boucle

avant tout merci pour votre aide...;)

je n'ai pas été trés clair je me reprends, je vous met un exemple de ce que j'aimerai produire en pièce jointe..je pense que vous allez tout de suite voir ou est mon soucis...si la lettre saisie est M ( comme main d'oeuvre mensuelle) alors j'aimerai que les cellules se colorisent en bleu ( le nom du monteur, la cellule heures effectuées, la cellules flash,colonne heures effectuées, la colonne flash) meme chose si "I " (pour intérimaire)mais en rouge..etc..

quand j'ai dis
comment faire pour que le code s'actualise à chaque foi que ces cellules sont modifiées et non pas les cellules de toute la feuille....
je voulais juste que le code s'actualise en fonction de la saisie des données dans la zone de saisie zone1 sans mettre un bouton et sans me servir de sheetchange parce qu'il parrait que c'est bien trop lourd d'aprés ce que l'on m'a dis...(je sais ce sont des questions de newbie mais je ne me suis mis au vbal que depuis 2 semaines..

charly2 j'ai mis
Set zone1 = Range("C" & v)
car j'aimerai que le code s'applique jusqu'à la dernière colonne mais comme celle-ci est variable je spécifie la ligne puis une variable egale au nombre de colonne..mais à mon avis vu la tete que tu fais ce doit être faux:)

en tout cas merci de votre attention et de votre patience

julien
 

marti018

XLDnaute Junior
Re : Colorisation de cellule en fonction de saisie avec boucle

Bonjour le forum,le fil

en ce qui concerne la question suivante
comment faire pour que le code s'actualise à chaque foi que ces cellules sont modifiées et non pas les cellules de toute la feuille....

j'ai trouvé la réponse elle provient de porcinet82 sur un autre fil ..
je crois que ce que je voulais obtenir c'est ça:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)



Par contre,S'il vous pliz je pourrai avoir un tout petit indice pour me débloquer de la situation, à savoir que le code ne fonctionne pas..pour les précisions ya pas de problème n'hésitaez pas à demander..

voilou, bonne journée à bientot :)
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Colorisation de cellule en fonction de saisie avec boucle

marti018 à dit:
Bonjour le forum,le fil

en ce qui concerne la question suivante


j'ai trouvé la réponse elle provient de porcinet82 sur un autre fil ..
je crois que ce que je voulais obtenir c'est ça:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)



Par contre,S'il vous pliz je pourrai avoir un tout petit indice pour me débloquer de la situation, à savoir que le code ne fonctionne pas..pour les précisions ya pas de problème n'hésitaez pas à demander..

voilou, bonne journée à bientot :)
Salut
Dnas le module de la feuille 1 :
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Err_Worksheet_Change
If Target.Row <> 9 Then GoTo Sort_Worksheet_Change
Dim Coul_1 As Long
Dim Coul_2 As Long
Dim Coul_3 As Long
Dim Coul_4 As Long
Dim Coul_5 As Long

Application.EnableEvents = False
Application.ScreenUpdating = False

Select Case UCase(Target)
    Case "M"
        Target = "M"
        Coul_1 = 37     'titre
        Coul_2 = 5      ' G
        Coul_3 = 33     ' D
        Coul_4 = 37     ' colG
        Coul_5 = 34     'col D
    Case "O"
        Target = "O"
        Coul_1 = 4     'titre
        Coul_2 = 50      ' G
        Coul_3 = 35     ' D
        Coul_4 = 35     ' colG
        Coul_5 = 4     'col D
    Case "I"
        Target = "I"
        Coul_1 = 3     'titre
        Coul_2 = 3      ' G
        Coul_3 = 38     ' D
        Coul_4 = 38     ' colG
        Coul_5 = 3     'col D
    Case Else
        Target = ""
        Coul_1 = -4142     'titre
        Coul_2 = -4142      ' G
        Coul_3 = -4142     ' D
        Coul_4 = -4142     ' colG
        Coul_5 = -4142     'col D
End Select
'Titre
Cells(Target.Row - 3, Target.Column).Interior.ColorIndex = Coul_1
Cells(Target.Row + 1, Target.Column).Interior.ColorIndex = Coul_2
Cells(Target.Row + 1, Target.Column + 2).Interior.ColorIndex = Coul_3
Range(Cells(11, Target.Column).Address & ":" & _
      Cells(62, Target.Column).Address).Interior.ColorIndex = Coul_4
Range(Cells(11, Target.Column + 2).Address & ":" & _
      Cells(62, Target.Column + 2).Address).Interior.ColorIndex = Coul_5

If Coul_5 = -4142 Then MsgBox ("Same player shoot again !!!")

Sort_Worksheet_Change:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Exit Sub
Err_Worksheet_Change:
    MsgBox (Err.Number & " - " & Err.Description)
    Resume Sort_Worksheet_Change
End Sub
A+
 

marti018

XLDnaute Junior
Re : Colorisation de cellule en fonction de saisie avec boucle

je te remercie pour ta réponse..chapeau je vais décortiquer tout ça..merci beaucoup tu as du prendre du temps pour retaper tout le code....merci
je m'y met A+
salutations trés trés distinguées

ps: je t'en reparle dés que je l'ai lu et compris:)
 

Gorfael

XLDnaute Barbatruc
Re : Colorisation de cellule en fonction de saisie avec boucle

Pascal76 à dit:
Bonjour

J'ai pris quelques minutes pour regarder ton fichier et j'ai un peu tout modifié à toi de voir
salut à tous
Question pour Pascal76
pourquoi tu déclares en constante tes couleur, pour les réaffecter à des variables ? Habitude ou raison fonctionnelle ?
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Colorisation de cellule en fonction de saisie avec boucle

Re

Les 2 mon capitaine LOL

En fait avec les couleurs je fais souvent cela car lorsqu'il faut modifier une couleur parceque ça plait plus au chef ou pour toute autre raison je trouve plus simple d'avoir toutes les couleurs en début dans des cosntantes plutot que de chercher dans le code

Bon c'est juste une habitude prise après avoir bien galérer dans certains cas

Bonne journée
 

marti018

XLDnaute Junior
Re : Colorisation de cellule en fonction de saisie avec boucle

merci à tous les deux pour votre aide ...c'est impressionnant de voir que l'imaginationpeut produire des code différents et parvenir au même résultat, je suis bluffé....moi je ne voyais pas du tout les choses comme ça mais je peut pas trop m'en vanter j'ai faux :D

j'ai tout de même quelques petites question je vais comencer par Gorfael parce je n'ai lu que ce code pour l'instant...

PHP:
On Error GoTo Err_Worksheet_Change

ça j'avoue je ne sais pas ce que cela signifie

PHP:
 If Target.Row <> 9 Then GoTo Sort_Worksheet_Change

et là je me demande ausi ce que cela veux dire

PHP:
Application.EnableEvents = False 
Application.ScreenUpdating = False

j'ai une idée de ce que cela peut vouloir dire, je pense que cela fige la feuille mais je ne sais pas pourquoi

PHP:
If Coul_5 = -4142 Then MsgBox ("Same player shoot again !!!")
et enfin merci pour cette note d'humour ça fait plaisir!!!

a++
 
Dernière édition:

marti018

XLDnaute Junior
Re : Colorisation de cellule en fonction de saisie avec boucle

Pascal tu peux me dire ce que cela signifie??

PHP:
If Not Intersect(Range("A9:IV9"), Target) Is Nothing Then
On Error GoTo fin
je crois que comme pour Gorfael cela signifie qe s'il n'y as rien dans ce que j'appelle la zone de saisie on va à la fin de la procédure..mais pourquoi
(Range("A9:IV9"), Target)

je suis un peu perdu
mais je comprends un peu mieu ton code:rolleyes: ça ce rapproche plus de ce que j'avais imaginé mais bon je suis encore loin....

celui de Gorfael et trés bien aussi!!:D :D
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Colorisation de cellule en fonction de saisie avec boucle

RE

Juste pour tester que le changement s'effectue bien sur la ligne 9

Et le on error goto fin m'envoie à la ligne fin c'est-à-dire la ligne que j'ai nommé ainsi tout en bas de la procédure en cas d'erreur

Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 069
Membres
103 453
dernier inscrit
Choupi