Enchaînement de macros

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. 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. Merci pour la solution qui permet l'execution des macros l'une aprés l'autre !
  2. 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.
    1. Pourquoi pas ?

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

      Merci
  3. Contributeur
    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å
    1. Exact, tu soulèves un nouveau problème pour moi, je dois réflèchir encore un peu !
      Merci @+
  4. Modérateur
    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? --
    1. Contributeur
      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å
    2. Modérateur
      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.
  5. Modérateur
    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? --