Si une cellule de ma plage contient "En cours"

Re-Bonjour,

J'aimerais connaître le code qui permet de poser la condition: "Si une des cellules de la plage J7 à O7 contient "En cours" faire..."

Merci d'avance!

EDIT: Une cellule ou plusieurs d'ailleurs! C'est: si au moins une cellule contient "en cours"...

Bonjour,

sub test()
for x = 10 to 15
if cells(7,x).value ="en cours" then 
msgbox ok
'quand l'une de tes cellule contient "en cours"  
'coller ce que tu fais ici
exit for
next x
end sub

cordialement

Naubin

Je n'arrive pas a le faire fonctionner

Je l'ai mis dans le module "Alerte" et je l'appelle quand il y a une modification de la feuille "Résultats".

Pour créer une mesure ça se passe feuille "demande", mais pourtant, quand il y a une mesure "en cours", la cloche reste invisible, en revanche elle apparaît quand la mesure est terminée...

EDIT:

Sub Cloche()

Dim x As Integer

Sheets("Cloche").Shapes("Cloche").Visible = False

For x = 10 To 15

If Sheets("Résultats").Cells(7, x).Value = "En cours" Then 'quand l'une de tes cellule contient "en cours"

Sheets("Cloche").Shapes("Cloche").Visible = True

Exit For

End If

Next x

End Sub

Ce code me parait pourtant valide

je regarde ça

Merci de ton temps!

premièrement essaie de simplifier ton code il est beaucoup trop "lourd"

 If Target.Address = "$L$7" Or Target.Address = "$L$8" Then 'Si les cellules qui changent sont L7 ou L8
    Call HeureL9
    For i = 4 To 20
     If Sheets("demande").Range("E" & i).Value = "Schaudt" Then 'On cherche les pièces de la machine à mesurer
    Sheets("Demande").Range("H4").Value = Sheets("Demande").Range("A" & i).Value 'Transmet les données vers les pièces terminées
    Sheets("Demande").Range("I4").Value = Sheets("Demande").Range("B" & i).Value
    Sheets("Demande").Range("J4").Value = Sheets("Demande").Range("C" & i).Value
    Sheets("Demande").Range("K4").Value = Sheets("Demande").Range("D" & i).Value
    Sheets("Demande").Range("L4").Value = Format(Time, "h:mm;@") 'La cellule L4 devient l'heure
    Sheets("Demande").Range("M4").Value = Format(Time, "h:mm;@")        ' pour donner un format à la cellule avant d'y écrire
    Sheets("Demande").Range("M4") = CDate(Sheets("Demande").Range("L4")) - CDate(Sheets("Demande").Range("F" & i)) 'Temps pris pour mesurer
    x = CDate(Sheets("Demande").Range("G" & i)) - CDate(Sheets("Demande").Range("M4")) 'Compare le temps mis au temps attendu
    If x > 0 Then
    Sheets("Demande").Range("N4").Value = "Avance"
    ElseIf x < 0 Then
    Sheets("Demande").Range("N4").Value = "Retard"
    x = -x
    End If
    Sheets("Demande").Range("O4").Value = Format(Time, "h:mm;@") 'Donne un format à la cellule
    Sheets("Demande").Range("O4").Value = x 'Prend la vameur de l'écart entre temps attendu et temps mis
    Sheets("Demande").Range("B" & i).ClearContents 'Vide les pièces à mesurer
    Sheets("Demande").Range("C" & i).ClearContents
    Sheets("Demande").Range("D" & i).ClearContents
    Sheets("Demande").Range("E" & i).ClearContents
    Sheets("Demande").Range("A" & i).ClearContents
    Sheets("Demande").Range("F" & i).ClearContents
    Sheets("Demande").Range("G" & i).ClearContents
    Sheets("Demande").Rows(4).Insert 'Insère une ligne au rang 4 pour la prochaine pièce
    End If
    Next i
     End If

par quelque chose comme ca bouclé sur tes 6 colonnes, avec une variable pour le résultat; ca serais plus compréhensible.

 If Target.Address = "$L$7" Or Target.Address = "$L$8" Then 'Si les cellules qui changent sont L7 ou L8
    Call HeureL9
        For i = 4 To 20
            With Sheets("demande")
                If .Range("E" & i).Value = "Schaudt" Then 'On cherche les pièces de la machine à mesurer
                    .Range("H4").Value = .Range("A" & i).Value 'Transmet les données vers les pièces terminées
                    .Range("I4").Value = .Range("B" & i).Value
                    .Range("J4").Value = .Range("C" & i).Value
                    .Range("K4").Value = .Range("D" & i).Value
                    .Range("L4").Value = Format(Time, "h:mm;@") 'La cellule L4 devient l'heure
                    .Range("M4").Value = Format(Time, "h:mm;@")        ' pour donner un format à la cellule avant d'y écrire
                    .Range("M4") = CDate(.Range("L4")) - CDate(.Range("F" & i)) 'Temps pris pour mesurer
                    x = CDate(Sheets("Demande").Range("G" & i)) - CDate(Sheets("Demande").Range("M4")) 'Compare le temps mis au temps attendu
                       .Range("N4").Value = IIf(x > 0, "Avance", "Retard")

                    .Range("O4").Value = Format(Time, "h:mm;@") 'Donne un format à la cellule
                    .Range("O4").Value = x 'Prend la vameur de l'écart entre temps attendu et temps mis
                    .Range("A" & i & ":G" & i).ClearContents 'Vide les pièces à mesurer
                    .Rows(4).Insert 'Insère une ligne au rang 4 pour la prochaine pièce
                End If
            End With
        Next i
End If

et enfin je pense que

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call Cloche
End Sub

serais plus adapté dans ton cas, (je pense qu'une boucle sur 5 cellules c'est pas scandaleux à faire tourner à chaque changement de cellule.

(Niveau synthèse de code pense à utiliser des variables explicites, des select case, des end with ca t'aidera dans ta relecture et surtout pour ceux qui passent après toi )

cordialement

Nicolas

Merci pour ton travail Nicolas! Je vais me pencher dessus!

Rechercher des sujets similaires à "plage contient cours"