Export des inputs vers un autre fichier sans les connexions et requêtes
Bonjour à vous,
J'ai un fichier dans lequel je fais des imports pour constituer une database à partir de requêtes et connexions. Je souhaite ensuite envoyer ces données à plat dans un autre fichier. Je pensais avoir la solution (ci-dessous) mais en réalité cela vient quand même emmener les requêtes et connexions dans mon fichier de destination. J'imagine aussi que mon code pourrais être largement simplifié mais je ne suis pas très bon en code mais il me semblait en tout cas qu'avec ce type de copier/coller cela ne devait emmener que des données simples.
Merci d'avance !
Sub IMPORT()
Dim PDP As Workbook
Dim FeuilleOrigine As Worksheet, FeuilleDestination As Worksheet
Dim i As Long, DerLig_f2 As Long
Dim Fournisseur As String, Fournisseur_Correspondant As String
Dim f1 As Worksheet, f2 As Worksheet
'Référence la feuille origine des données à copier
Set FeuilleOrigine = ThisWorkbook.Sheets("01.Forecast")
NomFichierPDP = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
' On verifie que l'on a selectionné un nom de classeur
If NomFichierPDP <> False Then
' On ouvre le classeur
Set PDP = Workbooks.Open(NomFichierPDP)
'Référence la feuille de destination des cellules copiées
Set FeuilleDestination = PDP.Sheets("Database")
' On clean la database précédente
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Columns("A:EY").Select
Selection.ClearContents
' On copie les cellules de 01.Forecast
Windows("00.Inputs.xlsm").Activate
Sheets("01.Forecast").Select
Columns("A:F").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' On copie les cellules de 02.Deliveries
Windows("00.Inputs.xlsm").Activate
Sheets("02.Deliveries").Select
Columns("A:H").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'On copie les cellules de 03.RAL
Windows("00.Inputs.xlsm").Activate
Sheets("03.RAL").Select
Columns("A:E").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("Q1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'04.Stock
Windows("00.Inputs.xlsm").Activate
Sheets("04.Stock").Select
Columns("A:D").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("W1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'05.Model stock
Windows("00.Inputs.xlsm").Activate
Sheets("05.Model Stock").Select
Columns("A:F").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("AA1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'06.Model stock NP
Windows("00.Inputs.xlsm").Activate
Sheets("06.Model Stock NP").Select
Columns("B:C").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("AH1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'07. Augmentation offre
Windows("00.Inputs.xlsm").Activate
Sheets("07.Augmentation Offre").Select
Columns("A:C").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("AK1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'09.Supplier + LT
Windows("00.Inputs.xlsm").Activate
Sheets("09.Supplier + LT").Select
Columns("A:AM").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("AO1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'10.MOQ
Windows("00.Inputs.xlsm").Activate
Sheets("10.MOQ").Select
Columns("A:M").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("CC1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'11.Acc coverage
Windows("00.Inputs.xlsm").Activate
Sheets("11.Acc. Coverage").Select
Columns("A:C").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("CQ1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'12.Scope SKU
Windows("00.Inputs.xlsm").Activate
Sheets("12.Scope SKU").Select
Columns("A:Q").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("CU1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'13.PDMI
Windows("00.Inputs.xlsm").Activate
Sheets("13.PDMI").Select
Columns("B:AM").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("DM1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'On rename les fabricants
Application.ScreenUpdating = False
Set f1 = Sheets("Database")
Set f2 = Sheets("Suppliers renamed")
DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig_f2
Fournisseur = f2.Cells(i, "A")
Fournisseur_Correspondant = f2.Cells(i, "B")
f1.Cells.Replace What:=Fournisseur, Replacement:=Fournisseur_Correspondant, LookAt:=xlPart
Next i
Set f1 = Nothing
Set f2 = Nothing
' On ferme le classeur
PDP.Save
PDP.Close
End If
End Sub
Hello tout le monde,
Je me permet de remonter mon sujet en espérant que ce soit les nombreuses réponses à apporter au forum plutôt qu'une colle qui retarde la réponse à mon problème !
Encore merci pour votre aide.
Hello, j'ai simplifié l'exemple (il y a pas mal de redondances pour rien dans l'exemple mais qui rendent l'exemple lourd à lire) :
Sub IMPORT()
Dim PDP As Workbook
Dim FeuilleOrigine As Worksheet, FeuilleDestination As Worksheet
Dim i As Long, DerLig_f2 As Long
Dim Fournisseur As String, Fournisseur_Correspondant As String
Dim f1 As Worksheet, f2 As Worksheet
'Référence la feuille origine des données à copier
Set FeuilleOrigine = ThisWorkbook.Sheets("01.Forecast")
NomFichierPDP = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
' On verifie que l'on a selectionné un nom de classeur
If NomFichierPDP <> False Then
' On ouvre le classeur
Set PDP = Workbooks.Open(NomFichierPDP)
'Référence la feuille de destination des cellules copiées
Set FeuilleDestination = PDP.Sheets("Database")
' On clean la database précédente
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Columns("A:EY").Select
Selection.ClearContents
' On copie les cellules de 01.Forecast
Windows("00.Inputs.xlsm").Activate
Sheets("01.Forecast").Select
Columns("A:F").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' On copie les cellules de 02.Deliveries
Windows("00.Inputs.xlsm").Activate
Sheets("02.Deliveries").Select
Columns("A:H").Select
Selection.Copy
Windows("02.PDP_NEW.xlsm").Activate
Sheets("Database").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'On rename les fabricants
Application.ScreenUpdating = False
Set f1 = Sheets("Database")
Set f2 = Sheets("Suppliers renamed")
DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig_f2
Fournisseur = f2.Cells(i, "A")
Fournisseur_Correspondant = f2.Cells(i, "B")
f1.Cells.Replace What:=Fournisseur, Replacement:=Fournisseur_Correspondant, LookAt:=xlPart
Next i
Set f1 = Nothing
Set f2 = Nothing
' On ferme le classeur
PDP.Save
PDP.Close
End If
End Sub