Créer un classeur (VBA), travailler dessus et le supprimer

Bonjour à tous,

J'ai besoin d'aide pour effectuer une macro qui créerait un classeur qui peut porter un nom temporaire comme "classeur TEST".

J'ai une feuille "UVCI " dans mon classeur "ASSORTIMENT" sur lequel je travail.

Je met ma macro :

Sub ACTUALISERBASE()

    Call SAUVEGARDEPROPO

    Sheets("UVCI ").Select
    Application.ScreenUpdating = False

    ActiveSheet.Range("$A$2:$L$" & Range("C" & Rows.Count).End(xlUp).Row).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6 _
        , 7, 8, 9, 10, 11, 12), Header:=xlNo

    derLn = Range("C" & Rows.Count).End(xlUp).Row
    Set tabloCol = Range("C3:C" & derLn)
    Set tablo = Range("A3:N" & derLn)
    ReDim v(derLn - 2, 14)
    I = 0
    For Each c In tabloCol
        If c.Offset(0, -2).Value = 1 Then

            For j = 0 To 13
                v(I, j) = Cells(c.Row, 1 + j)
            Next j
            I = I + 1
        End If
    Next c
    tablo.Select
    Selection = v

    derLn = Range("C" & Rows.Count).End(xlUp).Row
    ReDim w((derLn - 2) * 14, 14)
    For I = 0 To derLn - 3
        For n = 0 To 13
            k = n + 1
            Label = Choose(k, 1, 1.2, 2, 2.2, 3, 3.2, 4, 5, 6, 7, 7.5, 8, 9, 10)
            For j = 0 To 13
                If j = 0 Then
                    w(I * 14 + n, j) = Label 'v(i, j)
                Else
                    w(I * 14 + n, j) = v(I, j)
                End If
            Next j
        Next n
    Next I
    Range("A3:N" & (derLn - 2) * 14 + 2) = w

    Call SURFACEUVCI
    Call SAUVEGARDEPROPO1

    Application.ScreenUpdating = True
    Cells(3, 1).Select

End Sub
Sub SAUVEGARDEPROPO()

    finalrow = Range("C1048576").End(xlUp).Row

    Range("A1:N" & finalrow).Select
    Selection.Copy
    Sheets("UVCI ").Select

    Static I As Long
    Dim Feuille As Worksheet

    I = I + 1

    Set Feuille = ThisWorkbook.Worksheets.Add

    Feuille.Name = "SUPPORT"
    Sheets("SUPPORT").Select

    ActiveSheet.Paste
    Application.CutCopyMode = False

    End Sub
Sub SAUVEGARDEPROPO1()

    finalrow = Range("C1048576").End(xlUp).Row

    Sheets("SUPPORT").Select
    Columns("M:M").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("M3").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-12],RC[-11],RC[-10])"
    Range("M3").Select
    Selection.AutoFill Destination:=Range("M3:M" & finalrow)

    Sheets("UVCI ").Select
    Range("O3").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-14],RC[-13],RC[-12])"
    Range("O3").Select
    Selection.AutoFill Destination:=Range("O3:O" & finalrow)
    Range("M3").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[2],SUPPORT!C:C[1],2,FALSE),""ERREUR"")"
    Range("M3").Select
    Selection.AutoFill Destination:=Range("M3:M" & finalrow)

    Columns("M:M").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

    Range("N3").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*RC[-2]"
    Range("N3").Select
    Selection.AutoFill Destination:=Range("N3:N" & finalrow)

    Columns("N:N").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

    Sheets("SUPPORT").Select
    ActiveWindow.SelectedSheets.Delete

    Sheets("UVCI ").Select
    Range("O3:O" & finalrow).ClearContents

End Sub
Sub SURFACEUVCI()

    Dim finalrow As Long
    finalrow = Cells(Rows.Count, "C").End(xlUp).Row

    Application.CutCopyMode = False
    Range("J3").Select
    ActiveCell.FormulaR1C1 = "='reference lineaire'!R[1]C[-4]"
    Range("J3").Select
    Selection.AutoFill Destination:=Range("J3:L3"), Type:=xlFillDefault
    Range("J3:L3").Select
    Selection.AutoFill Destination:=Range("J3:L15"), Type:=xlFillDefault
    Range("J3:L15").Select
    Selection.AutoFill Destination:=Range("J3:L16"), Type:=xlFillDefault
    Range("J3:L16").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWindow.SmallScroll Down:=6
    Selection.Copy
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("J3:L" & finalrow), Type:=xlFillCopy
    Range("J3:L" & finalrow).Select

End Sub

Par manque de mémoire, je ne peux pas travailler sur mon classeur actuel.

Ce que je désirerais c'est que à la place de créer une simple feuille "SUPPORT", créer un classeur "classeur TEST" qui ne sera pas enregistré.

Sur "classeur TEST", il me faudrait 2 onglets, nommons les "SUPPORT" et "UVCI "

J'aimerais copier ma feuille "UVCI " de mon classeur "ASSORTIMENT" et la copier dans "classeur TEST" dans la feuille "SUPPORT"

et laisser faire la macro.

Une fois la macro finie. J'aimerais copier ma base "UVCI " de "classeur TEST" et copier les valeurs "A3:N" & final row dans la feuille "UVCI" de "ASSORTIMENT".

Puis fermer le classeur test, en forçant sa fermeture sans enregistrer.

Et sélectionner à nouveau mon classeur "ASSORTIMENT"

Les notions qui me manquent à l'heure actuelle sont les suivantes :

  • création d'un classeur nommé "classeur TEST"
  • Sélectionner le classeur créé
  • copier les valeurs de mon classeur vers le classeur créé
  • lancer ma macro sur le classeur créé
  • copier les valeurs depuis le classeur créé vers mon classeur source
  • supprimer le classeur créé
  • retourner sur le classeur source

Merci pour toute aide.

Très cordialement

J'ai réussi à créer un classeur mais il s'enregistre, il y a possibilité de supprimer le fichier une fois la macro terminée ?

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

    Set xlApp = CreateObject("Excel.Application")
    xlApp.SheetsInNewWorkbook = 2
    Set xlBook = xlApp.Workbooks.Add
    xlBook.SaveAs ("CLasseur test.xlsm")
    xlApp.Visible = True
    Set xlSheet = xlBook.Worksheets(1)
    xlSheet.Name = "SUPPORT"
    Set xlSheet = Nothing
    Set xlSheet = xlBook.Worksheets(2)
    xlSheet.Name = "UVCI "
    Set xlSheet = Nothing
    xlApp.SheetsInNewWorkbook = 3
    xlApp.Quit
Rechercher des sujets similaires à "creer classeur vba travailler dessus supprimer"