Colorer cellule de droite en fonction de celle de gauche

Bonjour,

Ce sujet a probablement déjà été traité dans ce forum, peut-être que c'est ma formulation qui m'empêche de tomber sur la bonne discussion qui puisse m'éclairer. Alors, je pense devoir le soumettre.

En fait, je saisie des données dans 2 colonnes côte à côte (G et H).

Je souhaite que les cellules de la colonne H se colorient si j'omets d'y inscrire une valeur attendue compte tenu des 2 premiers caractères du contenu de celle de gauche.

Voir fichier ci-joint pour plus de clarté.

Merci par avance.

Jeanba

Bonjour,

voici un code à coller dans le VBA de ta feuille concernée. A toi de changer les colonnes adéquates suivant ton fichier original.

Private Sub Worksheet_Change(ByVal Target As Range)

For Each Cel In Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row)

If Cel.Value Like "41*" Then
    If Not Range(Cel.Address).Offset(0, 1).Value Like "00*" Then
        Range(Cel.Address).Offset(0, 1).Interior.Color = vbRed
            Else
                Range(Cel.Address).Offset(0, 1).Interior.Color = xlNone
    End If
End If

Next Cel
End Sub

A plus

Bonjour

La MFC en place

Cordialement

j' ai transformé les plage déjà rempli en G et H en tableau

donc quand on ajoute une ligne supplémentaire, la mise en forme conditionnelle se répercute sur la nouvelle ligne du tableau

si tu ne connais pas la notion de tableau, fais moi signe

Bonjour à tous et merci pour vos réponses rapides.

En fait, je voulais pas le faire avec la mise en forme conditionnelle, mais par le code vba car mon projet comprend plusieurs feuilles concernées par cette problématique et si je dois le faire feuille par feuille, ce serai très fastidieux. et puis, si l'user ajoutait une autre feuille, ça marcherait pas.

Alors, Braters, merci. Je vais peut-être l'inclure dans un module plutôt que dans chaque feuille.

Mais, est-il possible, par IsDate de limiter ce traitement seulement aux feuilles correspondant aux mois de l'année?

C'est à dire si la feuille active est différente de "Accueil" et est un nom de mois, CODE?

Merci encore

Jeanba


Braters a écrit :

voici un code à coller dans le VBA de ta feuille concernée. A toi de changer les colonnes adéquates suivant ton fichier original.

Braters,

Ce code collé dans la feuille concernée ne fait - semble-t-il - que colorer la cellule, mais ne prends pas en compte la correction.

Même si on saisie la valeur dans la cellule colorée, la couleur ne disparaît pas.

J'ai sûrement pas insérer au bon endroit...

Quelqu'un d'autre l'a t-il essayé aussi?

En fait, cela dépend de ce que tu appelles "corriger" ? D'après ton fichier j'ai considéré que la correction était une valeur commençant par "00" et un chiffre. Si pour toi la correction ne signifie uniquement de compléter la case alors il faut remplacer la ligne :

If Not Range(Cel.Address).Offset(0, 1).Value Like "00*" Then

Par

If Range(Cel.Address).Offset(0, 1).Value = "" Then

et cela devrait fonctionner.

Tu peux mettre cette macro dans un module et mettre ce code sur les feuilles voulues :

Private Sub Worksheet_Change(ByVal Target As Range)

Call Module1.couleur

End Sub

(En appelant la macro "couleur")

A plus

Par rapport à l'activation sur certaines feuilles.

Tu peux rajouter ceci en début de code :

If ActiveSheet.Name = "Janvier" Or _
   ActiveSheet.Name = "Février" Or _
   ActiveSheet.Name = "Mars" Or _
   ActiveSheet.Name = "Avril" Or _
   ActiveSheet.Name = "Mai" Or _
   ActiveSheet.Name = "Juin" Or _
   ActiveSheet.Name = "Juillet" Or _
   ActiveSheet.Name = "Août" Or _
   ActiveSheet.Name = "Septembre" Or _
   ActiveSheet.Name = "Octobre" Or _
   ActiveSheet.Name = "Novembre" Or _
   ActiveSheet.Name = "Décembre" Then

'TON CODE

End if

Et tu peux appeler le module dans ThisWorkBook comme ceci :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Call Module1.couleur

End Sub

En suivant tes recommandations, ça donne les codes suivants:

Module 1:

Sub ControleTiersSaisie()
If ActiveSheet.Name = "Janvier" Or _
   ActiveSheet.Name = "Février" Or _
   ActiveSheet.Name = "Mars" Or _
   ActiveSheet.Name = "Avril" Or _
   ActiveSheet.Name = "Mai" Or _
   ActiveSheet.Name = "Juin" Or _
   ActiveSheet.Name = "Juillet" Or _
   ActiveSheet.Name = "Août" Or _
   ActiveSheet.Name = "Septembre" Or _
   ActiveSheet.Name = "Octobre" Or _
   ActiveSheet.Name = "Novembre" Or _
   ActiveSheet.Name = "Décembre" Then
    For Each cel In Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row)
        If cel.Value Like "41*" Then
        If Range(cel.Address).Offset(0, 1).Value = "" Then
            Range(cel.Address).Offset(0, 1).Interior.Color = vbRed
                    Else
                        Range(cel.Address).Offset(0, 1).Interior.Color = xlNone
            End If
        End If
    Next cel
End If
End Sub

This Wrkbook:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Call Module1.ControleTiersSaisie

End Sub

Malheureusement, en saisie dans mes feuilles Janvier à décembre, il se passe rien....

Peut-être un truc que j'ai mal reproduit...?

normalement c'est tout bon,

Voici mon fichier qui fonctionne.

Braters,

Effectivement, j'ai testé ton fichier, ça marche.

J'ai copié le code chez moi, ça fonctionne pas, peut-être par ce que j'ai mis des listes de validation sur les cellules de la colonne H...?

Non, je sais pourquoi ça marche pas. L'explication est que j'ai déjà demandé au programme de colorer les lignes de saisies à la même date. Donc, lui demander une autre couleur pose problème!

Bon, je verrai comment faire.

Merci infiniment!

Non, je sais pourquoi ça marche pas. L'explication est que j'ai déjà demandé au programme de colorer les lignes de saisies à la même date. Donc, lui demander une autre couleur pose problème!

Bon, je verrai comment faire.

Merci infiniment!

Si tu nous envoies ton fichier, nous serons à meme de te répondre convenablement !

Sans fichier c'est compliquer de te dire où est le problème !

A plus

Rechercher des sujets similaires à "colorer droite fonction celle gauche"