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

Code VBA pour copier/coller onglet selon nombre

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 !

tamatave33

XLDnaute Occasionnel
Bonjour le forum,

Dans un classeur composé comprenant :
- un onglet "Initialisation"
- un onglet "Colonne (1)"
- ...

En fonction du nombre (n) indiqué dans la cellule (D7) de l'onglet "Initialisation", je voudrais écrire un code pour faire (n-1) copies de l'onglet "Colonne (1)".

Quelqu'un pourrait-il m'aider ?
Merci d'avance.
 

Pièces jointes

Re : Code VBA pour copier/coller onglet selon nombre

Bonsoir tamatave,

Copie ceci dans la feuille Initialisation

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, k, x, nb
Application.ScreenUpdating = False
If Target.Address <> "$D$7" Then Range("d7").Activate
nb = Range("d7")
For i = 1 To nb
    Sheets("Colonne(1)").Copy After:=Sheets(i)
    ActiveSheet.Name = "Colonne" & "(" & i + 1 & ")"
Next i
Range("d7").ClearContents

For Each x In ActiveWorkbook.Sheets
For k = 3 To ActiveWorkbook.Sheets.Count
If Sheets(k - 1).Name > Sheets(k).Name Then
Sheets(k - 1).Move After:=Sheets(k)
End If
Next
Next
End Sub


À bientôt 😎
 
Dernière édition:
Re : Code VBA pour copier/coller onglet selon nombre

Bonjour Lone-wolf,

Merci pour ton aide.
J’ai un petit problème : ça bloque à l’instruction "Sheets("Colonne(1)").Copy After:=Sheets(i)" avec le message suivant : "Erreur d’exécution ‘9’:l’indice n’appartient pas à la sélection."
As-tu une idée ?
Merci.
 

Pièces jointes

Re : Code VBA pour copier/coller onglet selon nombre

Bonjour tamatave,

Oui c'est le nom de la feuille "Colonne (1)" qui causait problème.

Voici la correction que je viens de tester.


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, k, x, nb
Application.ScreenUpdating = False
If Target.Address <> "$D$7" Then Range("d7").Activate
nb = Range("d7")
For i = 1 To nb
    Feuil2.Copy After:=Sheets(i)
    ActiveSheet.Name = "Colonne" & " (" & i + 1 & ")"
Next i
Range("d7").ClearContents

For Each x In ActiveWorkbook.Sheets
For k = 3 To ActiveWorkbook.Sheets.Count
If Sheets(k - 1).Name > Sheets(k).Name Then
Sheets(k - 1).Move After:=Sheets(k)
End If
Next
next
End Sub

Désolé pour cette erreur. 😱


À bientôt 😎
 
Dernière édition:
- 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
10
Affichages
482
Réponses
20
Affichages
1 K
Réponses
1
Affichages
444
Réponses
6
Affichages
787
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…