voilà, comme je ne suis pas doué je n’arrive pas a faire ce que je voudrais …
J’aimerais une macro qui :
Va recuperer les infos des colonnes :
OF / Client / désignation outillage (A/B/C) du tableau Listing_OF2 (onglet Listing_OF) dans le fichier Pilotage.xlsm
pour le mettre dans le tableau Données_OF (onglet ADMIN) du fichier où se trouve la macro …
Le fichier source : Tab_Pilotage
La macro que j’ai essayé de faire et qui fonctionne presque …
Sub copie_Listing_OF()
Dim fichiercible As String
Dim ongletcible As String
Dim cheminfichier As String
If Range("N2") = "" Or Range("P2") = "" Then
MsgBox ("Veuillez indiquer le nom du fichier cible cellule N2 et le chemin de son répertoire cellule P5 !!!")
Exit Sub
End If
fichiercible = Range("N2")
ongletcible = "AMDIN"
If UCase(Range("P2")) = "FICHIER" Then
cheminfichier = ThisWorkbook.Path & "\"
Else
cheminfichier = Range("5")
If Right(cheminfichier, 1) <> "\" Then
cheminfichier = cheminfichier & "\"
End If
End If
Workbooks.Open (cheminfichier & fichiercible)
Sheets("Listing OF").Select
Range("Listing_OF2[[#All],[OF]:[Référence de l''outillage]]").Select
Selection.Copy
Sheets("Admin").Select
Windows("SUM Vierge 2.xlsm").Activate
ActiveSheet.Paste
End Sub
Je souhaiterais une macro plus générique (car j’ai 10 tableaux SUM où je dois importer les données) et qui inclus les tableaux …
Par avance ..
PS: si on ouvre le fichier « Pilotage » y a une macro d’ouverture et une macro de fermeture qu’il faut ignorer
Le fichier s’appelle volontairement Copie de PILOTAGE (Test 3 françois) car je dois a chaque fois que je vous le transmet, supprimer les informations clients (dans le tableau listing_OF2 qui se trouve dans l’onglet Listing_OF) ..
C’est pourquoi j’aimerais un code qui va chercher les informations en fonction du nom du fichier qui est trouve en N2 (TS Tab_Pilotage) dans l’onglet ADMIN du fichier SUM vierge ..
Sub copie_Listing_OF()
Dim fichiercible As String, Wbk As Workbook
Dim ongletcible As String
Dim cheminfichier As String
Sheets("ADMIN").Select
ActiveSheet.ListObjects("Données_OF").DataBodyRange.Delete
If Range("N2") = "" Or Range("P2") = "" Then
MsgBox ("Veuillez indiquer le nom du fichier cible cellule N2 et le chemin de son répertoire cellule P5 !!!")
Exit Sub
End If
fichiercible = Range("N2")
ongletcible = "AMDIN"
If UCase(Range("P2")) = "FICHIER" Then
cheminfichier = ThisWorkbook.Path & "\"
Else
cheminfichier = Range("P2")
If Right(cheminfichier, 1) <> "\" Then
cheminfichier = cheminfichier & "\"
End If
End If
Range("J1").Select
Set Wbk = Workbooks.Open(cheminfichier & fichiercible)
Sheets("Listing OF").Select
Range("Listing_OF2[[#All],[OF]:[Référence de l''outillage]]").Copy
ThisWorkbook.Activate
Sheets("Admin").Select
ActiveSheet.Paste
Wbk.Close False
End Sub
Sub copie_Listing_OF()
Dim fichiercible As String, Wbk As Workbook
Dim ongletcible As String
Dim cheminfichier As String
Sheets("ADMIN").Select
ActiveSheet.ListObjects("Données_OF").DataBodyRange.Delete
If Range("N2") = "" Or Range("P2") = "" Then
MsgBox ("Veuillez indiquer le nom du fichier cible cellule N2 et le chemin de son répertoire cellule P5 !!!")
Exit Sub
End If
fichiercible = Range("N2")
ongletcible = "AMDIN"
If UCase(Range("P2")) = "FICHIER" Then
cheminfichier = ThisWorkbook.Path & "\"
Else
cheminfichier = Range("P2")
If Right(cheminfichier, 1) <> "\" Then
cheminfichier = cheminfichier & "\"
End If
End If
Range("J1").Select
Application.EnableEvents = False
Set Wbk = Workbooks.Open(cheminfichier & fichiercible)
Sheets("Listing OF").Select
Range("Listing_OF2[[#All],[OF]:[Référence de l''outillage]]").Copy
ThisWorkbook.Activate
Sheets("Admin").Select
ActiveSheet.Paste
Wbk.Close False
Application.EnableEvents = True
End Sub
Sub copie_Listing_OF()
Dim fichiercible As String, Wbk As Workbook
Dim ongletcible As String
Dim cheminfichier As String
Sheets("ADMIN").Select
ActiveSheet.ListObjects("Données_OF").DataBodyRange.Delete
If Range("N2") = "" Or Range("P2") = "" Then
MsgBox ("Veuillez indiquer le nom du fichier cible cellule N2 et le chemin de son répertoire cellule P5 !!!")
Exit Sub
End If
fichiercible = Range("N2")
ongletcible = "AMDIN"
If UCase(Range("P2")) = "FICHIER" Then
cheminfichier = ThisWorkbook.Path & "\"
Else
cheminfichier = Range("P2")
If Right(cheminfichier, 1) <> "\" Then
cheminfichier = cheminfichier & "\"
End If
End If
Range("J1").Select
Application.EnableEvents = False
Set Wbk = Workbooks.Open(cheminfichier & fichiercible)
Sheets("Listing OF").Select
Range("Listing_OF2[[#All],[OF]:[Référence de l''outillage]]").Copy
ThisWorkbook.Activate
Sheets("Admin").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Wbk.Close False
Application.EnableEvents = True
End Sub
pour lire une plage dans un fichier fermé (= sans l’ouvrir = sans déclencher ses macros)
Sub M_Lire_ClosedFile()
Dim sChemin, sFichier, sFeuille, sTopLeft, Arr
sChemin = ThisWorkbook.Path 'le chemin de ce fichier
sFichier = "Copie de PILOTAGE (TEST 3 François).xlsm" 'son nom
sFeuille = "Recap of" 'la feuille du tableau
sTopLeft = "A3"
s = "='" & sChemin & "\[" & sFichier & "]" & sFeuille & "'!" & sTopLeft '>>>> formule pour lire dans un fichier fermé
With Sheets("Dummy") 'quelque part une feuille dans ce fichier, nommée "Dummy"
.Range("A:D").ClearContents 'RAZ plage
With .Range("A1").Resize(1000, 3) 'en supposant max 1.000 lignes et 3 colonnes
.Formula = s 'copier autant de fois cette formule
.Value2 = .Value2 'remplacer les formules par leur valeurs
Arr = .Value2 'mettre contenu dans une matrice pour traiter plus tard
End With
End With
End Sub