Dupliquer X feuille Excel en 1 clic

1 : lorsque j'efface dans ma feuille DE-SEC une ligne ça me met cela

Remplacez la ligne de code surlignée en jaune par ces deux lignes

If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub

2 : lorsque je rempli une nouvelle ligne dans ma feuille D-E-SEC il me crée bien ma nouvelle feuille mais il reprends ce qui est dans la feuille 1. Existe t-il un moyen qu'il se créé "vide".

Dans la macro Dupliquer, rajoutez la ligne ci-dessous entre --> .Range("L2").FormulaR1C1 = "='D-E-SEC'!R[" & 17 + i & "]C[-7]" et le END WITH

.Range("A15:D53, E15:E53, G15:G53, I15:J53, L15:L53, N15:N53, P15:P53").ClearContents

Crdlt

Bonjour Dan,

J'espère que vous allez bien.

Merci pour votre retour !

J'ai fait ce que vous m'avez dit mais ça me créé ma feuille 2 toujours en se basant sur la feuille 1 et par contre le SD2 (en l'occurrence) ne prends plus en compte sa feuille 2, elle est "vide". Par contre pour la feuille 3, elle duplique les données de la feuille 1 et le SD3 reprends bien sa feuille 3.

Ci-joint à l'appuis...

Désolée et merci encore une fois !

J'ai fait ce que vous m'avez dit

Désolé mais relisez mon dernier message. Je ne vous ai pas dit de placer dans le code DupliquerSD

Excusez-moi !

Effectivement j'avais mis dans DupliquerSD...

C'est parfait !

Je ne vous remercierez jamais assez pour votre aide.. Merci beaucoup et j'ai beaucoup appris !!

Encore merci !!!

Bonjour Dan,,
J'espère que vous allez bien....
Je suis vraiment désolée de vous déranger mais j'ai un petit souci avec mon fichier et une question également.

- J'ai créé mon onglet planning qui marche plus ou moins. Cadence et Durée je souhaite qu'il reprenne certaine donnée sur mes feuilles créé. J'ai mis la formule sur la première ligne sauf que du coup quand je glisse vers le bas forcément il reste sur la feuille "1" qui est déjà créé... Comment je peux faire pour qu'il prenne automatiquement la feuille crée ?

- Question : dans mon onglet DE-SEC, a chaque ligne que je rempli, la feuille se créé avec son SD. J'ai essayé de copier/coller dans ma feuille DE-SEC, un titre jusqu'à la ligne 100 afin qu'il ma crée les 100 feuilles d'un coup. Sauf que cela ne marche pas, je dois revenir ligne par ligne ou sinon double cliquer ligne par ligne. Pensez-vous qu'il y a un moyen de faire cela ? ça risque d'alourdir le code non ?

J'ai regardé sur des forums pour faire une boucle. Je me dis est ce que si je fais une macro avec un Input qui me demande combien de feuille je souhaite crée ?? ça me crée les X feuilles d'un coup et ensuite j'ai juste à copier/coller mes "titre" dans l'onglet D-E Sec.. Je ne sais pas..

En tout cas merci par avance et j'essaye d'avancer de mon côté pour des solutions :)

Bonne journée !

Bonjour

- J'ai créé mon onglet planning qui marche plus ou moins. Cadence et Durée je souhaite qu'il reprenne certaine donnée sur mes feuilles créé. J'ai mis la formule sur la première ligne sauf que du coup quand je glisse vers le bas forcément il reste sur la feuille "1" qui est déjà créé... Comment je peux faire pour qu'il prenne automatiquement la feuille crée ?

Dans votre feuille Planning mettez ces deux formules :
- En B7 --> =INDIRECT(EQUIV($A7;'D-E-Sec'!$C$20:$C$169;)&"!T"&LIGNE()+12)
- En C7 --> =INDIRECT(EQUIV($A7;'D-E-Sec'!$C$20:$C$169;)&"!T"&LIGNE()+13)

Ensuite recopiez les formules vers le bas

- Question : dans mon onglet DE-SEC, a chaque ligne que je rempli, la feuille se créé avec son SD. J'ai essayé de copier/coller dans ma feuille DE-SEC, un titre jusqu'à la ligne 100 afin qu'il ma crée les 100 feuilles d'un coup. Sauf que cela ne marche pas, je dois revenir ligne par ligne ou sinon double cliquer ligne par ligne. Pensez-vous qu'il y a un moyen de faire cela ? ça risque d'alourdir le code non ?

Tout est toujours possible. Mettez ce code dans le module 1 en dessous de la Sub DupliquerSD.

Sub Creer()
Dim Cel As Range

