[Résolu] Macro suite à une création d'onglet

Thierry.lgs

XLDnaute Nouveau
Bonjour,
je pose ma 1ère question (pour le moment) car malgrès des recherches un peu partout, je ne trouve aucune solution viable.
Mon projet est simple:
j'ai un classeur avec une feuille de base, qui alimente une autre feuille (hebdomadaire...) avec quelques controles VBA.
jusque là rien de méchant.
Le truc c'est qu'il faudrait que la macro d'ajout/suppression d'agents agisse sur les onglets générés chaque semaine dans ce même classeur.
Actuellement, si j'ajoute un personnel dans ma feuille de base (suivi personnel) les données se répercutent sur ma feuil1.
Avec la fonction de copy d'onglet que j'ai positionné, je voudrais que cette manipulation agisse sur toutes les feuilles hebdo qui viendront.
j'ai tenté de mettre un "dim *** as variant" en déclarant des feuilles qui n'existent pas encore, mais j'ai une fenêtre de deboggage qui s'ouvre.

Je vous joins un exemple concret, car mes explications ne me paraissent pas super claires :rolleyes:

Si l'un de vous arrive à me dépêtrer de ça...
Merci d'avance
 

Pièces jointes

  • projet.xlsm
    22.3 KB · Affichages: 64
  • projet.xlsm
    22.3 KB · Affichages: 64
  • projet.xlsm
    22.3 KB · Affichages: 63
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro suite à une création d'onglet

Bonjour Thierry, bonjour le forum,

Peut-être comme ça (tu adapteras pour la suppression) :
Code:
Sub insererAgent()
 
    ' Procédure permettant d'ajouter un nouvel agent
    ' On insère un ligne au-dessus de la dernière ligne
    ' puis on copie le contenu de la dernière ligne sur cette nouvelle ligne
    ' pour chaque feuille
 
    Dim suiviperso As Integer
    Dim feuilun As Integer
    Dim sh As Worksheet 'déclare la variable sh (SHeet)
 
    Application.Cursor = xlWait
 
    suiviperso = Sheets("Suivi personnel").Range("equipes").Row + Sheets("Suivi personnel").Range("equipes").Rows.Count - 1
    Sheets("Suivi personnel").Rows(suiviperso).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Sheets("Suivi personnel").Rows(suiviperso + 1).Copy Sheets("Suivi personnel").Rows(suiviperso)
 
    For Each sh In Sheets 'boucle sur tous les onglets du classeur
        Select Case sh.Name 'agit en foncion du nom de l'onglet
            Case "Suivi personnel" 'cas "Suivi personnel"
                suiviperso = Sheets("Suivi personnel").Range("equipes").Row + Sheets("Suivi personnel").Range("equipes").Rows.Count - 1
                Sheets("Suivi personnel").Rows(suiviperso).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Sheets("Suivi personnel").Rows(suiviperso + 1).Copy Sheets("Suivi personnel").Rows(suiviperso)
            Case Else 'tous les autres cas
                sh.Select 'sélectionne l'onglet
                feuilun = ActiveSheet.Range("presences").Row + ActiveSheet.Range("presences").Rows.Count - 1
                ' Insertion
                ActiveSheet.Rows(feuilun).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                ' Copie des formules issue de la dernière ligne
                ActiveSheet.Rows(feuilun + 1).Copy ActiveSheet.Rows(feuilun)
        End Select 'fin de l'action en fonction du nom de l'onglet
    Next sh 'prochain onglet dela boucle
 
    Sheets("Suivi personnel").Select 'sélectionne l'onglet "Suivi personnel"
    Application.Cursor = xlDefault
    Application.ScreenUpdating = True 'masque les changement à l écran
 
End Sub
 

Thierry.lgs

XLDnaute Nouveau
Re : Macro suite à une création d'onglet

Bonjour Robert
et un énorme merci pour ta solution rapide et efficace !
j'avais quasiment la bonne macro, sauf que j'avais déclaré en variant (en lieu et place de worksheet) et c'est ce qui me bloquait...

100% opérationnel, ca va m'aider à boucler mon projet plus rapidement :)
Cdt
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22