VBA boutons

Bonjour à tous

Je suis pratiquement débutant en VBA, même si j'ai déjà fait quelques développements.

J'ai une feuille VBA Excel, sur laquelle j'ai défini des boutons pour appeler mes programmes.

Bouton1 appelle programme 1

Bouton2 appelle programme 2

Bouton5 appelle programme 5

Bouton9 appelle le résultat final (produit par les programmes 1 à 5)

Tout fonctionne bien.

J'ai créé le Bouton08 qui a pour but d'appeler tous les programmes à la queue leu leu et en un seul clic.

Quand je clique sur le Bouton08 , ça ne fonctionne pas. Et je ne vois pas pourquoi.

J'ai le message:

Erreur de Compilation

Variable ou procédure attendue, et non un module.

Ce message, très général, ne m'aide pas.

J'ai fait un tas d'essais et je ne m'en sors pas. Je pense plus à un problème d'environnement, qu'à un problème de syntaxe, mais ce n'est qu'une hypothèse.

Voici les boutons tels qu'ils ont été définis;

Option Explicit

'

' Boutons pour l'application DL_ADHpgm..

'

Sub Bouton01_ADH_DateFichier_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton01_ADH_DateFichier_Cliquer / DateFichier"

Sheets("DateFichier").Select

Range("A1").Select

End Sub

Sub Bouton02_ADH_Source1_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton02_ADH_Source1_Cliquer / Source1"

Sheets("Source1").Select

Range("A1").Select

End Sub

Sub Bouton03_ADH_ADHpgm01_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton03_ADH_ADHpgm01_Cliquer / ADHpgm01"

Call DL_ADHpgm01

End Sub

Sub Bouton04_ADH_ADHpgm02_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton04_ADH_ADHpgm02_Cliquer / ADHpgm02"

Call DL_ADHpgm02

End Sub

Sub Bouton05_ADH_ADHpgm03_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton05_ADH_ADHpgm03_Cliquer / ADHpgm03"

Call DL_ADHpgm03

End Sub

Sub Bouton06_ADH_ADHpgm04_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton06_ADH_ADHpgm04_Cliquer / ADHpgm04"

Call DL_ADHpgm04

End Sub

Sub Bouton07_ADH_ADHpgm05_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton07_ADH_ADHpgm05_Cliquer / ADHpgm05"

Call DL_ADHpgm05

End Sub

Sub Bouton08_ADH_ADHpgm06_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton08_ADH_ADHpgm06_Cliquer / ADHpgm06"

Call DL_ADHpgm01

Call DL_ADHpgm02

Call DL_ADHpgm03

Call DL_ADHpgm04

Call DL_ADHpgm05

End Sub

Sub Bouton09_ADH_Resultat5_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton02_ADH_Resultat5_Cliquer / Resultat5"

Sheets("Resultat5").Select

Range("A1").Select

End Sub

Peut-être que ce n'est pas la bonne façon de faire.

Quelqu'un parmi vous aurait-il une solution, ou bien des idées pour m'aider à avancer?

Merci d'avance

Bien cordialement.

Zar78

Bonjour Zar, bonjour le forum,

Tant que tu ne daigneras pas fournir les codes des procédures :

DL_ADHpgm01

DL_ADHpgm02

DL_ADHpgm03

DL_ADHpgm04

DL_ADHpgm05

Nous se serons pas en mesure de te répondre.

Bonjour

J'ai mis du temps à répondre, car mes programmes sont assez gros, et cela vous aurait pris trop de temps à les décortiquer.

Il fallait faire autrement alors j'ai fait un jeu d'essais, le plus simple possible, afin de pouvoir vous le transmettre.

Après de nouvelles tentatives, à partir d'idées trouvées sur internet, je viens de trouver une solution qui fonctionne.

Mais je n'ai pas compris pourquoi cela fonctionne comme ça. (Call DL_ADHpgm01.DL_ADHpgm01)

Sub DL_ADH_Bouton06_ADHpgm01_05_Cliquer()

MsgBox " DL_ADH_Boutons / Bouton06_ADH_ADHpgm01_05_Cliquer / ADHpgm01_05"

Call DL_ADHpgm01.DL_ADHpgm01

Call DL_ADHpgm02.DL_ADHpgm02

Call DL_ADHpgm03.DL_ADHpgm03

Call DL_ADHpgm04.DL_ADHpgm04

Call DL_ADHpgm05.DL_ADHpgm05

End Sub

Je joins le jeu de tests.

Merci à vous.

Bonjour

Lors de mon dernier message je disais:

"Mais je n'ai pas compris pourquoi cela fonctionne comme ça. (DL_ADHpgm01)"

J'ai progressé et voilà ce que j'ai compris.

Quand j'ai voulu créer le module DL_ADHpgm01, dans le vba, j'ai cliqué sur insérer module (classique!),

et j'ai écrit le code Sub DL_ADHpgm01()

J'ai testé le module et je suis passé à l'écriture d'autres modules. (Je préfère avoir une seule procédure par module.)

Dans l'affichage du VBAProject, je me retouvais avec Module1, Module2...., et ça m'agaçait d'avoir des

noms qui ne soient pas parlants.

J'ai donc renommé Module1 par le nom de la procédure qu'il contient, à savoir en DL_ADHpgm01,

et idem pour les suivants.

Ca fonctionnait bien. J'appelais les modules, un par un, à partir de l'onglet Exécution du VBA.

Mais quand DL_ADHpgm01 est appelé par un Call, VBA se retrouve avec deux noms identiques, et ça ne peut pas fonctionner.

C'est pour ça qu'il faut coder : Call DL_ADHpgm01.DL_ADHpgm01. Ca correspond à Call Module.Procédure

Voilà, ce que j'ai compris et constaté.

Si mon explication peut aider....

Bien cordialement.

Zar78

Rechercher des sujets similaires à "vba boutons"