Enchaînement de macros

Résolu/Fermé
ridel66 Messages postés 73 Date d'inscription jeudi 26 août 2010 Statut Membre Dernière intervention 24 avril 2011 - 5 sept. 2010 à 22:12
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 7 sept. 2010 à 12:57
Bonjour tout le monde,

Comment faire pour executer deux macros à la suite l'une de l'autre.
Exemple:

1/Création de nouvelle feuille

Sub NouveauBénéficiaire()
Sheets("Planning Bénéficiaire").Copy After:=Sheets(3)
ActiveSheet.Visible = True

End Sub

2/ Saisie d'un nom dans cette nouvelle feuille

3/ Renommer cette feuille comme la cellule saisie

Sub renommer()
ActiveSheet.Name = [A3]

End Sub


Cordialement



5 réponses

Le Pingou Messages postés 12153 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 28 septembre 2024 1 447
6 sept. 2010 à 22:55
Bonjour,
Vous insérez le nom de la deuxième procédure dans la première:
Exemple:
Sub NouveauBénéficiaire() 
Sheets("Planning Bénéficiaire").Copy After:=Sheets(3) 
ActiveSheet.Visible = True 

call renommer

End Sub

1
ridel66 Messages postés 73 Date d'inscription jeudi 26 août 2010 Statut Membre Dernière intervention 24 avril 2011
7 sept. 2010 à 07:34
Merci pour la solution qui permet l'execution des macros l'une aprés l'autre !
0
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 244
5 sept. 2010 à 22:22
je ne suis pas spécialiste, mais je ferais une troisième macro qui exécuterai les 2 autres macro et + si nécessaire, avec des raccourcis clavier que tu leur attribuerais au préalable.
0
ridel66 Messages postés 73 Date d'inscription jeudi 26 août 2010 Statut Membre Dernière intervention 24 avril 2011
5 sept. 2010 à 22:37
Pourquoi pas ?

Je vais essayer, même si il existe peut être une solution plus directe.

Merci
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 948
6 sept. 2010 à 23:25
Salut le forum

Si ta cellule [A3] est vide ou que le nom existe déjà
ActiveSheet.Name = [A3] va générer une erreur.

Merci de mieux expliquer ta demande.

Mytå
0
ridel66 Messages postés 73 Date d'inscription jeudi 26 août 2010 Statut Membre Dernière intervention 24 avril 2011
7 sept. 2010 à 07:37
Exact, tu soulèves un nouveau problème pour moi, je dois réflèchir encore un peu !
Merci @+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
Modifié par pijaku le 7/09/2010 à 12:58
Bonjour,
Code à modifier en fonction du contenu souhaité de la cellule A3 (texte, nombre, date ...)
Sub NouveauBénéficiaire()   
Dim resultat As String   
Sheets("Planning Bénéficiaire").Copy After:=Sheets(3)   
ActiveSheet.Visible = True
resultat = InputBox("Inscrire en Cellule A3 : ","Saisie A3")  
[A3] = resultat 'à modifier si l'on veux un résultat en nombre : CInt(resultat) ou CDate(resultat) etc...  
ActiveSheet.Name = [A3]  
End Sub

Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 948
7 sept. 2010 à 12:54
Salut le forum

«ActiveSheet.Visible = True 'ligne inutile»

Pijaku, cette ligne est la car il copie un feuille masquée.

Référence : Erreur Macro si feuille masquée

Mytå
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
7 sept. 2010 à 12:57
Salut Myta
Oui. Bon ok. alors "Ligne utile..."
M'en vais de ce pas corriger mes posts (7 et 8).
Merci et bonne journée à toi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
Modifié par pijaku le 7/09/2010 à 12:58
Re- tout le monde,
Une autre solution consiste à exécuter la macro 1 et créer dans la nouvelle feuille une macro évènementielle se déclenchant lors de la saisie dans A3 :
Sub NouveauBénéficiaire() 
Dim X As Integer 
Sheets("Feuil1").Copy After:=Sheets(3) 
ActiveSheet.Visible = True

With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule 
    X = .CountOfLines 
    .InsertLines X + 1, "Private Sub Worksheet_Change(ByVal Target As Range)" 
    .InsertLines X + 2, "If IsEmpty([A3]) Or ActiveSheet.Name = [A3] Then" 
    .InsertLines X + 3, "Exit Sub" 
    .InsertLines X + 4, "Else" 
    .InsertLines X + 5, "ActiveSheet.Name = [A3]" 
    .InsertLines X + 6, "End If" 
    .InsertLines X + 7, "End Sub" 
End With 
End Sub


Attention tout de même : à chaque fois que l'on modifie le contenu de A3 dans cette feuille, la macro changera le nom de la feuille... Selon les cas cela peut être pratique...ou pas!
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
0