Import de 3 colonnes d'un TS d'un fichier à un autre

Bonjour,

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

image

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

Bonjour,

On voudrait bien ouvrir le fichier Plotage. Sers-toi de cette icône :

Capture d'écran 2026-03-05 142429

Daniel

Bonjour Daniel,

Le Tab pilotage se trouve dans le fichier SUM Vierge sur lequel nous avons travaillé ensemble dernièrement.

SUM Vierge.xlsm (117,7 Ko)
Copie de PILOTAGE (TEST 3 François).xlsm (645,4 Ko)

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 ..

Par avance merci

Bonjour,

En quoi cette macro ne peut pas aller dans tous les fichiers SUM ?

Qu’est-ce que tu désignes par « Range(« 5 ») » :

cheminfichier = Range("5")

Daniel

c’est range 3 je pense et non 5 … j’ai 3 colonnes sur mon tableau

Windows(« SUM Vierge 2.xlsm »).Activate
c’est uniquement pour le SUM vierge 2 … et j’aimerais une macro qui colle dans un tableau Données_OF

Teste :

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

Daniel

Bonjour,

C’est top çà fonctionne.
En revanche, est-il possible que çà clôt automatiquement les macros d’ouverture et de fermeture du fichier pilotage?

Bonjour,

Essaie comme ça :

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

Daniel

Encore une fois , c’est parfait …

Juste un message avec le presse papier excel ..

Merci pour ton aide.

François

Essaie :

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

Daniel

C’est Parfait ..

Merci :slight_smile:

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

Lire Closed File .xlsm (30,1 Ko)

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.