Inserer une 2eme macro sur une feuille excell

Résolu/Fermé
wervol Messages postés 651 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 1 juin 2020 - 10 mars 2011 à 02:08
wervol Messages postés 651 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 1 juin 2020 - 10 mars 2011 à 23:12
Bonjour,
j'ai une macro avec une procédure trop longue je voudrais donc en mettre une 2ème
voila une ligne de mon code pour exemple

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

On Error Resume Next

If Not Application.Intersect(Target, Range("B4")) Is Nothing Then Range("B48") = Range("B48") + 1
End Sub

je sais qu'il y a la fonction call pour appeler la 2ème macro mais je ne sais pas comment procéder mettre quoi a la fin de mon code sur la 1ère macro, ainsi que le début de la 2ème macro
sa doit être simple mais la je cale
merci pour votre aide
cordialement


A voir également:

4 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
10 mars 2011 à 06:43
Bonjour,

Les 2 macros doivent commencer et finir par
Sub nom_macro()
' le code
...
end sub

Le end sub se met automatiquement, colle ton code au milieu

eric
0
wervol Messages postés 651 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 1 juin 2020 133
10 mars 2011 à 09:24
bonjour eriiic
pour appeler la 2eme macro il n'y a pas de fonction call.? j'ai essayer ce que tu m'as dis mais sa ne fonctionne pas
--

aider dans la mesure des mes connaissances ne me demandez pas l'impossible je saurais pas le faire
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
10 mars 2011 à 19:14
Re,

pour appeler la 2eme macro il n'y a pas de fonction call.?

Si, mais comme tu as dit dans la question que tu le savais je n'en ai pas parlé...

Ca doit ressembler à ça :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("B4")) Is Nothing Then Range("B48") = Range("B48") + 1
'le code qui reste ici
...
call macro1
' encore du code ici si tu veux
...
call macro2
' encore du code ici si tu veux
...
End Sub

sub macro1()
'le code 1
end sub

sub macro2()
'le code 2
end sub

Je t'ai enlevé le On Error Resume Next qui n'est pas du tout une bonne idée. Il vaut mieux être alerté des erreurs que de se retrouver avec des bugs indécelables.
On ne le met que quand on sait pertinament que la ligne suivante génère des erreurs et qu'on en tient compte dans le code.
Et juste en dessous de cette ligne on rétabli le traitement des erreurs avec On error goto 0

eric
0
Bonjour,

S'il y a des paramètres à la macro, il faut distinguer 2 méthodes :

Option Explicit 

Sub Macro1(ByVal Nom As String) 
    MsgBox Nom 
End Sub 
' 

Sub Macro2(ByVal Prenom As String) 
    MsgBox Prenom 
End Sub 
' 

Sub Macro() 

    Call Macro1("Bonjour") 
    Call Macro2("Bon matin") 
     
    ' Ou encore 
     
    Macro1 "Bonne après-midi" 
    Macro2 "Bonne soirée" 
     
End Sub 
' 


Cdt

Info
0
wervol Messages postés 651 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 1 juin 2020 133
10 mars 2011 à 23:12
merci eric et info pour vos réponses
sa va m'aider a finir le travail que je suis en train de faire
cordialement
0