OVH Cloud OVH Cloud

VBA, excel97 et excel2000

11 réponses
Avatar
zrd
bonjour,
j'ai une macro qui fonctionne sous excel2000 mais pas sous excel97, et
pourtant il faudrait que cela soit.

la voici :
Private Sub Worksheet_Change(ByVal zz As Range)
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
Application.EnableEvents = False
If zz = "" Then
Range(zz(, -5)) = ""
Else: zz(, -5) = Date
End If
Application.EnableEvents = True
End Sub

Ou puis je trouver la correspondance des "fonctions" entre les deux version
?
Si la macro est "traduite" en version 97, marchera t elle sous version 2000
?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible excel 97 ?

Et deja un grand merci a ceux qui apporteront leurs lumieres
@+

10 réponses

1 2
Avatar
isabelle
bonjour zrd,

je ne voie aucune raison pour que cette macro ne fonctionne pas sous
xl97, peut tu nous dire sur quel ligne il y a un erreur ? et quel est le
message d'erreur ?

isabelle


bonjour,
j'ai une macro qui fonctionne sous excel2000 mais pas sous excel97, et
pourtant il faudrait que cela soit.

la voici :
Private Sub Worksheet_Change(ByVal zz As Range)
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
Application.EnableEvents = False
If zz = "" Then
Range(zz(, -5)) = ""
Else: zz(, -5) = Date
End If
Application.EnableEvents = True
End Sub

Ou puis je trouver la correspondance des "fonctions" entre les deux version
?
Si la macro est "traduite" en version 97, marchera t elle sous version 2000
?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible excel 97 ?

Et deja un grand merci a ceux qui apporteront leurs lumieres
@+


Avatar
zrd
Merci de te soucier de mes mesaventures,

J'ai une erreur d'execution 13,
type incompatible
et si je lance le debugueur,
il me surligne la ligne 4 : If zz = "" Then

@+




"isabelle" a écrit dans le message news:

bonjour zrd,

je ne voie aucune raison pour que cette macro ne fonctionne pas sous
xl97, peut tu nous dire sur quel ligne il y a un erreur ? et quel est le
message d'erreur ?

isabelle


bonjour,
j'ai une macro qui fonctionne sous excel2000 mais pas sous excel97, et
pourtant il faudrait que cela soit.

la voici :
Private Sub Worksheet_Change(ByVal zz As Range)
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
Application.EnableEvents = False
If zz = "" Then
Range(zz(, -5)) = ""
Else: zz(, -5) = Date
End If
Application.EnableEvents = True
End Sub

Ou puis je trouver la correspondance des "fonctions" entre les deux
version


?
Si la macro est "traduite" en version 97, marchera t elle sous version
2000


?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible excel
97 ?



Et deja un grand merci a ceux qui apporteront leurs lumieres
@+




Avatar
Frédéric Sigonneau
Bonjour,

Essaye de remplacer cette ligne par

If zz.Value="" Then
ou
If zz.Text="" Then
ou encore
If IsEmpty(zz) Then

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 !


Merci de te soucier de mes mesaventures,

J'ai une erreur d'execution 13,
type incompatible
et si je lance le debugueur,
il me surligne la ligne 4 : If zz = "" Then

@+

"isabelle" a écrit dans le message news:

bonjour zrd,

je ne voie aucune raison pour que cette macro ne fonctionne pas sous
xl97, peut tu nous dire sur quel ligne il y a un erreur ? et quel est le
message d'erreur ?

isabelle


bonjour,
j'ai une macro qui fonctionne sous excel2000 mais pas sous excel97, et
pourtant il faudrait que cela soit.

la voici :
Private Sub Worksheet_Change(ByVal zz As Range)
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
Application.EnableEvents = False
If zz = "" Then
Range(zz(, -5)) = ""
Else: zz(, -5) = Date
End If
Application.EnableEvents = True
End Sub

Ou puis je trouver la correspondance des "fonctions" entre les deux
version


?
Si la macro est "traduite" en version 97, marchera t elle sous version
2000


?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible excel
97 ?



Et deja un grand merci a ceux qui apporteront leurs lumieres
@+






Avatar
isabelle
bonjour zrd,

zz est déclaré en variable de type Range, j'ai transposé dans une macro
standard pour faire les test pas à pas et j'ai modifié comme suit :