Application.ScreenUpdating = False
With Sheets("D-E-SEC")
    For Each Cel In .Range("A20:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
        If .Range("C" & Cel.Row) <> "" Then
            i = .Range("A" & Cel.Row)
            Call Dupliquer
        End If
    Next Cel
End With
Application.ScreenUpdating = True
End Sub

Ensuite copiez vos données puis coller les dans la colonne C de la feuille DE-SEC. Une fois effectué, exécutez la macro ci-dessus.

J'ai testé le code et les formules sur le fichier version 4 posté dans mon post précédent car votre fichier version 5 est différent et ne comporte pas les données nécessaires.

Cordialement

Bonjour Dan,

J'espère que vous allez bien.

Désolée pour le temps de réponse.

Je viens de voir maintenant... :(

Cela marche super. Si je comprends bien. Il faudra dès lors que je copie/colle, que je lance manuellement la commande c'est bien ça ?

Encore merci pour votre temps que vous m'avez accordé !

Bonjour

Si je comprends bien. Il faudra dès lors que je copie/colle, que je lance manuellement la commande c'est bien ça ?

Oui exactement.

Cordialement

D'accord merci !

Je vais crée un bouton ou sinon un raccourci :)

Petite question, s'il vous plait (encore je suis chiante.., désolée...) :

Pouvez-vous m'expliquer la formule :

=SIERREUR(INDIRECT(INDIRECT("A" & LIGNE())&"!S9");0)

Parce que par exemple, je voulais la changer car dans mon « DE Sec »la colonne F doit renvoyer la valeur S6 des onglets des SD (non S9 des onglets 1,2,3...) mais je ne comprends pas vraiment la formule. "A" renvoi la colonne A de ma feuille D.E Sec ? J'ai compris qu'INDIRECT me permet d'extraire une donnée par rapport à une ligne et cellule.

Merci beaucoup !

Bonne soirée ! :)

Bonjour

Pouvez-vous m'expliquer la formule :=SIERREUR(INDIRECT(INDIRECT("A" & LIGNE())&"!S9");0)

1. INDIRECT("A" & LIGNE())
La formule recherche la valeur qui se trouve en colonne A de la ligne où se trouve la formule. Cette formule est nécessaire pour trouver le nom de la feuille dans le ficher. Vous avez donc bien compris lorsque vous dites dans votre post --> "A" renvoi la colonne A de ma feuille D.E Sec

2. INDIRECT(......)&"!S9")

Permet de trouve la valeur de la cellule S9 dans la feuille trouvée par la formule expliquée au point 1

3. SIERREUR

Permet de renvoyer la valeur 0 si la valeur S9 n'est pas trouvée

je voulais la changer car dans mon « DE Sec »la colonne F doit renvoyer la valeur S6 des onglets des SD (non S9 des onglets 1,2,3...)

Pour votre adaptation de formule :
- SD n'étant pas mentionné dans la feuille D-E-SEC, il faut l'ajouter dans la formule
- S9 sera remplacé par S6

Du coup la formule devient celle-ci --> =SIERREUR(INDIRECT("SD" & INDIRECT("A" & LIGNE())&"!S6");0)
Formule à recopier ensuite vers le basCordialement

D'accord !

J'ai compris. Du coup faut toujours que je mentionne la feuille pour qu'il prenne en compte j'ai compris ! :)

J'ai un dernier petit problème.

Dans mon onglet "Feuille_Vente_Base", mes colonnes E18, E19, E20, E21 calcule la sommes de mes feuilles 1,2,3,4 etc en avec la cellule concernée. Sauf que lorsque je fais le total, il prends également en compte mes feuilles SD de façon automatique.. et j'ai l'impression que c'est caché car il m'indique bien =SOMME('1:2'!K54)

Pouvez-vous m'aider s'il vous plait encore une fois... ? désolée :(

Dans mon onglet "Feuille_Vente_Base", mes colonnes E18, E19, E20, E21 calcule la sommes de mes feuilles 1,2,3,4 etc en avec la cellule concernée. Sauf que lorsque je fais le total, il prends également en compte mes feuilles SD de façon automatique.. et j'ai l'impression que c'est caché car il m'indique bien =SOMME('1:2'!K54)

Oui c'est normal car chaque SD est située après la feuille numérotée correspondante. D'où le calcul de la somme englobe aussi les montants des feuilles SD. Pour faire simple allez dans VBA --> THISWORKBOOK et remplacez le code Private Sub Workbook_SheetActivate(ByVal Sh As Object) par celui-ci dessous

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim shref As String
Dim Tablo()

Application.ScreenUpdating = False
If stpevt = True Or ActiveSheet.Name Like "SD*" Then Exit Sub

If UCase(ActiveSheet.Name) = "FEUILLE_VENTE_BASE" Then
    Tablo = Array()
    For Each Sh In Worksheets
        stpevt = True
        If Sh.Name Like "SD*" Then
            ReDim Preserve Tablo(UBound(Tablo) + 1)
            Tablo(UBound(Tablo)) = Sh.Name
            Sh.Visible = False
        End If
    Next Sh
    Sheets(Tablo).Move after:=Sheets(Sheets.Count)
    Sheets("Feuille_Vente_Base").Select
Else
    For Each Sh In Worksheets
        shref = CStr(ActiveSheet.Name)
        If Sh.Name Like "SD*" Then
            If Sh.Name <> "SD" & shref Then
                Sh.Visible = False
            Else: Sh.Visible = True: stpevt = True: Sh.Move after:=Sheets(shref): Sheets(shref).Activate
            End If
        End If
    Next Sh
End If
stpevt = False
Application.ScreenUpdating = True
End Sub

Cordialement

Merci beaucoup ! C'est très gentil ! Merci !!

Rechercher des sujets similaires à "dupliquer feuille clic"