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
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!