Sub Macro1()
Set zz = Selection
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
x = zz.Offset(, -5).Address 'vérifier l'adresse
If zz = Empty Then
zz.Offset(, -5) = ""
Else: zz.Offset(, -5) = Date
End If
End Sub

est ce que ça fonctionne sur ton poste ?

isabelle



Merci de te soucier de mes mesaventures,

J'ai une erreur d'execution 13,
type incompatible
et si je lance le debugueur,
il me surligne la ligne 4 : If zz = "" Then

@+

"isabelle" a écrit dans le message news:

bonjour zrd,

je ne voie aucune raison pour que cette macro ne fonctionne pas sous
xl97, peut tu nous dire sur quel ligne il y a un erreur ? et quel est le
message d'erreur ?

isabelle


bonjour,
j'ai une macro qui fonctionne sous excel2000 mais pas sous excel97, et
pourtant il faudrait que cela soit.

la voici :
Private Sub Worksheet_Change(ByVal zz As Range)
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
Application.EnableEvents = False
If zz = "" Then
Range(zz(, -5)) = ""
Else: zz(, -5) = Date
End If
Application.EnableEvents = True
End Sub

Ou puis je trouver la correspondance des "fonctions" entre les deux
version


?
Si la macro est "traduite" en version 97, marchera t elle sous version
2000


?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible excel
97 ?



Et deja un grand merci a ceux qui apporteront leurs lumieres
@+






Avatar
zrd
Bonjour Frederic,

J'ai testé (pour l'instant) sous un seul poste avec excel97
La macro fonctionne avec le :
If zz.Value="" Then
Les autres solutions proposées ne fonctionne pas, pas de message d'erreur,
mais pas d'inscription de DATE non plus.

Je me suis appercu que la ùacro complementaire VBA n'etait pas installé sur
certains postes, va sans doute falloir que je commence par la !! ??

Merci
@+

"Frédéric Sigonneau" a écrit dans le message
news:
Bonjour,

Essaye de remplacer cette ligne par

If zz.Value="" Then
ou
If zz.Text="" Then
ou encore
If IsEmpty(zz) Then

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 !


Merci de te soucier de mes mesaventures,

J'ai une erreur d'execution 13,
type incompatible
et si je lance le debugueur,
il me surligne la ligne 4 : If zz = "" Then

@+

"isabelle" a écrit dans le message news:

bonjour zrd,

je ne voie aucune raison pour que cette macro ne fonctionne pas sous
xl97, peut tu nous dire sur quel ligne il y a un erreur ? et quel est
le



message d'erreur ?

isabelle


bonjour,
j'ai une macro qui fonctionne sous excel2000 mais pas sous excel97,
et




pourtant il faudrait que cela soit.

la voici :
Private Sub Worksheet_Change(ByVal zz As Range)
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
Application.EnableEvents = False
If zz = "" Then
Range(zz(, -5)) = ""
Else: zz(, -5) = Date
End If
Application.EnableEvents = True
End Sub

Ou puis je trouver la correspondance des "fonctions" entre les deux
version


?
Si la macro est "traduite" en version 97, marchera t elle sous
version




2000
?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible
excel




97 ?

Et deja un grand merci a ceux qui apporteront leurs lumieres
@+









Avatar
zrd
Bonjour Isabelle,

Frederic a trouve une solution qui fonctionne (voir ma reponse a son post)
Par contre, ta Macro1(), ne fonctionne sous aucune version d'excel !! (ni
97, ni 2000), j'ai peut etre fais une mauvaise mise en place de ta solution,
aurais je rate une etape ??
Peux tu me preciser le mode operatoire de l'implentation STP ?
Je debutes, tu t'en serais doutee, mais je precise qd mm :-)

Merci
@+



"isabelle" a écrit dans le message news:

bonjour zrd,

zz est déclaré en variable de type Range, j'ai transposé dans une macro
standard pour faire les test pas à pas et j'ai modifié comme suit :

Sub Macro1()
Set zz = Selection
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
x = zz.Offset(, -5).Address 'vérifier l'adresse
If zz = Empty Then
zz.Offset(, -5) = ""
Else: zz.Offset(, -5) = Date
End If
End Sub

est ce que ça fonctionne sur ton poste ?

isabelle


"isabelle" a écrit dans le message news:

bonjour zrd,

je ne voie aucune raison pour que cette macro ne fonctionne pas sous
xl97, peut tu nous dire sur quel ligne il y a un erreur ? et quel est
le



