OVH Cloud OVH Cloud

Worksheet_Change

4 réponses
Avatar
Ethel Lacombe
Bonjour,

Merci =E0 l'avance de votre aide et d=E9sol=E9 pour la longueur=20
du texte, mais j'en avais besoin pour m'exprimer...

J'ai un petit programme en VBA qui utilise=20
Worksheet_Change. Il fonctionne bien, mais j'avais=20
beaucoup trop de redondances. Alors je suis all=E9 =E0 la=20
guerre aux variables. Mon code =E9tait tr=E8s volumineux du=20
fait qu'il =E9tait r=E9p=E8t=E9 =E0 chaque fois qu'une nouvelle=20
s=E9lection s'ajoutait.

Je vous explique : j'ai trois sections identiques dans=20
une feuille, mais chacune des sections poss=E8dent=20
=E9videmment des lignes diff=E9rentes : exemple consommation=20
(section 1) ligne 3 et consommation (section 2) ligne=20
23. Je travaille avec Intersect et c'est super. Mes=20
s=E9lections principales sont les suivantes : D1:BC5 et=20
D21:BC25. J'ai des conditions pour les Range D1:BC1 et=20
ainsi de suite pour chacune des lignes.

Donc, pour r=E9duire le code, j'ai d=E9cid=E9 que le syst=E8me=20
assigne des valeurs pr=E9cises =E0 mes variables selon s'il y=20
a un changement soit dans le Range D1:BC5 et D21:BC25.

Le probl=E8me est que j'obtiens l'erreur Run-time=20
error '1004' lorsque je tente d'entrer une valeur =E0=20
l'ext=E9rieur des Range. J'ai ins=E9r=E9 un On Error GoTo pour=20
r=E9gler mon probl=E8me temporairement. Par contre, je sais=20
exactement o=F9 se produit l'erreur, mais je n'arrive pas =E0=20
l'=E9liminer de fa=E7on permanente.

Ceci est l'endroit o=F9 ca bloque lorsqu'il y a un=20
changement =E0 l'ext=E9rieur du Range. =20

If Not Intersect(Target, Range("D" & LN_ok1 & ":BC" &=20
LN_rec1)) Is Nothing Then
LN_ok =3D 1
Else
If Not Intersect(Target, Range("D" & LN_ok2 & ":BC" &=20
LN_rec2)) Is Nothing Then
LN_ok =3D 21
End If
End If

' L'=E9diteur m'am=E8ne =E0 cette ligne durant l'erreur
If Not Intersect(Target, Range("D" & LN_cons & ":BC" &=20
LN_rec)) Is Nothing Then
.........

4 réponses

Avatar
Pierre CFI [mvp]
bonjour
mais tes variables LN_ok1 elles sont initialisées ou et quand ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Ethel Lacombe" a écrit dans le message de news:907301c4d3d1$9209adf0$
Bonjour,

Merci à l'avance de votre aide et désolé pour la longueur
du texte, mais j'en avais besoin pour m'exprimer...

J'ai un petit programme en VBA qui utilise
Worksheet_Change. Il fonctionne bien, mais j'avais
beaucoup trop de redondances. Alors je suis allé à la
guerre aux variables. Mon code était très volumineux du
fait qu'il était répèté à chaque fois qu'une nouvelle
sélection s'ajoutait.

Je vous explique : j'ai trois sections identiques dans
une feuille, mais chacune des sections possèdent
évidemment des lignes différentes : exemple consommation
(section 1) ligne 3 et consommation (section 2) ligne
23. Je travaille avec Intersect et c'est super. Mes
sélections principales sont les suivantes : D1:BC5 et
D21:BC25. J'ai des conditions pour les Range D1:BC1 et
ainsi de suite pour chacune des lignes.

Donc, pour réduire le code, j'ai décidé que le système
assigne des valeurs précises à mes variables selon s'il y
a un changement soit dans le Range D1:BC5 et D21:BC25.

Le problème est que j'obtiens l'erreur Run-time
error '1004' lorsque je tente d'entrer une valeur à
l'extérieur des Range. J'ai inséré un On Error GoTo pour
régler mon problème temporairement. Par contre, je sais
exactement où se produit l'erreur, mais je n'arrive pas à
l'éliminer de façon permanente.

Ceci est l'endroit où ca bloque lorsqu'il y a un
changement à l'extérieur du Range.

If Not Intersect(Target, Range("D" & LN_ok1 & ":BC" &
LN_rec1)) Is Nothing Then
LN_ok = 1
Else
If Not Intersect(Target, Range("D" & LN_ok2 & ":BC" &
LN_rec2)) Is Nothing Then
LN_ok = 21
End If
End If

' L'éditeur m'amène à cette ligne durant l'erreur
If Not Intersect(Target, Range("D" & LN_cons & ":BC" &
LN_rec)) Is Nothing Then
.........
Avatar
Ethel Lacombe
Pierre,

au tout début :

Dim LN_ok1 As Integer
Dim LN_ok2 As Integer

Ethel


-----Message d'origine-----
bonjour
mais tes variables LN_ok1 elles sont initialisées ou et
quand ?


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Ethel Lacombe" a
écrit dans le message de news:907301c4d3d1$9209adf0

$
Bonjour,

