OVH Cloud OVH Cloud

Macros Excel 4

7 réponses
Avatar
Jean Aurélien
Bonjour,
J'utilise Excel 97 et j'utilise de nombreuses macros=20
cr=E9es sous Excel 4 ou 5.
Jusqu'=E0 la version 1997, il existait dans la barre=20
d'outils "Visual Basic" un outil "Continuer" (2 barres=20
verticales) qui permettait de reprendre une macro=20
volontairement interrompue. Ceci afin de permettre, par=20
exemple lors d'un changement de feuille de calcul en=20
cours d'=E9x=E9cuition de la macro, de placer sans risque=20
d'erreur la cellule active =E0 un endroit - =E9volutif -
pr=E9cis .
J'avais bien =E9videmment install=E9 cet outil dans ma barre=20
d'outils standart.
Depuis 1997, cet outil n'existe plus, et je me retrouve=20
devant le dilemne suivant : Ou bien suivre les mises =E0=20
jour d'Excel (Aujourd'hui 2003) et ne plus pouvoir me=20
servir de mes macros, ce qui me semble impossible. Ou=20
bien en rester =E0 Excel 1997, ce que je fais ...
Avec regrets.
Pr=E9cision peut-=EAtre importante : Je ne connais rien au =20
langage VB.
Merci d'avance de votre aide. Cordialement votre.

7 réponses

Avatar
Daniel.j
Pour continuer d'utiliser des macros XL4 avec VBA

Pour exécuter une MacroXL4

Sub AppelDeMacroXL4()
Application.Run Macro:=Range("nomDuFichier.XLS!NomDeLaMacro")
End Sub


--
Daniel MVP Excel
FAQ du Forum Microsoft Public Fr Excel
http://dj.joss.free.fr/faq.htm

"Jean Aurélien" a écrit dans le message de news:
008f01c3b1e7$12775cc0$
Bonjour,
J'utilise Excel 97 et j'utilise de nombreuses macros
crées sous Excel 4 ou 5.
Jusqu'à la version 1997, il existait dans la barre
d'outils "Visual Basic" un outil "Continuer" (2 barres
verticales) qui permettait de reprendre une macro
volontairement interrompue. Ceci afin de permettre, par
exemple lors d'un changement de feuille de calcul en
cours d'éxécuition de la macro, de placer sans risque
d'erreur la cellule active à un endroit - évolutif -
précis .
J'avais bien évidemment installé cet outil dans ma barre
d'outils standart.
Depuis 1997, cet outil n'existe plus, et je me retrouve
devant le dilemne suivant : Ou bien suivre les mises à
jour d'Excel (Aujourd'hui 2003) et ne plus pouvoir me
servir de mes macros, ce qui me semble impossible. Ou
bien en rester à Excel 1997, ce que je fais ...
Avec regrets.
Précision peut-être importante : Je ne connais rien au
langage VB.
Merci d'avance de votre aide. Cordialement votre.
Avatar
JpPradier
Bonjour Jean

Il faut peut-etre utiliser le triangle "play" de la barre d'outils visual basic ?
Pour info, les macro excel4 ont l'air de fonctionner sous excel 2003.

j-p
Avatar
voir.le
Jean Aurélien wrote:
J'utilise Excel 97 et j'utilise de nombreuses macros
crées sous Excel 4 ou 5.
Jusqu'à la version 1997, il existait dans la barre
d'outils "Visual Basic" un outil "Continuer" (2 barres
verticales) qui permettait de reprendre une macro
volontairement interrompue. Ceci afin de permettre, par
exemple lors d'un changement de feuille de calcul en
cours d'éxécuition de la macro, de placer sans risque
d'erreur la cellule active à un endroit - évolutif -
précis .
J'avais bien évidemment installé cet outil dans ma barre
d'outils standart.
Depuis 1997, cet outil n'existe plus, et je me retrouve
devant le dilemne suivant : Ou bien suivre les mises à
jour d'Excel (Aujourd'hui 2003) et ne plus pouvoir me
servir de mes macros, ce qui me semble impossible. Ou
bien en rester à Excel 1997, ce que je fais ...
Avec regrets.
Précision peut-être importante : Je ne connais rien au
langage VB.


Ah, j'en tiens un ! Serrons-nous la main, camarade d'infortune, je suis
aussi un dinosaure des macros Excel 4, et (presque) ignare en VBA.

J'ai eu le même problème que vous. Je n'ai pas trouvé de vraie solution,
j'exécute la macro au pas à pas, je l'arrête quand elle ne fait pas ce
que je veux, et je la reprends à la ligne qui m'intéresse.

--
Yves Benisty

Avatar
Michel Gaboly
Bonjsoir, Yves et Jean Aurélien,

