Macro avec different cas

flo2002

XLDnaute Impliqué
Bonjour le forum,

j'espere que le week end a été bon!

J'ai déja un petit soucis de macro ce matin.
En effet, je n'arrive pas faire dire à une macro qu'elle doit en lancer une autre en fonctionde ce qui est ecrit en E4.

En faite, c'est pour une case a cochée.
Soit elle cache soit elle fait apparaitre des colonnes.
Le cas ou elle cache fonctionne tres bien.
Je voudrai maintenant faire en sorte de lancer tel ou tel macro en fonction de ce qui est mis en E4 .*
merci d'avance!!!
 

Adeus33

XLDnaute Occasionnel
Bonjour

Tu peux lancer les différentes macro en écrivant simplement le nom de ces dernière par exemple

Sub macro1 ()

Si tu marque dans ton code
macro1
il va la lancer

Donc dans ton cas je marquerais:
If range('E4')='lancemacro1' then macro1
If range('E4')='lancemacro2' then macro2

Voila bon courage

Adeus
 

flo2002

XLDnaute Impliqué
Desolé j'ai oublier de specifier que E4 est une liste de choix...

Donc je cherche un code du type:

If E4 = X

Case X= Janvier Janvier
Case X= Fevrier fevrier

etc

Merci d'avance

Dsl j'ai encore parlé trop vite et bien sure que ton code est bon!

Je te remercies pour cette aide!

Message édité par: flo2002, à: 15/05/2006 09:02
 

Adeus33

XLDnaute Occasionnel
Re

Je comprend pas, meme si il s'agit d'une liste de choix, tu peux utiliser la méthode que je viens de te donner.

Ta liste de choix doit etre figé et il faut marquer dans ton code que:

Si la case E4 = valeur1 Alors on lance Macro1
ensuite tu répétes cette phrase autant de voir que c'est nécessaire

Si tu comprends pas joins un fichier exemple

Adeus33
 

Adeus33

XLDnaute Occasionnel
Adeus33 écrit:
Re

Je comprend pas, meme si il s'agit d'une liste de choix, tu peux utiliser la méthode que je viens de te donner.

Ta liste de choix doit etre figé et il faut marquer dans ton code que:

Si la case E4 = valeur1 Alors on lance Macro1
ensuite tu répétes cette phrase autant de vfois que c'est nécessaire

Si tu comprends pas joins un fichier exemple

Adeus33


OK j'avais pas raffraichi
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Flo2002, Adeus33, le Forum

On peut faire comme préconisé par Adeus33 dans le cas d'une minorité d'actions attendues par la valeur retournée dans la cellule 'E4', mais Flo2002 n'était pas si loin que celà avec son Select Case... (Voir aussi l'aide de VBA à Select Case)

Voici un exemple, plus concis et plus lisible qu'un pavé de If... Si il y a beaucoup de conditions imbriquées...


Private Sub Worksheet_Change(ByVal Target As Range)

   
If Target.Address(0, 0) = 'E4' Then
       
Select Case Target.Value
           
Case 1, 5, 11
                Macro1
           
Case 2, 3, 4
                Macro2
           
Case 6 To 10, 12 To 20
                Macro3
           
Case 'TOTO1' To 'TOTO9'
                Macro4
           
Case 'AAAA', 'BBBB', 'CCCC'
                Macro4
           
Case Else
                MsgBox 'Aucune Macro ne Correspond à cette Valeur !'
       
End Select
   
End If
End Sub

Private Sub Macro1()
    MsgBox 'Macro1'
End Sub

Private Sub Macro2()
    MsgBox 'Macro2'
End Sub

Private Sub Macro3()
    MsgBox 'Macro3'
End Sub

Private Sub Macro4()
    MsgBox 'Macro4'
End Sub

En prime je l'ai prévue en évènementielle, à placer dans le Private Module de la Feuille contenant la cellule E4 'Pilote'...

Bonne Journée et Semaine
[ol]@+Thierry[/ol]
 

Statistiques des forums

Discussions
312 563
Messages
2 089 692
Membres
104 257
dernier inscrit
Stane78