Merci à l'avance de votre aide et désolé pour la longueur
du texte, mais j'en avais besoin pour m'exprimer...

J'ai un petit programme en VBA qui utilise
Worksheet_Change. Il fonctionne bien, mais j'avais
beaucoup trop de redondances. Alors je suis allé à la
guerre aux variables. Mon code était très volumineux du
fait qu'il était répèté à chaque fois qu'une nouvelle
sélection s'ajoutait.

Je vous explique : j'ai trois sections identiques dans
une feuille, mais chacune des sections possèdent
évidemment des lignes différentes : exemple consommation
(section 1) ligne 3 et consommation (section 2) ligne
23. Je travaille avec Intersect et c'est super. Mes
sélections principales sont les suivantes : D1:BC5 et
D21:BC25. J'ai des conditions pour les Range D1:BC1 et
ainsi de suite pour chacune des lignes.

Donc, pour réduire le code, j'ai décidé que le système
assigne des valeurs précises à mes variables selon s'il y
a un changement soit dans le Range D1:BC5 et D21:BC25.

Le problème est que j'obtiens l'erreur Run-time
error '1004' lorsque je tente d'entrer une valeur à
l'extérieur des Range. J'ai inséré un On Error GoTo pour
régler mon problème temporairement. Par contre, je sais
exactement où se produit l'erreur, mais je n'arrive pas à
l'éliminer de façon permanente.

Ceci est l'endroit où ca bloque lorsqu'il y a un
changement à l'extérieur du Range.

If Not Intersect(Target, Range("D" & LN_ok1 & ":BC" &
LN_rec1)) Is Nothing Then
LN_ok = 1
Else
If Not Intersect(Target, Range("D" & LN_ok2 & ":BC" &
LN_rec2)) Is Nothing Then
LN_ok = 21
End If
End If

' L'éditeur m'amène à cette ligne durant l'erreur
If Not Intersect(Target, Range("D" & LN_cons & ":BC" &
LN_rec)) Is Nothing Then
..........


.



Avatar
Pierre CFI [mvp]
..../...
oui, mais à quel moment et sur quel evenement tu donnes la valeur ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Ethel Lacombe" a écrit dans le message de news:9b7601c4d3d8$05f84590$
Pierre,

au tout début :

Dim LN_ok1 As Integer
Dim LN_ok2 As Integer

Ethel


-----Message d'origine-----
bonjour
mais tes variables LN_ok1 elles sont initialisées ou et
quand ?


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Ethel Lacombe" a
écrit dans le message de news:907301c4d3d1$9209adf0

$
Bonjour,

Merci à l'avance de votre aide et désolé pour la longueur
du texte, mais j'en avais besoin pour m'exprimer...

J'ai un petit programme en VBA qui utilise
Worksheet_Change. Il fonctionne bien, mais j'avais
beaucoup trop de redondances. Alors je suis allé à la
guerre aux variables. Mon code était très volumineux du
fait qu'il était répèté à chaque fois qu'une nouvelle
sélection s'ajoutait.

Je vous explique : j'ai trois sections identiques dans
une feuille, mais chacune des sections possèdent
évidemment des lignes différentes : exemple consommation
(section 1) ligne 3 et consommation (section 2) ligne
23. Je travaille avec Intersect et c'est super. Mes
sélections principales sont les suivantes : D1:BC5 et
D21:BC25. J'ai des conditions pour les Range D1:BC1 et
ainsi de suite pour chacune des lignes.

Donc, pour réduire le code, j'ai décidé que le système
assigne des valeurs précises à mes variables selon s'il y
a un changement soit dans le Range D1:BC5 et D21:BC25.

Le problème est que j'obtiens l'erreur Run-time
error '1004' lorsque je tente d'entrer une valeur à
l'extérieur des Range. J'ai inséré un On Error GoTo pour
régler mon problème temporairement. Par contre, je sais
exactement où se produit l'erreur, mais je n'arrive pas à
l'éliminer de façon permanente.

Ceci est l'endroit où ca bloque lorsqu'il y a un
changement à l'extérieur du Range.

If Not Intersect(Target, Range("D" & LN_ok1 & ":BC" &
LN_rec1)) Is Nothing Then
LN_ok = 1
Else
If Not Intersect(Target, Range("D" & LN_ok2 & ":BC" &
LN_rec2)) Is Nothing Then
LN_ok = 21
End If
End If

' L'éditeur m'amène à cette ligne durant l'erreur
If Not Intersect(Target, Range("D" & LN_cons & ":BC" &
LN_rec)) Is Nothing Then
..........


.



Avatar
Ethel Lacombe
Eh bien, pour cette exemple j'ai simplement indiqué cette
variable, car dans le code complet je dois en avoir
environ 25. Voici un exemple où cette variable sert
(malheureusement, il m'est très difficile d'expliquer le
tout, car je ne peux pas vous montrer mon fichier) :

If Not Intersect(Target, Range("D" & LN_ok & ":BC" &
LN_rec)) Is Nothing Then


-----Message d'origine-----
...../...
oui, mais à quel moment et sur quel evenement tu donnes
la valeur ?


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Ethel Lacombe" a
écrit dans le message de news:9b7601c4d3d8$05f84590

$
Pierre,

au tout début :

Dim LN_ok1 As Integer
Dim LN_ok2 As Integer

Ethel