Je fais également partie des dinosaures ;-)) J'ai commencé avec la
version 1.0 US d'Excel, sortie fin 85, sur Mac uniquement à l'épo-
que.

En quoi l'absence de l'outil "Continuer" empêche-t-til d'utiliser
les anciennes macros ? C'est peut-être un peu moins pratique mais
pas bloquant.

Comme tout le monde, j'insère des "=PAS.A.PAS()" là où je veux
pouvoir interrompre le traitement. Pour les repérer + aisément
j'utilise pour les cellules correspondante une police en grande taille
(24), rouge et en gras.

Cela permet de faire ce que tu évoquais, Jean Aurélien, par exemple
modifier la cellule active et poursuivre ensuite le traitement.

Je ne supprime pas ces "=PAS.A.PAS()" après un test, mais me
contente d'enlever le signe "=" pour les transformer en commen-
taire. Cela permet de les rendre facilement à nouveau opérationnels
pour des tests ultérieurs en cas de modifs + ou - importantes du pro-
gramme.

Par ailleurs, les macros écrites avec l'ancien langage continuent à
fonctionner avec les versions récentes d'Excel. L'enregistrement
auto n'est malheureusement plus possible, mais il est facile d'ajou-
ter une feuille Macro XL4 à un classeur (menu contextuel, en cli-
quant sur un onglet ou raccourci Ctrl + F11).

Pour avoir accès à l'enregistrement auto en cas de besoin (pallier
une éventuelle défaillance de la mémoire), je conserve une version
d'Excel 4 sur ma machine de bureau (Mac G3) et une version
d'Excel 3 sur mon portable (Mac G4).

Par ailleurs l'apprentissage de VBA peut être un peu rebutant quand
on a l'habitude des anciennes macros, car elles sont suffisamment
puissantes pour qu'on n'ait pas l'envie de faire l'effort de passer à
VBA.

Pourtant cela vaut la peine, tant VBA offre de possibilités supplémen-
taires. En ce qui me concerne j'ai découvert VBA avec Excel 5 et j'ai
eu une forte réaction de rejet en découvrant cet affreux langage ver-
beux ;-(((

En particulier, il ne faut pas se laisser impressionner par le code
généré par l'enregistreur de macros, qui enregistre la valeur de nom-
breuses propriétés dont on a pas forcément besoin. La première chose
à faire est du dégraissage.

http://www.gaboly.com/VBA/EnregistrementAuto.html

Je me suis mis à VBA l'été 97 avec Excel 97, qui apporte un environ
nement de programmation confortable avec des outils de débuggage
et les UserForms (l'équivalent des ZONES.DE.DIALOGUE()).

Je vous conseille à tous 2 de vous mettre à VBA. C'est moins difficile
qu'on l'imagine dans la mesure où une procédure VBA peut facilement
appeler une macro XL4, ce qui facilite grandement la transition.

Quand on lance une macro XL4 avec une version récente d'Excel, l'une des
choses qui ne marche pas toujours très bien est la gestion des menus, ce
qui est facile à corriger : on crée les menus avec VBA en indiquant comme
macro associée, une procédure qui lance une macro XL4.

Voici unnextrait de construction de menus en VBA. Il s'agit d'un dévelop
pement commencé sous Excel 4, interrompu longuement et repris avec
Excel 98 (homologue Mac d'Excel 97). Il s'agit d'une gestion de planning.

Option Explicit
Dim Barre As Object

Private Sub AjoutMenu()
Dim MPersonnel As Object, NouvelEdit As Object, DepartEdit As Object
Set Barre = Application.CommandBars.ActiveMenuBar
On Error GoTo Suite
SuppMenu
Suite:
' Menu Personnel
Set MPersonnel = Barre.Controls.Add(msoControlPopup, , , 8, True)
MPersonnel.Caption = "Personnel"
Set NouvelEdit = MPersonnel.Controls.Add
With NouvelEdit
.Caption = "Nouvel éditeur…"
.OnAction = "Arrivee"
End With
Set DepartEdit = MPersonnel.Controls.Add
With DepartEdit
.Caption = "Départ d’un éditeur…"
.OnAction = "Depart"
End With
...

Le "OnAction" indique la macro associée à l'articlle de menu

Par exemple, à l'article "Nouvel éditeur…" est associée la macro
"Arrivee" :

Sub Arrivee()
Application.Run ThisWorkbook.Sheets("M Planning").Range("Arrivée")
End Sub

"M Planning" est une feuille macro XL4, et la procédure (Sub en anglais)
"Arrivée" se contente de lancer la macro éponyme de la feuille Excel 4.

Quand on a acquis un peu de pratique, on se rend compte que la program-
mation objet, avec ses propriétés, ses méthodes et ses événements (équi-
valents, mais avec une variété presque infinie des macros Auto_Ouvrir
et Auto_Fermer) offre une richesse exceptioonnelle.

La seule chose que je n'aime pas beaucoup dans VBA est le V (Visual) :
devoir construire les UserForms graphiquement prend beaucoup plus de
temps que de définir une ZONES.DE.DIALOGUE(). En particulier, quand on
a plusieur boutons option, par exemple, les aligner sur la gauche et obte-
nir un écartement constant en pixels est beaucoup plus fastidieux qu'avec
l'ancien langage où il était possible d'utiliser des formules.

Au point que je me suis construit un outil qui à partir d'une zone de défi
nition de ZONES.DE.DIALOGUE() à l'ancienne, construit le UserForm
correspondant.

Je réitère mon conseil d'essayer de découvrir VBA, et plus si affinités
;-))

Voici de quoi démarrer :

Des pages dont je suis l'auteur, ce qui devrait vous rassurer : on arrive
très bien à passer des macros XL4 à VBA

www.gaboly.com/VBA/index.html (sommaire VBA de mon site)

et bien sûr,

www.excelabo.net

et l'usage régulier de ce forum

Bon courage à vous 2 ;-))



Jean Aurélien wrote:
J'utilise Excel 97 et j'utilise de nombreuses macros
crées sous Excel 4 ou 5.
Jusqu'à la version 1997, il existait dans la barre
d'outils "Visual Basic" un outil "Continuer" (2 barres
verticales) qui permettait de reprendre une macro
volontairement interrompue. Ceci afin de permettre, par
exemple lors d'un changement de feuille de calcul en
cours d'éxécuition de la macro, de placer sans risque
d'erreur la cellule active à un endroit - évolutif -
précis .
J'avais bien évidemment installé cet outil dans ma barre
d'outils standart.
Depuis 1997, cet outil n'existe plus, et je me retrouve
devant le dilemne suivant : Ou bien suivre les mises à
jour d'Excel (Aujourd'hui 2003) et ne plus pouvoir me
servir de mes macros, ce qui me semble impossible. Ou
bien en rester à Excel 1997, ce que je fais ...
Avec regrets.
Précision peut-être importante : Je ne connais rien au
langage VB.


