Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 11h36   #1
Nouveau Membre du Club
 
Johan
Etudiant Miagiste en apprentissage (Master 2)
Inscription : avril 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Johan
Localisation : France

Informations professionnelles :
Activité : Etudiant Miagiste en apprentissage (Master 2)

Informations forums :
Inscription : avril 2011
Messages : 128
Points : 27
Points : 27
Par défaut Rendre le nom d'une procédure dynamique

Bonjour,

Je cherche la syntaxe pour rendre le nom d'une procédure dynamique.
Ma procédure s'appelle SearchDevise.
J'aimerai savoir s'il est possible de créer n procédure différentes :
SearchDevise1
SearchDevise2
...
SearchDevisen
avec une variable "num_procédure" qui s'incrémente dans ma boucle.
johan89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h50   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Un exemple à adapter :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub test()
For i = 1 To 2
    Run "test" & i
Next i
End Sub
 
Sub test1()
MsgBox "toto"
End Sub
 
Sub test2()
MsgBox "tutu"
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h56   #3
Nouveau Membre du Club
 
Johan
Etudiant Miagiste en apprentissage (Master 2)
Inscription : avril 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Johan
Localisation : France

Informations professionnelles :
Activité : Etudiant Miagiste en apprentissage (Master 2)

Informations forums :
Inscription : avril 2011
Messages : 128
Points : 27
Points : 27
Ok, merci, mais dans ce cas, nous sommes toujours obligé de "détaillé" chaque procédure. Seule l'exécution est dynamique.

N'y a-t-il pas un moyen de déclarer qu'une seule procédure du genre :

Code :
1
2
3
4
5
For i = 1 to num_procédure 
sub SearchDevise & num_procédure & () 
...<contenu de la procédure dynamique lui aussi> 
end sub 
next i
(syntaxe fausse bien entendu)
johan89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 12h34   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Pas comme ça, tu ne peux pas mettre une sub à l'intérieur d'un code. Pourquoi ne pas passer un paramètre à la macro :

Code :
1
2
3
4
5
6
7
8
9
Sub test3()
    For i = 1 To num_procédure
        SearchDevise num_procédure
    Next i
End Sub
 
Sub SearchDevise(paramètre)
    'xxx
End Sub
Sinon, tu peux construire du code dynamiquement
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 14h30   #5
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour


ici on peut parler d'argument
c'est a dire transporter une variable ou une constante entre plusieurs macro ou fonctions

comme te la suggéré daniel.cmais avec une petite nuance on va faire la memchose dans la meme macro

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Sub test()
For i = 1 To 3
    ma_sub (i)
Next i
End Sub
 
Sub ma_sub(num_procédure As Variant)
 
Select Case num_procédure
 
 Case 1
MsgBox "riri"
Case 2
MsgBox "fifi"
Case 3
MsgBox "loulou"
End Select
End Sub
voila tu a tes trois sub dans la meme sub

on pourrait meme faire une fonction de la meme maniere

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub test()
For i = 1 To 3
  MsgBox le_nom(i) 'ici dans le message box le nom s'affichera en fonction de la variable i
Next i
End Sub
 
Public Function le_nom(num_procédure As Variant) ' ici la variable num_procédure correspondra a i de la sub "test"
 
    Select Case num_procédure
 
    Case 1
        le_nom = "riri"
    Case 2
        le_nom = "fifi"
    Case 3
        le_nom = "loulou"
    End Select
End Function
voila j'espere que ces explications te seront plus parlantes
au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 10h18   #6
Nouveau Membre du Club
 
Johan
Etudiant Miagiste en apprentissage (Master 2)
Inscription : avril 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Johan
Localisation : France

Informations professionnelles :
Activité : Etudiant Miagiste en apprentissage (Master 2)

Informations forums :
Inscription : avril 2011
Messages : 128
Points : 27
Points : 27
Merci beaucoup

Et si mon nombre de procédure est dynamique ... ?
Je vais tester de faire une boucle sur les Case.
johan89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h36.


 
 
 
 
Partenaires

Hébergement Web