Mettre un x dans une cellule en fonction d'une valeur d'une autre feuille

Bonjour

Je souhaiterai que lorsque je saisi une valeur dans la colonne E de la feuille "Feuil1"
Un x soit inscrit automatiquement à l'intersection de la colonne et du mois (dans la feuil2) correspondant à la valeur.
Exemple : pour la valeur 1, un x soit inscrit en colonne 1 et ligne du mois en cours. Merci

fichier joint :
6classeur1.xlsm (19.34 Ko)

Bonsoir,

le compte est bon pour moi ! Voici donc ma solution à base d'une condition SI et d'un SOMMEPROD :

6classeur1-lrd.xlsm (19.40 Ko)

Attention, j'ai mis en commentaire votre code VBA "CHANGE" pour ne pas être embêter.

@ bientôt

LouReeD

Bonsoir

Excellent comme solution. Merci.

Si quelqu'un a une solution en VBA, je suis preneur.

Désolé, je n'avait pas compris cela !

@ bientôt

LouReeD

Voilà un essai :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LeChiffre, LeMois, LaColonne, LaLigne
    If Not Intersect(Target, Range("Zone")) Is Nothing And Target.Count = 1 Then
        LeMois = Month(Now)
        LeChiffre = Target.Value
        If LeChiffre > 10 Then LaColonne = LeChiffre - 10 + 3 Else LaColonne = LeChiffre + 3
        If LeMois > 8 Then LaLigne = LeMois - 5 Else LaLigne = LeMois + 7
        If LeChiffre > 10 Then LaLigne = LaLigne + 14
        Sheets("Feuil2").Cells(LaLigne, LaColonne).Value = "X"
    End If
End Sub

Code à "mettre" sur la feuille car s'est une surveillance événementielle "Change" sur le Range "Zone" qui est une plage nommée correspondant à votre quadrillage.

Le code ne prend pas en compte le changement d'une valeur pour effacer éventuellement un X qui devrait ne plus être...

@ bientôt

LouReeD

Bonjour à tous, Bonjour LouReeD,

Comme la date en E1 est potentiellement changeante je me doutais qu'il faudrait du VBA. Donc voici un code horriblement moche mais fonctionnel avec le tableau fourni (par contre dès que vous modifierez la structure, les données de votre tableau de la feuille 2 ça ne fonctionnera plus ..) :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim L%
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, [E3:E15]) Is Nothing And Target <> "" Then
    With Worksheets("Feuil2")
        For L = 4 To 15
            If Month(.Cells(L, 3)) = Month([E1]) Then L = L: Exit For
        Next L
        If Target > 10 Then
            .Cells(L + 14, Target - 7) = "x"
            Else
            .Cells(L, Target + 3) = "x"
        End If
    End With
End If
End Sub

Vu que vous ne nous avez pas donné de détail sur le fonctionnement final je ne me suis pas occupé de la partie effacement de données, plage plus grande que E3:E15, nombre déjà présents, etc ... Je suis parti du principe qu'à chaque fois qu'une valeur était ajoutée sur la plage E3:E15 de votre 1ère feuille, elle se retrouvait sur la 2ème.

Si ça ne correspond pas merci de bien préciser le besoin.

Cdlt,

Edit ; Quasiment les mêmes remarques que LouReeD !

Merci à vous deux.

Pour moi c'est bon. Bon travail, encore merci.

Bonjour Ergotamine !

Presque les mêmes remarque mais pas le même nombre de points !

@ bientôt

LouReeD

Rechercher des sujets similaires à "mettre fonction valeur feuille"