Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Extraire feuille identique plusieurs fois

  • Initiateur de la discussion Initiateur de la discussion Etn
  • Date de début Date de début

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 !

Etn

XLDnaute Occasionnel
Bonjour,

Cela fait des heures que je suis bloqué dans ma macro (qui je suis sûr est toute simple mais encore trop difficile pour moi).

Mon objectif est d'extraire la feuille tableau du classeur travail plusieurs fois, en changeant à chaque fois le nom du fruit (la liste est dans la feuille "donnees").

Voila où j'en suis, mais j'ai toujours ce message d'erreur "Next sans For", pourtant j'ai bien un For donc je ne comprends pas..

VB:
Sub Copier()
 Dim objWorkbookCible As Workbook
 Dim objworkbooksource As Workbook
 Set objworkbooksource = ActiveWorkbook
 For i = 1 To Range("nbfruits")
 With ThisWorkbook.Sheets("donnees")
  Range("fruit") = Cells(6 + i, 1)
  Worksheets("tableau").Copy
  Range("A1:S49").Select
  Selection.Copy
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  Next i
End Sub

En bonus si c'est possible de renommer chaque nouvelle feuille en nom du fruit (je l'ai nommé "fruit" dans le gestionnaire de nom) ce serait parfait.

Merci d'avance pour votre aide,

Etn
 

Pièces jointes

Hello,

Le code n'est pas très propre et il y a surement mieux, mais il fait le travail. Seul problème, la source de la Data Validation doit uniquement sélectionner les fruits et aucune cellule vide sinon la macro créer une feuille en plus (qu'il est possible de supprimer à la main

VB:
Sub Copier()
Dim wb As Workbook
Dim inputRange As Range
Dim c As Range
Dim wsD As Worksheet
Dim wsT As Worksheet

Set wb = ThisWorkbook
Set wsD = wb.Worksheets("Donnees")
Set wsT = wb.Worksheets("Tableau")

With wsT
Set inputRange = Evaluate(.Range("D3").Validation.Formula1)
    For Each c In inputRange
    On Error GoTo EH
        .Range("fruit") = c
        .Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = .Range("fruit")
    Next c
End With

EH:
End Sub
 
Bonjour Gosselien, Jauster,

@gosselien : J'essaierai d'installer cela sur mon ordi, depuis le boulot c'est pas très recommandé 🙂

@Jauster : Super cela fonctionne presque parfaitement. J'ai oublié de le préciser mais je souhaiterais que les feuilles générées soient dans un nouveau classeur (et donc que le "classeur travail" ne change pas).
Et pour la feuille vide générée pas de probleme.

Merci pour votre aide en tout cas !
 
- 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

Réponses
5
Affichages
253
Réponses
4
Affichages
194
Réponses
3
Affichages
677
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
497
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
176
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
652
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…