XL 2016 Dupliquer une feuille à partir d'une liste d'un fichier fermé

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

leeroy

XLDnaute Nouveau
Bonjour,
Je souhaiterais créer un bouton pour dupliquer une feuille à partir d'une liste d'un fichier fermé sans tenir compte des cases vides et en évitant les doublons.
Je voudrais que chaque feuille soit renommée avec le nom de la valeur de extraite de la liste.

Merci par avance,
Leeroï
 
Bonjour,

si ça peut aider, voir dans ce classeur deux modules exemples
un pour Lire et un autre pour copier Feuilles ou données dans un classeur fermé.

mais il faut maîtriser ce genre de méthode, sinon vous aurez plus vite fait de l'ouvrir !
car cette méthode n'est valable que pour plusieurs fichiers pour un gain de temps conséquent !

EDIT: quand à gérer les doublons voir avec Dictionnary les exemples ne manquent pas voir le site Jacques Boisgontier
 
Bonjour leeroy, xUpsilon, Roland_M,

Voyez les fichiers joints et la macro du bouton "Dupliquer" :
VB:
Sub Dupliquer()
Dim chemin$, fichier$, nf$, F As Worksheet, s As Object, tablo, d As Object, i&, x As Variant, o As Object
chemin = ThisWorkbook.Path & "/"
fichier = "Source.xlsx"
nf = "Feuil1"
Set F = Feuil1 'CodeName de la feuille à dupliquer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'---RAZ---
For Each s In Sheets
    If s.Name <> F.Name Then s.Delete
Next
'---copie de la feuille source---
With F.[A1:A100] 'à adapter
    .Formula = "='" & chemin & "[" & fichier & "]" & nf & "'!A1" 'formule de liaison
    tablo = .Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    .ClearContents
End With
'---création des feuilles---
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
    x = tablo(i, 1)
    If x <> 0 Then
        If Not d.exists(x) Then
            d(x) = ""
            F.Copy After:=Sheets(Sheets.Count)
            ActiveSheet.Name = CStr(x)
            For Each o In ActiveSheet.DrawingObjects
                If TypeName(o) = "Button" Then o.Delete 'suppression du bouton
            Next
        End If
    End If
Next
F.Activate
End Sub
Comme il s'agit de créer des feuilles elles ne peuvent pas être très nombreuses donc des formules de liaisons font bien l'affaire.

A+
 

Pièces jointes

Bonjour tout le monde,

Franchement Job75, partir de ça:
Je souhaiterais créer un bouton pour dupliquer une feuille à partir d'une liste d'un fichier fermé sans tenir compte des cases vides et en évitant les doublons.
Je voudrais que chaque feuille soit renommée avec le nom de la valeur de extraite de la liste.

et arriver à réaliser un code sur une telle base !?
tu es devin c'est pas possible !?
franchement tu m'épates, tu m'épates !!!!!!
 
Bonjour,

'explications simples (entres autres)
Application.ScreenUpdating = False 'évite le rafraîchissement de l'écran ! gain de temps d'exécution !
Application.ScreenUpdating = True 'remet
Application.Calculation = xlCalculationManual 'évite le recalcul sur les feuilles ! gain de temps d'exécution !
Application.Calculation = xlCalculationAutomatic 'remet (exp en fin de procédure)
Application.EnableEvents = False 'évite le déclanchement des évèvements (exp dans code feuille)
Application.EnableEvents = True 'remet (exp en fin de procédure)
Application.DisplayAlerts = False 'évite le déclanchement d'avertissement d'excel(ex suppr feuil sans confirmation)
Application.DisplayAlerts = True 'remet (exp en fin de procédure)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour