OVH Cloud OVH Cloud

evenement change

5 réponses
Avatar
rick
Bjr,

Ma macro evenementielle me permet suivant la valeur que j'ai dans ma liste
déroulante de la colonne Y10 à Y200 d'afficher un message box:
c'est a dire si dans ma ligne Y10 je selectionne "test" et qu'ensuite dans
la plage de Z10 à HI10, si je pointe dessus le message s'affiche

et ainsi de suite pour toute les lignes.
Le probleme est que quand par exemple dans la ligne Y11, le champ est vide,
et que dans mes lignes de Z11 à HI11,je pointe dessus, le message
s'affiche,alors qu'il ne devrait pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Z10:HI200")) Is Nothing Then

For Each cell In Range("Y10:Y2000")
If cell = "test" Then
MsgBox "Attention"
Else
'Exit Sub

End If

Next
End If

merci d'avance

5 réponses

Avatar
MichDenis
Bonjour Rick,

Je n'ai pas trop compris tes condtions mais essaie ceci :

'------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg as range ,Cell as range
set Rg = Intersect(Target, Range("Y10:Y2000"))

If Not rg Is Nothing Then
For Each cell In rg
if cell <> "" then
If cell.offset(,1) <> "" Then
MsgBox "Attention"
end if
end if
next
End If

End Sub
'------------------------------------


Salutations!





"rick" a écrit dans le message de news:
Bjr,

Ma macro evenementielle me permet suivant la valeur que j'ai dans ma liste
déroulante de la colonne Y10 à Y200 d'afficher un message box:
c'est a dire si dans ma ligne Y10 je selectionne "test" et qu'ensuite dans
la plage de Z10 à HI10, si je pointe dessus le message s'affiche

et ainsi de suite pour toute les lignes.
Le probleme est que quand par exemple dans la ligne Y11, le champ est vide,
et que dans mes lignes de Z11 à HI11,je pointe dessus, le message
s'affiche,alors qu'il ne devrait pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Z10:HI200")) Is Nothing Then

For Each cell In Range("Y10:Y2000")
If cell = "test" Then
MsgBox "Attention"
Else
'Exit Sub

End If

Next
End If

merci d'avance
Avatar
rick
au fait dans Y10 à Y200 j'ai une liste deroulante.
et si dans la liste déroulante , je selectionne TEST.
et des que j'appuie sur les cellules de la meme ligne de Z..à HI alors
j'aurai ce message "Attention"
Par contre si je ne selectionne pas dans ma liste deroulante "TEST" et que
j'appuie sur les cellules de Zà HI de la meme ligne , je n'aurai pas de
message d'erreur.

merci d'avance



Bonjour Rick,

Je n'ai pas trop compris tes condtions mais essaie ceci :

'------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg as range ,Cell as range
set Rg = Intersect(Target, Range("Y10:Y2000"))

If Not rg Is Nothing Then
For Each cell In rg
if cell <> "" then
If cell.offset(,1) <> "" Then
MsgBox "Attention"
end if
end if
next
End If

End Sub
'------------------------------------


Salutations!





"rick" a écrit dans le message de news:
Bjr,

Ma macro evenementielle me permet suivant la valeur que j'ai dans ma liste
déroulante de la colonne Y10 à Y200 d'afficher un message box:
c'est a dire si dans ma ligne Y10 je selectionne "test" et qu'ensuite dans
la plage de Z10 à HI10, si je pointe dessus le message s'affiche

et ainsi de suite pour toute les lignes.
Le probleme est que quand par exemple dans la ligne Y11, le champ est vide,
et que dans mes lignes de Z11 à HI11,je pointe dessus, le message
s'affiche,alors qu'il ne devrait pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Z10:HI200")) Is Nothing Then

For Each cell In Range("Y10:Y2000")
If cell = "test" Then
MsgBox "Attention"
Else
'Exit Sub

End If

Next
End If

merci d'avance





Avatar
MichDenis
Bonjour Rick,


tu devrais utiliser cet événement pour gérer ce que tu veux faire !

'--------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range, Cell As Range, R As Range
Set Rg = Intersect(Target, Range("Z10:HI2000"))

If Not Rg Is Nothing Then
For Each R In Rg.Rows
If Range("Y" & R.Row) <> "TEST" Then
MsgBox "Attention"
End If
Next
End If
Set Rg = Nothing
End Sub
'--------------------------------------


Salutations!




"rick" a écrit dans le message de news:
au fait dans Y10 à Y200 j'ai une liste deroulante.
et si dans la liste déroulante , je selectionne TEST.
et des que j'appuie sur les cellules de la meme ligne de Z..à HI alors
j'aurai ce message "Attention"
Par contre si je ne selectionne pas dans ma liste deroulante "TEST" et que
j'appuie sur les cellules de Zà HI de la meme ligne , je n'aurai pas de
message d'erreur.

merci d'avance



Bonjour Rick,

Je n'ai pas trop compris tes condtions mais essaie ceci :

'------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg as range ,Cell as range
set Rg = Intersect(Target, Range("Y10:Y2000"))

If Not rg Is Nothing Then
For Each cell In rg
if cell <> "" then
If cell.offset(,1) <> "" Then
MsgBox "Attention"
end if
end if
next
End If

End Sub
'------------------------------------


Salutations!





"rick" a écrit dans le message de news:
Bjr,

Ma macro evenementielle me permet suivant la valeur que j'ai dans ma liste
déroulante de la colonne Y10 à Y200 d'afficher un message box:
c'est a dire si dans ma ligne Y10 je selectionne "test" et qu'ensuite dans
la plage de Z10 à HI10, si je pointe dessus le message s'affiche

