Enchaînement de macros

Résolu
ridel66 Messages postés 73 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
    1. ridel66 Messages postés 73 Statut Membre
       
      Merci pour la solution qui permet l'execution des macros l'une aprés l'autre !
      0
  2. tchernosplif Messages postés 714 Statut Membre 249
     
    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
    1. ridel66 Messages postés 73 Statut Membre
       
      Pourquoi pas ?

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

      Merci
      0
  3. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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
    1. ridel66 Messages postés 73 Statut Membre
       
      Exact, tu soulèves un nouveau problème pour moi, je dois réflèchir encore un peu !
      Merci @+
      0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      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
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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