OVH Cloud OVH Cloud

proc. évenementielle dans workheet ?

4 réponses
Avatar
laurent colledani
bonsoir

je tente de mettre au point une procédure évenementielle qui se déclenche
quand la valeur dans cellule quelconque de 2 colonnes précises (h) ou (j) est
créée ou modifiée ultérieurement
cette procédure fait appel à une fonction vba qui créée une date calculée
dans la colonne (l) sur la même ligne que mes valeurs h et j (c'est une liste
de données avec une colonne calculée à partir de 2 éléments).
ma difficulté est de sélectionner le n° de ligne de la cellule de la colonne
h ou j dans laquelle (la cellule) on fait le changement de valeur. pPur
trouver le n° de ligne, j'utilise """k = ActiveCell.Row"""". Mais si je fais
"entrée" au clavier, apres le changement, c'est la ligne du dessous qui est
sélectionnée (à cause de l'évenement selectionchange)car la nouvelle cellule
active est celle du bas.

je ne trouve pas de procédure évenementielle qui renvoie le n° de ligne de
la cellule qui à été modifiée, seulement celle qui est nouvellement
sélectionnée.



***************voici une partie de ma procédure (qui ne marche pas )*********

Private Sub Worksheet_selectionchange(ByVal target As Range)

Dim a As Integer
Dim b As Date

k = ActiveCell.Row
If Not Intersect(target, Range("j" & k)) Is Nothing Then
a = Range("h" & k)
b = Format(Range("j" & k).Value, "dd-mm-yy")
Range("l" & k) = datebutoir(a, b)
End If
End Sub


merci au 2 personnes qui m'ont déjà aidé sur ce problème

amicalement

4 réponses

Avatar
LeSteph
Bonsoir laurent,
Pas sûr du tout d'avoir compris ta question.
as-tu essayé offset
Offset te permet de décaler les ref par rapport à une cellule (cell,
ActivCell ou Target)
ex:
activecell.offset(0,1)
décaler la colonne de 1 par rapport à la cellule active.
activecell.offset(-1,2)
la ligne précédente
deux colonnes plus loin.
Sinon il y a next ou previous


lSteph

"laurent colledani" a écrit
dans le message de news:

bonsoir

je tente de mettre au point une procédure évenementielle qui se déclenche
quand la valeur dans cellule quelconque de 2 colonnes précises (h) ou (j)
est
créée ou modifiée ultérieurement
cette procédure fait appel à une fonction vba qui créée une date calculée
dans la colonne (l) sur la même ligne que mes valeurs h et j (c'est une
liste
de données avec une colonne calculée à partir de 2 éléments).
ma difficulté est de sélectionner le n° de ligne de la cellule de la
colonne
h ou j dans laquelle (la cellule) on fait le changement de valeur. pPur
trouver le n° de ligne, j'utilise """k = ActiveCell.Row"""". Mais si je
fais
"entrée" au clavier, apres le changement, c'est la ligne du dessous qui
est
sélectionnée (à cause de l'évenement selectionchange)car la nouvelle
cellule
active est celle du bas.

je ne trouve pas de procédure évenementielle qui renvoie le n° de ligne de
la cellule qui à été modifiée, seulement celle qui est nouvellement
sélectionnée.



***************voici une partie de ma procédure (qui ne marche
pas )*********

Private Sub Worksheet_selectionchange(ByVal target As Range)

Dim a As Integer
Dim b As Date

k = ActiveCell.Row
If Not Intersect(target, Range("j" & k)) Is Nothing Then
a = Range("h" & k)
b = Format(Range("j" & k).Value, "dd-mm-yy")
Range("l" & k) = datebutoir(a, b)
End If
End Sub


merci au 2 personnes qui m'ont déjà aidé sur ce problème

amicalement




Avatar
docm
Bonjour laurent .
Fais plutôt ton test dans l'événement Worksheet_Change et non dans
Worksheet_SelectionChange.

Salutations.

"laurent colledani" wrote in
message news:
bonsoir

je tente de mettre au point une procédure évenementielle qui se déclenche
quand la valeur dans cellule quelconque de 2 colonnes précises (h) ou (j)
est

créée ou modifiée ultérieurement
cette procédure fait appel à une fonction vba qui créée une date calculée
dans la colonne (l) sur la même ligne que mes valeurs h et j (c'est une
liste

de données avec une colonne calculée à partir de 2 éléments).
ma difficulté est de sélectionner le n° de ligne de la cellule de la
colonne

h ou j dans laquelle (la cellule) on fait le changement de valeur. pPur
trouver le n° de ligne, j'utilise """k = ActiveCell.Row"""". Mais si je
fais

"entrée" au clavier, apres le changement, c'est la ligne du dessous qui
est

sélectionnée (à cause de l'évenement selectionchange)car la nouvelle
cellule

active est celle du bas.

je ne trouve pas de procédure évenementielle qui renvoie le n° de ligne de
la cellule qui à été modifiée, seulement celle qui est nouvellement
sélectionnée.



***************voici une partie de ma procédure (qui ne marche
pas )*********


Private Sub Worksheet_selectionchange(ByVal target As Range)

Dim a As Integer
Dim b As Date

k = ActiveCell.Row
If Not Intersect(target, Range("j" & k)) Is Nothing Then
a = Range("h" & k)
b = Format(Range("j" & k).Value, "dd-mm-yy")
Range("l" & k) = datebutoir(a, b)
End If
End Sub


merci au 2 personnes qui m'ont déjà aidé sur ce problème

amicalement




Avatar
laurent colledani
merci à lesteph et docm

malheureusement celà ne fonctionne pas. c'est vrai que ma requête n'est pas
simple.

en simplifiant, je cherche à déclencher un évenement (procédure
évenementielle) des qu'un utilisateur change la valeur d'une cellule
quelconque de la colonne H dans une feuille de calul.

LA procédure associée à besoin de connaître le n° de ligne précis de la
cellule où il y a eu un changement de valeur.

les solutions proposées sélectionnent le n° de ligne de la cellule qui est
activée après la validation de la cellule changée et non le n° de ligne de la
cellule changée après la validation.
Si la validation se fait paar la flêche de droite ou gauche , pas de
problème. Mais si la validation se fait par "entrée" ou flêche du bas , du
haut ou par la souris cliquée n'importe où, alors le n° de ligne qui est
renvoyé n'est plus bon.

il faudrait une instuction qui retrouve la référence de la cellule que l'on
vient de quitter . existe t-elle ?

cordialement







"laurent colledani" wrote:

bonsoir

je tente de mettre au point une procédure évenementielle qui se déclenche
quand la valeur dans cellule quelconque de 2 colonnes précises (h) ou (j) est
créée ou modifiée ultérieurement
cette procédure fait appel à une fonction vba qui créée une date calculée
dans la colonne (l) sur la même ligne que mes valeurs h et j (c'est une liste
de données avec une colonne calculée à partir de 2 éléments).
ma difficulté est de sélectionner le n° de ligne de la cellule de la colonne
h ou j dans laquelle (la cellule) on fait le changement de valeur. pPur
trouver le n° de ligne, j'utilise """k = ActiveCell.Row"""". Mais si je fais
"entrée" au clavier, apres le changement, c'est la ligne du dessous qui est
sélectionnée (à cause de l'évenement selectionchange)car la nouvelle cellule
active est celle du bas.

je ne trouve pas de procédure évenementielle qui renvoie le n° de ligne de
la cellule qui à été modifiée, seulement celle qui est nouvellement
sélectionnée.



***************voici une partie de ma procédure (qui ne marche pas )*********

Private Sub Worksheet_selectionchange(ByVal target As Range)

Dim a As Integer
Dim b As Date

k = ActiveCell.Row
If Not Intersect(target, Range("j" & k)) Is Nothing Then
a = Range("h" & k)
b = Format(Range("j" & k).Value, "dd-mm-yy")
Range("l" & k) = datebutoir(a, b)
End If
End Sub


merci au 2 personnes qui m'ont déjà aidé sur ce problème

amicalement




Avatar
LeSteph
Bonsoir,
Si !
Outre l'utilisation de offset qui te permettrait directement de fixer en
même temps le contenu des cellules adjacentes
L'utilisation de Sélection_change
(n'avais pas repéré)
est
comme le dit docm
à remplacer par change

il faut alors viser Target et non pas ActiveCell

lSteph

"laurent colledani" a écrit
dans le message de news:

merci à lesteph et docm

malheureusement celà ne fonctionne pas. c'est vrai que ma requête n'est
pas
simple.

en simplifiant, je cherche à déclencher un évenement (procédure
évenementielle) des qu'un utilisateur change la valeur d'une cellule
quelconque de la colonne H dans une feuille de calul.

LA procédure associée à besoin de connaître le n° de ligne précis de la
cellule où il y a eu un changement de valeur.

les solutions proposées sélectionnent le n° de ligne de la cellule qui est
activée après la validation de la cellule changée et non le n° de ligne de
la
cellule changée après la validation.
Si la validation se fait paar la flêche de droite ou gauche , pas de
problème. Mais si la validation se fait par "entrée" ou flêche du bas , du
haut ou par la souris cliquée n'importe où, alors le n° de ligne qui est
renvoyé n'est plus bon.

il faudrait une instuction qui retrouve la référence de la cellule que
l'on
vient de quitter . existe t-elle ?

cordialement







"laurent colledani" wrote:

bonsoir

je tente de mettre au point une procédure évenementielle qui se déclenche
quand la valeur dans cellule quelconque de 2 colonnes précises (h) ou (j)
est
créée ou modifiée ultérieurement
cette procédure fait appel à une fonction vba qui créée une date calculée
dans la colonne (l) sur la même ligne que mes valeurs h et j (c'est une
liste
de données avec une colonne calculée à partir de 2 éléments).
ma difficulté est de sélectionner le n° de ligne de la cellule de la
colonne
h ou j dans laquelle (la cellule) on fait le changement de valeur. pPur
trouver le n° de ligne, j'utilise """k = ActiveCell.Row"""". Mais si je
fais
"entrée" au clavier, apres le changement, c'est la ligne du dessous qui
est
sélectionnée (à cause de l'évenement selectionchange)car la nouvelle
cellule
active est celle du bas.

je ne trouve pas de procédure évenementielle qui renvoie le n° de ligne
de
la cellule qui à été modifiée, seulement celle qui est nouvellement
sélectionnée.



***************voici une partie de ma procédure (qui ne marche
pas )*********

Private Sub Worksheet_selectionchange(ByVal target As Range)

Dim a As Integer
Dim b As Date

k = ActiveCell.Row
If Not Intersect(target, Range("j" & k)) Is Nothing Then
a = Range("h" & k)
b = Format(Range("j" & k).Value, "dd-mm-yy")
Range("l" & k) = datebutoir(a, b)
End If
End Sub


merci au 2 personnes qui m'ont déjà aidé sur ce problème

amicalement