Microsoft 365 Évènement : Quand un nouvelle feuille est ajoutée au classeur

MarcMad

XLDnaute Nouveau
Bonjour,

J'aimerais créer un évènement personnalisé.
Soit lorsque j'ajoute une feuille (Feuille de temps) a mon classeur de sommaire (cette nouvelle feuille provient d'un autre classeur que je drag and drop + crtl dans le classeur) que sur la feuille sommaire certaine cellule se remplissent en fonction de cette nouvelle feuille Importer.

Merci
 

eriiic

XLDnaute Barbatruc
Bonjour,

plus simplement tu pourrais mettre une macro sur l'activation de cette feuille Sommaire pour la mettre à jour, en balayant toutes les feuilles pour détecter les nouvelles.
J'ai testé l'événement d'application App_WorkbookNewSheet, malheureusement il ne détecte pas les ajouts par copie.
eric
 

MarcMad

XLDnaute Nouveau
J'aurais un autre idée pour résoudre mon problème.

Je vous explique la situation :

J'ai un classeur avec plusieurs feuilles de temps de production et une feuille sommaire pour compiler le tout.

Il faudrait faire une recherche de correspondance entre les nom de feuille de feuille de temps dans le classeur entier et la plage de cellule A1:A500 dans la feuille de sommaire.

Lorsque qu'il y a correspondance, copier certaine cellules de la feuille de temps sur la feuille de sommaire.

Ne pas effectuer la correspondance lorsque la plage B1 : B:500 de la feuille de sommaire est déjà rempli.

Voila je vous joint le fichier pour facilité le tout

Merci
 

Pièces jointes

  • feuille de temps-2020 TEST.xlsm
    97.8 KB · Affichages: 13

eriiic

XLDnaute Barbatruc
Bonjour,

J'ai mis ta colonne A au format texte comme on y recherche des noms de feuille qui sont des chaines.
La ligne 2 doit être remplie, elle sert de modèle pour les formules et constantes.
Ca peut être vers une feuille modèle masquée, et la ligne 2 masquée aussi.
Quand tu retournes sur Sommaire, la macro balaie toutes les feuilles et ajoute les absentes dans A en adaptant les formules.
Regarde si ça te va
eric
 

Pièces jointes

  • feuille de temps-2020 TEST.xlsm
    174.8 KB · Affichages: 8

MarcMad

XLDnaute Nouveau
Sérieusement sa fonctionne très bien.
Petites chose a modifier

1) Lorsque l'on supprime une sheet, il faudrait que la ligne correspondente dans le sommaire s'éfface aussi
2)la colone H et M contienne des formules relatives ainsi lorsque la nouvelle ligne est créé il copie la formule de la 2e ligne intégralement.
 

eriiic

XLDnaute Barbatruc
Bonjour,

VB:
Private Sub Worksheet_Activate()
    Dim Sh As Worksheet, c As Range, feuilles
    Dim lig As Long, col As Long
    ' crea
    For Each Sh In Worksheets
        If Sh.Name <> "Sommaire" Then
            Set c = Columns(1).Find(Sh.Name, , xlValues, xlWhole)
            If c Is Nothing Then
                lig = Cells(Rows.Count, 1).End(xlUp).Row + 1
                Cells(lig, 1) = Sh.Name
                For col = 2 To 20
                    Cells(lig, col).Formula = Replace(Cells(2, col).Formula, "'" & Cells(2, 1) & "'", "'" & Sh.Name & "'")
                Next col
                Cells(2, "H").Copy Cells(lig, "H")
                Cells(2, "M").Copy Cells(lig, "M")
            End If
        End If
    Next Sh
    ' supp
    feuilles = [A1].Resize(Cells(Rows.Count, 1).End(xlUp).Row)
    For lig = UBound(feuilles) To 2 Step -1
        If existSheet(feuilles(lig, 1)) = 0 Then Rows(lig).EntireRow.Delete
    Next lig
End Sub

Function existSheet(ByVal nomFeuille As String) As Long
    On Error Resume Next
    existSheet = Sheets(nomFeuille).Index
End Function
toujours pareil, c'est le fait d'activer Sommaire qui met à jour.
eric
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Pourquoi cette fusion inutile des lignes 1:2 alors que je t'ai dit que la macro prenait son modèle en ligne 2 (par conséquent entièrement vide) ?
Soit tu défusionne pour utiliser la ligne 2, soit tu adaptes la macro en conséquence.
eric
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 838
dernier inscrit
Christelle.B86