Ah, j'en tiens un ! Serrons-nous la main, camarade d'infortune, je suis
aussi un dinosaure des macros Excel 4, et (presque) ignare en VBA.

J'ai eu le même problème que vous. Je n'ai pas trouvé de vraie solution,
j'exécute la macro au pas à pas, je l'arrête quand elle ne fait pas ce
que je veux, et je la reprends à la ligne qui m'intéresse.

--
Yves Benisty


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
sabatier
j'mimisse, comme dit maty...
je dirais plutôt la deuxième ou la troisième chose à faire, michel, car
avant de se livrer au dégraissage, il faut déjà passer pas mal de temps
à lire et comprendre le langage, ce qui évitera de dégraisser ce à quoi
il ne fallait surtout pas toucher...
jps (à l'esprit contrariant ce soir mais aussi contrarié à cause de ce
charles ordurier)


Michel Gaboly a écrit:

En particulier, il ne faut pas se laisser impressionner par le code
généré par l'enregistreur de macros, qui enregistre la valeur de nom-
breuses propriétés dont on n'a pas forcément besoin. La première chose
à faire est du dégraissage.


Avatar
Michel Gaboly
Salut jps

Au moins, tu lis mes messages ;-)))

Tu n'as pas tort pour l'ordre des choses. Quant à la cause de ta contrariété,
je te comprends !


j'mimisse, comme dit maty...
je dirais plutôt la deuxième ou la troisième chose à faire, michel, car
avant de se livrer au dégraissage, il faut déjà passer pas mal de temps
à lire et comprendre le langage, ce qui évitera de dégraisser ce à quoi
il ne fallait surtout pas toucher...
jps (à l'esprit contrariant ce soir mais aussi contrarié à cause de ce
charles ordurier)

Michel Gaboly a écrit:

En particulier, il ne faut pas se laisser impressionner par le code
généré par l'enregistreur de macros, qui enregistre la valeur de nom-
breuses propriétés dont on n'a pas forcément besoin. La première chose
à faire est du dégraissage.



--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
sabatier
si tu utilises la ligne, yves, ce n'est plus une macro mais bel et bien
un maquereau que tu tentes de ferrer et mettre au pas...à pas
jps

Yves Benisty a écrit:

j'exécute la macro au pas à pas, je l'arrête quand elle ne fait pas ce
que je veux, et je la reprends à la ligne qui m'intéresse.