Salut à tous à nouveau.
Voilà mon prob :
Je veux que, quand on change la valeur d'un cellule dans une colonne
définie, une procédure recherche si la nouvelle valeur de la cellule existe
dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ellimac
Bonjour,
Essaie ceci :
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns("N")) Is Nothing Then With Worksheets("Salariés").Range("a1:a500") Set c = .Find(Target.Value, LookIn:=xlValues) If Not c Is Nothing Then r = c.Row MsgBox r End If End With End If End Sub
Camille
-----Message d'origine----- Salut à tous à nouveau. Voilà mon prob : Je veux que, quand on change la valeur d'un cellule dans une colonne
définie, une procédure recherche si la nouvelle valeur de la cellule existe
dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
If LigneSal <> 0 Then Target.Value = Worksheets("Salariés").Cells (LigneSal, 25)
End If
End If
End Sub
-- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !!
.
Bonjour,
Essaie ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
With Worksheets("Salariés").Range("a1:a500")
Set c = .Find(Target.Value, LookIn:=xlValues)
If Not c Is Nothing Then
r = c.Row
MsgBox r
End If
End With
End If
End Sub
Camille
-----Message d'origine-----
Salut à tous à nouveau.
Voilà mon prob :
Je veux que, quand on change la valeur d'un cellule dans
une colonne
définie, une procédure recherche si la nouvelle valeur de
la cellule existe
dans les valeurs d'une colonne d'une autre feuille
(feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve.
Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me
renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant
plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns("N")) Is Nothing Then With Worksheets("Salariés").Range("a1:a500") Set c = .Find(Target.Value, LookIn:=xlValues) If Not c Is Nothing Then r = c.Row MsgBox r End If End With End If End Sub
Camille
-----Message d'origine----- Salut à tous à nouveau. Voilà mon prob : Je veux que, quand on change la valeur d'un cellule dans une colonne
définie, une procédure recherche si la nouvelle valeur de la cellule existe
dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
If LigneSal <> 0 Then Target.Value = Worksheets("Salariés").Cells (LigneSal, 25)
End If
End If
End Sub
-- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !!
.
Gadget
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne fonctionnait pas...)
-- -- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !! "Ellimac" a écrit dans le message de news:09f301c35b53$93262670$ Bonjour,
Essaie ceci :
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns("N")) Is Nothing Then With Worksheets("Salariés").Range("a1:a500") Set c = .Find(Target.Value, LookIn:=xlValues) If Not c Is Nothing Then r = c.Row MsgBox r End If End With End If End Sub
Camille
-----Message d'origine----- Salut à tous à nouveau. Voilà mon prob : Je veux que, quand on change la valeur d'un cellule dans une colonne
définie, une procédure recherche si la nouvelle valeur de la cellule existe
dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
If LigneSal <> 0 Then Target.Value = Worksheets("Salariés").Cells (LigneSal, 25)
End If
End If
End Sub
-- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !!
.
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne
fonctionnait pas...)
--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"Ellimac" <PasDePubellimacNiSpam_cremelier@hotmail.com> a écrit dans le
message de news:09f301c35b53$93262670$a501280a@phx.gbl...
Bonjour,
Essaie ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
With Worksheets("Salariés").Range("a1:a500")
Set c = .Find(Target.Value, LookIn:=xlValues)
If Not c Is Nothing Then
r = c.Row
MsgBox r
End If
End With
End If
End Sub
Camille
-----Message d'origine-----
Salut à tous à nouveau.
Voilà mon prob :
Je veux que, quand on change la valeur d'un cellule dans
une colonne
définie, une procédure recherche si la nouvelle valeur de
la cellule existe
dans les valeurs d'une colonne d'une autre feuille
(feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve.
Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me
renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant
plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne fonctionnait pas...)
-- -- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !! "Ellimac" a écrit dans le message de news:09f301c35b53$93262670$ Bonjour,
Essaie ceci :
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns("N")) Is Nothing Then With Worksheets("Salariés").Range("a1:a500") Set c = .Find(Target.Value, LookIn:=xlValues) If Not c Is Nothing Then r = c.Row MsgBox r End If End With End If End Sub
Camille
-----Message d'origine----- Salut à tous à nouveau. Voilà mon prob : Je veux que, quand on change la valeur d'un cellule dans une colonne
définie, une procédure recherche si la nouvelle valeur de la cellule existe
dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
If LigneSal <> 0 Then Target.Value = Worksheets("Salariés").Cells (LigneSal, 25)
End If
End If
End Sub
-- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !!
.
Gadget
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne fonctionnait pas...) Est-ce parce qu'il est interdit de faire référence à une autre feuille que
celle concernée par l'objet Worksheet dans lequel est la procédure ? Dans ce cas, la référence à une autre feuille fonctionnerait si je "délocalisait" la procédure dans un module général? C'est ca?
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne
fonctionnait pas...)
Est-ce parce qu'il est interdit de faire référence à une autre feuille que
celle concernée par l'objet Worksheet dans lequel est la procédure ? Dans ce
cas, la référence à une autre feuille fonctionnerait si je "délocalisait" la
procédure dans un module général? C'est ca?
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne fonctionnait pas...) Est-ce parce qu'il est interdit de faire référence à une autre feuille que
celle concernée par l'objet Worksheet dans lequel est la procédure ? Dans ce cas, la référence à une autre feuille fonctionnerait si je "délocalisait" la procédure dans un module général? C'est ca?
Ellimac
Re,
Ce que je ne comprend pas dans la procédure c'est ce que peut renvoyer : LigneSal = Range("Salariés!w2:" & Range("Salariés!w2")._ End(xlDown).Address).Find(Target.Value).Row puisque dans le .Find il faut lui indiquer ce que tu cherches et où. Et là on n'indique pas ce que l'on cherche !!! Je pense que là est le problème. Camille
-----Message d'origine-----
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne
fonctionnait pas...) Est-ce parce qu'il est interdit de faire référence à une
autre feuille que
celle concernée par l'objet Worksheet dans lequel est la procédure ? Dans ce
cas, la référence à une autre feuille fonctionnerait si je "délocalisait" la
procédure dans un module général? C'est ca?
.
Re,
Ce que je ne comprend pas dans la procédure c'est ce que
peut renvoyer :
LigneSal = Range("Salariés!w2:" & Range("Salariés!w2")._
End(xlDown).Address).Find(Target.Value).Row
puisque dans le .Find il faut lui indiquer ce que tu
cherches et où.
Et là on n'indique pas ce que l'on cherche !!!
Je pense que là est le problème.
Camille
-----Message d'origine-----
Merci ca marche (mais cela ne m'explique pas pourquoi
ma proc ne
fonctionnait pas...)
Est-ce parce qu'il est interdit de faire référence à une
autre feuille que
celle concernée par l'objet Worksheet dans lequel est la
procédure ? Dans ce
cas, la référence à une autre feuille fonctionnerait si
je "délocalisait" la
Ce que je ne comprend pas dans la procédure c'est ce que peut renvoyer : LigneSal = Range("Salariés!w2:" & Range("Salariés!w2")._ End(xlDown).Address).Find(Target.Value).Row puisque dans le .Find il faut lui indiquer ce que tu cherches et où. Et là on n'indique pas ce que l'on cherche !!! Je pense que là est le problème. Camille
-----Message d'origine-----
Merci ca marche (mais cela ne m'explique pas pourquoi ma proc ne
fonctionnait pas...) Est-ce parce qu'il est interdit de faire référence à une
autre feuille que
celle concernée par l'objet Worksheet dans lequel est la procédure ? Dans ce
cas, la référence à une autre feuille fonctionnerait si je "délocalisait" la
procédure dans un module général? C'est ca?
.
Frédéric Sigonneau
Bonjour,
Je pense que la référence à la plage de recherche dans la feuille Salariés n'est pas assez précise, sachant que ce code est appelé depuis une autre feuille (dans la module ThisWorkbook ça passerait sans doute tel que). Essaye avec cette syntaxe :
With Sheets("Salariés") LigneSal = .Range("w2:" & .Range("w2")._ End(xlDown).Address).Find(Target.Value).Row End With
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Salut à tous à nouveau. Voilà mon prob : Je veux que, quand on change la valeur d'un cellule dans une colonne définie, une procédure recherche si la nouvelle valeur de la cellule existe dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
If LigneSal <> 0 Then Target.Value = Worksheets("Salariés").Cells(LigneSal, 25) End If
End If
End Sub
-- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !!
Bonjour,
Je pense que la référence à la plage de recherche dans la feuille Salariés n'est
pas assez précise, sachant que ce code est appelé depuis une autre feuille (dans
la module ThisWorkbook ça passerait sans doute tel que). Essaye avec cette
syntaxe :
With Sheets("Salariés")
LigneSal = .Range("w2:" & .Range("w2")._
End(xlDown).Address).Find(Target.Value).Row
End With
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Salut à tous à nouveau.
Voilà mon prob :
Je veux que, quand on change la valeur d'un cellule dans une colonne
définie, une procédure recherche si la nouvelle valeur de la cellule existe
dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et
me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on
arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la
méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même
ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
Je pense que la référence à la plage de recherche dans la feuille Salariés n'est pas assez précise, sachant que ce code est appelé depuis une autre feuille (dans la module ThisWorkbook ça passerait sans doute tel que). Essaye avec cette syntaxe :
With Sheets("Salariés") LigneSal = .Range("w2:" & .Range("w2")._ End(xlDown).Address).Find(Target.Value).Row End With
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Salut à tous à nouveau. Voilà mon prob : Je veux que, quand on change la valeur d'un cellule dans une colonne définie, une procédure recherche si la nouvelle valeur de la cellule existe dans les valeurs d'une colonne d'une autre feuille (feuille "salariés"), et me renvoie le n° de la ligne où cette valeur se trouve. Mais dès que l'on arrive à la ligne qui recherche cette valeur, cela me renvoie un message "la méthode range de l'objet à échoué". Pourquoi? D'autant plus que la même ligne dans une autre proc fonctionne parfaitement.
Merci de vos réponses.
Voilà ma procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("N")) Is Nothing Then
et evidemment, quand la dernière ligne s'execute, keskispass... la proc _change est appelée à nouveau (normal), d'ou auto-appel de ladite proc, d'ou pb. Comment faire pour pouvoir modifier la valeur de la cellule concernée dans la proc _Change sans que cela ne rappelle ladite procédure???
-- -- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !! "Frédéric Sigonneau" a écrit dans le message de news:
Bonjour,
Je pense que la référence à la plage de recherche dans la feuille Salariés n'est
pas assez précise, sachant que ce code est appelé depuis une autre feuille (dans
la module ThisWorkbook ça passerait sans doute tel que). Essaye avec cette syntaxe :
With Sheets("Salariés") LigneSal = .Range("w2:" & .Range("w2")._ End(xlDown).Address).Find(Target.Value).Row End With
Ca marche, mais...
en fait, voilà le code tel que je l'utilise :
With Sheets("Salariés")
LigneSal = .Range("w2:" &
.Range("w2").End(xlDown).Address).Find(Target.Value).Row
End With
et evidemment, quand la dernière ligne s'execute, keskispass... la proc
_change est appelée à nouveau (normal), d'ou auto-appel de ladite proc, d'ou
pb. Comment faire pour pouvoir modifier la valeur de la cellule concernée
dans la proc _Change sans que cela ne rappelle ladite procédure???
--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"Frédéric Sigonneau" <frederic.sigonneau@wanadoo.fr> a écrit dans le message
de news:3F2FEC0D.AD881D98@wanadoo.fr...
Bonjour,
Je pense que la référence à la plage de recherche dans la feuille Salariés
n'est
pas assez précise, sachant que ce code est appelé depuis une autre feuille
(dans
la module ThisWorkbook ça passerait sans doute tel que). Essaye avec cette
syntaxe :
With Sheets("Salariés")
LigneSal = .Range("w2:" & .Range("w2")._
End(xlDown).Address).Find(Target.Value).Row
End With
et evidemment, quand la dernière ligne s'execute, keskispass... la proc _change est appelée à nouveau (normal), d'ou auto-appel de ladite proc, d'ou pb. Comment faire pour pouvoir modifier la valeur de la cellule concernée dans la proc _Change sans que cela ne rappelle ladite procédure???
-- -- Carpe Diem Quam Minimum Credula Postera Bicose Sic Transit Gloria Mundi, et Arx Tarpeia Capitoli Proxima !! "Frédéric Sigonneau" a écrit dans le message de news:
Bonjour,
Je pense que la référence à la plage de recherche dans la feuille Salariés n'est
pas assez précise, sachant que ce code est appelé depuis une autre feuille (dans
la module ThisWorkbook ça passerait sans doute tel que). Essaye avec cette syntaxe :
With Sheets("Salariés") LigneSal = .Range("w2:" & .Range("w2")._ End(xlDown).Address).Find(Target.Value).Row End With