Code VBA pour copier/coller onglet selon nombre

tamatave33

XLDnaute Junior
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

  • Exemple.xls
    18.5 KB · Affichages: 43
  • Exemple.xls
    18.5 KB · Affichages: 46

Lone-wolf

XLDnaute Barbatruc
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 :cool:
 
Dernière édition:

tamatave33

XLDnaute Junior
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

  • Exemple.xls
    27.5 KB · Affichages: 45
  • Exemple.xls
    27.5 KB · Affichages: 41

Lone-wolf

XLDnaute Barbatruc
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. :eek:


À bientôt :cool:
 
Dernière édition:
Haut Bas