et ainsi de suite pour toute les lignes.
Le probleme est que quand par exemple dans la ligne Y11, le champ est vide,
et que dans mes lignes de Z11 à HI11,je pointe dessus, le message
s'affiche,alors qu'il ne devrait pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Z10:HI200")) Is Nothing Then

For Each cell In Range("Y10:Y2000")
If cell = "test" Then
MsgBox "Attention"
Else
'Exit Sub

End If

Next
End If

merci d'avance





Avatar
rick
merci , mais pourquoi avec l'evenement change, cela ne peut pas marcher


Bonjour Rick,


tu devrais utiliser cet événement pour gérer ce que tu veux faire !

'--------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range, Cell As Range, R As Range
Set Rg = Intersect(Target, Range("Z10:HI2000"))

If Not Rg Is Nothing Then
For Each R In Rg.Rows
If Range("Y" & R.Row) <> "TEST" Then
MsgBox "Attention"
End If
Next
End If
Set Rg = Nothing
End Sub
'--------------------------------------


Salutations!




"rick" a écrit dans le message de news:
au fait dans Y10 à Y200 j'ai une liste deroulante.
et si dans la liste déroulante , je selectionne TEST.
et des que j'appuie sur les cellules de la meme ligne de Z..à HI alors
j'aurai ce message "Attention"
Par contre si je ne selectionne pas dans ma liste deroulante "TEST" et que
j'appuie sur les cellules de Zà HI de la meme ligne , je n'aurai pas de
message d'erreur.

merci d'avance



Bonjour Rick,

Je n'ai pas trop compris tes condtions mais essaie ceci :

'------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg as range ,Cell as range
set Rg = Intersect(Target, Range("Y10:Y2000"))

If Not rg Is Nothing Then
For Each cell In rg
if cell <> "" then
If cell.offset(,1) <> "" Then
MsgBox "Attention"
end if
end if
next
End If

End Sub
'------------------------------------


Salutations!





"rick" a écrit dans le message de news:
Bjr,

Ma macro evenementielle me permet suivant la valeur que j'ai dans ma liste
déroulante de la colonne Y10 à Y200 d'afficher un message box:
c'est a dire si dans ma ligne Y10 je selectionne "test" et qu'ensuite dans
la plage de Z10 à HI10, si je pointe dessus le message s'affiche

et ainsi de suite pour toute les lignes.
Le probleme est que quand par exemple dans la ligne Y11, le champ est vide,
et que dans mes lignes de Z11 à HI11,je pointe dessus, le message
s'affiche,alors qu'il ne devrait pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Z10:HI200")) Is Nothing Then

For Each cell In Range("Y10:Y2000")
If cell = "test" Then
MsgBox "Attention"
Else
'Exit Sub

End If

Next
End If

merci d'avance










Avatar
MichDenis
Bonjour Rick,

Ce que tu veux c'est qu'excel réponde au moment de la sélection d'une autre cellule sur la même ligne...cela correspond à
l'événement
"SelectionChange". L'événement "Worksheet_Change(ByVal Target As Range)" a lieu seulement si une cellule est passé en mode édition
et a été validé.


Salutations!



"rick" a écrit dans le message de news:
merci , mais pourquoi avec l'evenement change, cela ne peut pas marcher


Bonjour Rick,


tu devrais utiliser cet événement pour gérer ce que tu veux faire !

'--------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range, Cell As Range, R As Range
Set Rg = Intersect(Target, Range("Z10:HI2000"))

If Not Rg Is Nothing Then
For Each R In Rg.Rows
If Range("Y" & R.Row) <> "TEST" Then
MsgBox "Attention"
End If
Next
End If
Set Rg = Nothing
End Sub
'--------------------------------------


Salutations!




"rick" a écrit dans le message de news:
au fait dans Y10 à Y200 j'ai une liste deroulante.
et si dans la liste déroulante , je selectionne TEST.
et des que j'appuie sur les cellules de la meme ligne de Z..à HI alors
j'aurai ce message "Attention"
Par contre si je ne selectionne pas dans ma liste deroulante "TEST" et que
j'appuie sur les cellules de Zà HI de la meme ligne , je n'aurai pas de
message d'erreur.

merci d'avance



Bonjour Rick,

Je n'ai pas trop compris tes condtions mais essaie ceci :

'------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg as range ,Cell as range
set Rg = Intersect(Target, Range("Y10:Y2000"))

If Not rg Is Nothing Then
For Each cell In rg
if cell <> "" then
If cell.offset(,1) <> "" Then
MsgBox "Attention"
end if
end if
next
End If

End Sub
'------------------------------------


Salutations!





"rick" a écrit dans le message de news:
Bjr,

Ma macro evenementielle me permet suivant la valeur que j'ai dans ma liste
déroulante de la colonne Y10 à Y200 d'afficher un message box:
c'est a dire si dans ma ligne Y10 je selectionne "test" et qu'ensuite dans
la plage de Z10 à HI10, si je pointe dessus le message s'affiche

et ainsi de suite pour toute les lignes.
Le probleme est que quand par exemple dans la ligne Y11, le champ est vide,
et que dans mes lignes de Z11 à HI11,je pointe dessus, le message
s'affiche,alors qu'il ne devrait pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Z10:HI200")) Is Nothing Then

For Each cell In Range("Y10:Y2000")
If cell = "test" Then
MsgBox "Attention"
Else
'Exit Sub

End If

Next
End If

merci d'avance