message d'erreur ?

isabelle

Ou puis je trouver la correspondance des "fonctions" entre les deux
version


?
Si la macro est "traduite" en version 97, marchera t elle sous
version




2000
?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible
excel




97 ?

Et deja un grand merci a ceux qui apporteront leurs lumieres
@+








Avatar
isabelle
bonjour zrd,

ce n'est pas une macro événementiel, mais un test au pas à pas, Macro1
est à copier dans un module standard, tu sélectionne une cellule de la
plage N21:N28 tu ouvre visual basic de façon à voir également la feuille
de calcul, ensuite tu place le curseur sur une des lignes de commande de
Macro1 et tu appuis sur la touche F8 autant de fois qu'il faut pour
atteindre End sub, de cette façon tu peux suivre l'exécution de Macro1
pas à pas. si tout fonctionne bien tu recopie les lignes de Macro1 dans
la macro événementiel sauf la ligne Set zz = Selection, car cette ligne
fait déjà partie de la macro événementiel sur la ligne Private Sub
Worksheet_Change(ByVal zz As Range).

isabelle


Bonjour Isabelle,

Frederic a trouve une solution qui fonctionne (voir ma reponse a son post)
Par contre, ta Macro1(), ne fonctionne sous aucune version d'excel !! (ni
97, ni 2000), j'ai peut etre fais une mauvaise mise en place de ta solution,
aurais je rate une etape ??
Peux tu me preciser le mode operatoire de l'implentation STP ?
Je debutes, tu t'en serais doutee, mais je precise qd mm :-)

Merci
@+

"isabelle" a écrit dans le message news:

bonjour zrd,

zz est déclaré en variable de type Range, j'ai transposé dans une macro
standard pour faire les test pas à pas et j'ai modifié comme suit :

Sub Macro1()
Set zz = Selection
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
x = zz.Offset(, -5).Address 'vérifier l'adresse
If zz = Empty Then
zz.Offset(, -5) = ""
Else: zz.Offset(, -5) = Date
End If
End Sub

est ce que ça fonctionne sur ton poste ?

isabelle


"isabelle" a écrit dans le message news:

bonjour zrd,

je ne voie aucune raison pour que cette macro ne fonctionne pas sous
xl97, peut tu nous dire sur quel ligne il y a un erreur ? et quel est
le



message d'erreur ?

isabelle

Ou puis je trouver la correspondance des "fonctions" entre les deux
version


?
Si la macro est "traduite" en version 97, marchera t elle sous
version




2000
?
Si non, comment faire ?
Quelqu'un saurait "downgrader" cette macro en version compatible
excel




97 ?

Et deja un grand merci a ceux qui apporteront leurs lumieres
@+










Avatar
zrd
bonjour Isabelle,

le coup du pas a pas , j'ai compris :-)
et ca :
Private Sub Worksheet_Change(ByVal zz As Range)
If Intersect(zz, [N21:N28]) Is Nothing Then Exit Sub
x = zz.Offset(, -5).Address 'vérifier l'adresse
If zz = Empty Then
zz.Offset(, -5) = ""
Else: zz.Offset(, -5) = Date
End If
End Sub

ca marche

Il y a tout de fois, 2 - 3 trucs que j'ai du mal a saisir :
- a quoi sert un module ?
- le "Private Sub Worksheet" ca restreint la macro a la feuille dans
laquelle on insert le code ? pourquoi ca apparait partout qd je demande le
code de chacune des pages ?

Tu imagines bien que j'ai des tonnes de Q° comme celle la, mais je voudrais
surtout pas abuser.

Existe t il des sites de "vulgarisation" a VBA ? pas des sites d'exemples,
j'ai est deja plein mes favoris, plutot des sites qui me permettent de
comprendre les codes que je recopie et modifie, la grammaire du langage, et
pourquoi mes modifs ne fonctionnent pas :-}

Encore Merci
@+



"isabelle" a écrit dans le message news:

bonjour zrd,

ce n'est pas une macro événementiel, mais un test au pas à pas, Macro1
est à copier dans un module standard, tu sélectionne une cellule de la
plage N21:N28 tu ouvre visual basic de façon à voir également la feuille
de calcul, ensuite tu place le curseur sur une des lignes de commande de
Macro1 et tu appuis sur la touche F8 autant de fois qu'il faut pour
atteindre End sub, de cette façon tu peux suivre l'exécution de Macro1
pas à pas. si tout fonctionne bien tu recopie les lignes de Macro1 dans
la macro événementiel sauf la ligne Set zz = Selection, car cette ligne
fait déjà partie de la macro événementiel sur la ligne Private Sub
Worksheet_Change(ByVal zz As Range).

