Erreur 1004 erreur définie par l'application ou l'objet
Bonjour, je rencontre un problème que je n'arrive pas a résoudre, je dois copier le contenue d'une colonne et le coller dans un autre classeur. il y a un nombre n de colonne et je procède colonne pas colonne pour un nombre n de fichier. le but est de determiner la derniere colonne et la bonne feuille dans les differents classeurs.
voici le code:
Range("plage_link").Select
'définitions des variables
Dim objExcel As Excel.Application
Set objExcel = CreateObject("Excel.Application")
Dim LinkValue As Variant
Dim cellule As Range
Dim Feuille As Worksheet
Dim classeurSource As Workbook
For Each cellule In Range("plage_link")
LinkValue = cellule.value
'ouverture du Classeur dans une nouvelle instance d'Excel
Set classeurSource = Workbooks.Open(LinkValue)
objExcel.Visible = True
For Each Feuille In Sheets
If InStr(1, Feuille.Name, "PROD", 0) Then
' Init du Dico
'Dim column_nm As String
Dim DicoColonne As Scripting.Dictionary
Set DicoColonne = New Dictionary
DicoColonne.Add "Sem", "A"
DicoColonne.Add "Date d'arrivée", "B"
DicoColonne.Add "Demandeur", "C"
DicoColonne.Add "Réf Service", "D"
DicoColonne.Add "Code Site", "E"
DicoColonne.Add "Volume", "F"
DicoColonne.Add "Date Fin", "G"
DicoColonne.Add "Commentaire", "H"
DicoColonne.Add "Ressource", "I"
DicoColonne.Add "Process", "J"
'def source
'Set classeurSource = Workbooks(LinkValue)
Set sh_source = classeurSource.Worksheets(Feuille.Name)
'dercol = sh_source.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
'def destination
Set WB = ThisWorkbook
Set WS = WB.Worksheets("CONSOLIDATION DE PROD")
For i = 1 To sh_source.Cells.Columns.Count
For Each column_nm In DicoColonne.Keys
If sh_source.Cells(1, i).value = column_nm Then
sh_source.UsedRange.Columns(i).Copy
dercol = WS.UsedRange.Range(DicoColonne(column_nm) & "1").End(xlDown).Row
WS.Range(DicoColonne(column_nm) & (dercol + 1)).PasteSpecial Paste:=xlPasteValue ' c'est ici que j'ai une erreur 1004
Exit For
End If
Next
Next i
Exit For
End If
Next Feuille
classeurSource.Close
NextBonjour lims212213 et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum.
Pour votre problématique d'où avez-vous obtenu ce code
Vous êtes déjà dans Excel il est donc totalement inutile de créer une nouvelle instance
Set objExcel = CreateObject("Excel.Application")De plus, pourquoi utiliser "DicoColonne" pour connaitre la dernière ligne de la colonne
bref, pas terrible pour commencer
Cordialement
Bonjour, je débute en VBA, j'ai obtenue ce code en rassemblant les différentes solution que j'ai trouvé sur le web!
effectivement je n'ai pas préciser pourquoi j'utilise un dico! il y a beaucoup de colonnes donc le dico me permet de les cibler et de les comparer avec les colonne que je souhaite extraire.