Epena a écrit :
Quel est le code qui créé les nouvelles feuilles Excel avec le numéro d'index ?
|
Voici la totalité du code, il est très certainement loin d'être optimisé ou "propre", mais il avait le mérite de fonctionner. Merci d'avance pour tes remarques.
Sub Copie_et_préparation_inventaire()
'' Copie_et_traitement_avant_nouvel_inventaire Macro
' Macro enregistrée le 19/12/2002 par JYG
'
' Activation de la dernière feuille du classeur
Worksheets(Worksheets.Count).Activate
' Contrôle que la copie n'est pas déjà faite et le nom toujours "Nom de la feuille à modifier"
If ActiveSheet.Name = "Nom de la feuille à modifier" Then
MsgBox "ATTENTION, l'inventaire doit être renseigné dans la feuille copiée dont le nom sera à modifier", vbExclamation, " LA COPIE DE FEUILLE EST DEJA FAITE"
Range("K5" ).Select
Exit Sub
End If
' Contrôle que la copie n'est pas déjà faite avec le nom de la feuille modifié et l'inventaire pas encore saisi
Range("K5:L51" ).Select
If ActiveCell = Empty Then
MsgBox "ATTENTION, La dernière feuille est vide dans les colonnes où sont saisies les quantités d'inventaire, donc . . . INVENTAIRE A SAISIR ", vbExclamation, " LA COPIE DE FEUILLE EST DEJA FAITE, MAIS L'INVENTAIRE N'A PAS ENCORE ETE SAISI"
Range("K5" ).Select
Exit Sub
End If
' Affichage du choix de confirmation de la copie de feuille
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
' Définit le message.
Msg = "Vous avez choisi de dupliquer une feuille pour un nouvel inventaire. Confirmer en cliquant sur OUI. ou abandonner en cliquant sur NON"
' Définit les boutons.
Style = vbYesNo + vbCritical + vbDefaultButton1
' Définit le titre.
Title = " Duplication de feuille pour nouvel inventaire"
' Définit le fichier d'aide.
Help = "DEMO.HLP"
' Définit le contexte de la rubrique.
Ctxt = 1000
' Affiche le message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Le programme va copier la feuille.
Else ' L'utilisateur a choisi Non.
MyString = "Non"
Range("A1" ).Select
Exit Sub
End If
' Positionnement sur la première cellule de la feuille à copier
Range("A1" ).Select
' Copie_et_traitement_avant_nouvel_inventaire Macro
Worksheets(Worksheets.Count).Activate
' Déprotection de la feuille à copier
ActiveSheet.Unprotect
' Copie vers une nouvelle feuille que nous appellerons "Nom de la feuille à modifier"
Sheets(Worksheets.Count).Copy After:=Sheets(Worksheets.Count)
Worksheets(Worksheets.Count).Activate
ActiveSheet.Name = "Nom de la feuille à modifier" Range("AD5:AE51" ).Select
Selection.ClearContents
Range("I5:J51" ).Select
Selection.Copy
ActiveWindow.LargeScroll Down:=-1
ActiveWindow.LargeScroll ToRight:=1
Range("AD5" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWindow.LargeScroll ToRight:=0
Range("F5:G51" ).Select
Selection.ClearContents
Range("X5:X51" ).Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.LargeScroll ToRight:=-1
ActiveWindow.LargeScroll Down:=-1
Range("E5" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWindow.LargeScroll Down:=1
ActiveWindow.SmallScroll Down:=3
Range("D56:G58" ).Select
Application.CutCopyMode = False
Selection.ClearContents
Range("K05:L51" ).Select
Application.CutCopyMode = False
Selection.ClearContents
Range("E59:F60" ).Select
Selection.ClearContents
Range("M56:M57" ).Select
Selection.Copy
Range("O56:O57" ).Select
ActiveSheet.Paste
Range("M56:M57" ).Select
Application.CutCopyMode = False
Selection.ClearContents
'Mise à jour de la date du jour et des anciennes dates d'inventaire
Range("C4" ).Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Selection.Copy
Selection.NumberFormat = "dd.mm.yy"
Range("C4" ).Select
Selection.Copy
Range("C3" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("F3" ).Select
Application.CutCopyMode = False
Selection.Copy
Range("E3" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("F2" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("C3" ).Select
Application.CutCopyMode = False
Selection.Copy
Range("F3" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("C4" ).Select
Application.CutCopyMode = False
Selection.ClearContents
'Renommer la nouvelle feuille
Worksheets("Nom de la feuille à modifier" ).Activate
With ActiveWindow
.DisplayGridlines = False
.DisplayZeros = False
End With
' Déprotection des cellules à saisir
ActiveWindow.LargeScroll Down:=-2
Range("F5:G51" ).Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("K5:L51" ).Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.SmallScroll Down:=32
Range("E56:G58" ).Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("E59:F60" ).Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("M56:M57" ).Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveWindow.SmallScroll Down:=4
ActiveWindow.LargeScroll Down:=-2
' Protection à nouveau de la nouvelle feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
MsgBox "ATTENTION, modifier le nom de la nouvelle feuille pour y mettre la date de l'inventaire"
' Positionnement sur la cellule "C3" de la nouvelle feuille
Range("C3" ).Select
End Sub
---------------
JYG