isabelle



Avatar
isabelle
re bonjour zrd,


- a quoi sert un module ?


il y a trois différent module
-module (sans autre nom) :
pour écrire toute les macros : sub, public, private, function

-module d'événement :
de feuille de calcul, de feuille graphique et de classeur sont
disponibles pour toute feuille ou tout classeur ouverts. les macro sont
executé suite à un événement

-module de classe :
Pour écrire des procédures d'événements pour un graphique incorporé, un
objet QueryTable ou un objet Application. plus d'info ici
http://www.excelabo.net/mpfe/lecon1.htm

isabelle




- le "Private Sub Worksheet" ca restreint la macro a la feuille dans
laquelle on insert le code ? pourquoi ca apparait partout qd je demande le
code de chacune des pages ?

Tu imagines bien que j'ai des tonnes de Q° comme celle la, mais je voudrais
surtout pas abuser.

Existe t il des sites de "vulgarisation" a VBA ? pas des sites d'exemples,
j'ai est deja plein mes favoris, plutot des sites qui me permettent de
comprendre les codes que je recopie et modifie, la grammaire du langage, et
pourquoi mes modifs ne fonctionnent pas :-}

Encore Merci
@+

"isabelle" a écrit dans le message news:

bonjour zrd,

ce n'est pas une macro événementiel, mais un test au pas à pas, Macro1
est à copier dans un module standard, tu sélectionne une cellule de la
plage N21:N28 tu ouvre visual basic de façon à voir également la feuille
de calcul, ensuite tu place le curseur sur une des lignes de commande de
Macro1 et tu appuis sur la touche F8 autant de fois qu'il faut pour
atteindre End sub, de cette façon tu peux suivre l'exécution de Macro1
pas à pas. si tout fonctionne bien tu recopie les lignes de Macro1 dans
la macro événementiel sauf la ligne Set zz = Selection, car cette ligne
fait déjà partie de la macro événementiel sur la ligne Private Sub
Worksheet_Change(ByVal zz As Range).

isabelle





Avatar
zrd
Merci Isabelle,

@+

"isabelle" a écrit dans le message news:

re bonjour zrd,


- a quoi sert un module ?


il y a trois différent module
-module (sans autre nom) :
pour écrire toute les macros : sub, public, private, function

-module d'événement :
de feuille de calcul, de feuille graphique et de classeur sont
disponibles pour toute feuille ou tout classeur ouverts. les macro sont
executé suite à un événement

-module de classe :
Pour écrire des procédures d'événements pour un graphique incorporé, un
objet QueryTable ou un objet Application. plus d'info ici
http://www.excelabo.net/mpfe/lecon1.htm

isabelle




- le "Private Sub Worksheet" ca restreint la macro a la feuille dans
laquelle on insert le code ? pourquoi ca apparait partout qd je demande
le


code de chacune des pages ?

Tu imagines bien que j'ai des tonnes de Q° comme celle la, mais je
voudrais


surtout pas abuser.

Existe t il des sites de "vulgarisation" a VBA ? pas des sites
d'exemples,


j'ai est deja plein mes favoris, plutot des sites qui me permettent de
comprendre les codes que je recopie et modifie, la grammaire du langage,
et


pourquoi mes modifs ne fonctionnent pas :-}

Encore Merci
@+

"isabelle" a écrit dans le message news:

bonjour zrd,

ce n'est pas une macro événementiel, mais un test au pas à pas,
Macro1



est à copier dans un module standard, tu sélectionne une cellule de la
plage N21:N28 tu ouvre visual basic de façon à voir également la
feuille



de calcul, ensuite tu place le curseur sur une des lignes de commande
de



Macro1 et tu appuis sur la touche F8 autant de fois qu'il faut pour
atteindre End sub, de cette façon tu peux suivre l'exécution de Macro1
pas à pas. si tout fonctionne bien tu recopie les lignes de Macro1
dans



la macro événementiel sauf la ligne Set zz = Selection, car cette
ligne



fait déjà partie de la macro événementiel sur la ligne Private Sub
Worksheet_Change(ByVal zz As Range).

isabelle







1 2