Perte de Collage

Bonjour je reviens avec un sujet aussi solide que le Titanic...

Mon but est de recuperer les valeurs d'une dizaine de classeur et de coller l'ensemble des données dans un nouveau classeur.

dans l'idée chaque onglet des fichiers" sources" sera copié dans chaque onglet du fichier "Perte de collage".

Je récupère normalement que les cellules visible après filtrage que j'essaye désespérément de collé dans mon classeur "Perte de collage". Le fichier Source 1 doit etres dans un repertoire \Commande a la racine du fichier "Perte de collage"

Sub ListingFichiers()
Dim rep As String
Dim Fichier As File
Dim Fichier2 As String
Dim FichSource As String
Dim i As Integer
Dim Nc, Cel As Range

Application.ScreenUpdating = False

   FichSource = ActiveWorkbook.Name
  ' rep = ActiveWorkbook.Path & "\Commande\"

   Set fs = CreateObject("Scripting.FileSystemObject")
   Set d = fs.GetFolder(ThisWorkbook.Path & "\Commande\")      'remplace ce chemin par celui que tu veux, avec le nom de ton dossier à la fin
   For Each Fichier In d.Files      'tu utilises la collection Files de ton dossier d
      Workbooks.Open (Fichier)
      Fichier2 = Fichier.Name
      For i = 1 To 1
      Workbooks(Fichier2).Activate

         With Workbooks(Fichier2).Sheets(i)
         'With Sheets(i)
        .Unprotect
'        .Select
        On Error Resume Next
        .Columns("A:W").EntireColumn.Hidden = False
        .Columns("C:I").EntireColumn.Hidden = True
        .Columns("L:T").EntireColumn.Hidden = True
        .Columns("W").EntireColumn.Hidden = True

        'End With
         Sheets(i).Visible = True
         n = .Cells(Rows.Count, "J").End(xlUp).Row
        .Range("A2:W" & n).SpecialCells(xlCellTypeVisible).Copy
         .Protect
         End With

         Workbooks(FichSource).Activate
         With Sheets(i)
            .Range("A2").Select
            .Paste
         End With
        Next i
         Workbooks(Fichier2).Close False

   Next Fichier
End Sub

Voilà ce que j'ai pondu mais mon collage ne fonctionne pas ( meme pas un petit message d'erreur) pour le 1er onglet du 1er classeur c'est mal partie....

Si un oeil charitable arrive a creuser un peu et à trouver ou est l'os je suis prenneur,

Merci à vous

1source1.xlsx (47.53 Ko)

Bonjour,

il faut attribue une référence à chaque objet,

par exemple,

Set wk1 = ThisWorkbook
Set wk2 = Workbooks("fichier à ouvrir.xlsx")
Set Source = wk1.Sheets("Feuil2").Range("A1:B2")
Set destin = wk2.Sheets("Feuil4").Range("A1:B2")
Source.Copy destin

Bonjour SabV

Je penses avoir suivi ton conseil correctement mais le résultat reste le même....

Sub ListingFichiers()
Dim rep As String
Dim Fichier As File
Dim Fichier2 As String
Dim FichSource As String
Dim i As Integer
Dim Nc, Cel As Range

Application.ScreenUpdating = False

   FichSource = ActiveWorkbook.Name
   Set fs = CreateObject("Scripting.FileSystemObject")
   Set d = fs.GetFolder(ThisWorkbook.Path & "\Commande\")      'remplace ce chemin par celui que tu veux, avec le nom de ton dossier à la fin
   For Each Fichier In d.Files      'tu utilises la collection Files de ton dossier d
      Workbooks.Open (Fichier)
      Fichier2 = Fichier.Name
      For i = 1 To 1

    With Workbooks(Fichier2).Sheets(i)

        .Unprotect
'
        On Error Resume Next
        .Columns("A:W").EntireColumn.Hidden = False
        .Columns("C:I").EntireColumn.Hidden = True
        .Columns("L:T").EntireColumn.Hidden = True
        .Columns("W").EntireColumn.Hidden = True
        n = .Cells(Rows.Count, "J").End(xlUp).Row
         Set Source = Workbooks(FichSource).Sheets(i).Range("A2:W" & n)
    End With
         b = 2

         Set destin = Workbooks(Fichier2).Sheets(i).Range("A" & b)
         Source.SpecialCells(xlCellTypeVisible).Copy destin

        Next i
        ' Workbooks(Fichier2).Close False

   Next Fichier
End Sub

Voici la solution qui passe par des équivalences de range entre deux feuilles c'est hyper rapide et ça à le mérite de fonctionner

Sub StartMacroExportData()
Dim Fichier As File
Dim Fichier2 As String
Dim wb As Workbook
Dim OpenWb As Workbook
Dim CopyRange As Range
Dim PasteRange As Range
Dim n As Integer, m As Integer

Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetFolder(ThisWorkbook.Path & "\Commande\")
Set wb = ActiveWorkbook
For Each Fichier In d.Files
Set OpenWb = Workbooks.Open(Fichier)

For i = 14 To 14
 With OpenWb.Sheets(i)

        .Visible = True
        .Select
        .Unprotect '
                On Error Resume Next

         n = .Cells(Rows.Count, "J").End(xlUp).Row
       'Plage = .Range("J2:V" & n)
       Set CopyRange = Range("A2:V" & n)
         .Protect
 End With

With wb.Sheets(i)
.Activate
 m = wb.Sheets(i).Cells(Rows.Count, "A").End(xlUp).Row + 1
Set PasteRange = wb.Sheets(i).Range(Cells(m, 1), Cells(n + m - 2, 22))
PasteRange.Value2 = CopyRange.Value2 ' <------------------------------------------------------------------Trop fort !!
'.Columns("A:W").EntireColumn.Hidden = False
        .Columns("C:I").Delete
        .Columns("L:T").Delete
        .Columns("W").Delete
'Selection.PasteSpecial Paste:=xlPasteValues
End With
Set CopyRange = Nothing
Set PasteRange = Nothing
Next i
Workbooks(Fichier2).Close False
Next
End Sub
Rechercher des sujets similaires à "perte collage"