Extraire des données de plusieurs fichiers sur un seul
Bonjour,
Je cherche à compiler des données situées dans différents fichiers excel (ils ont tous la même configuration) dans un seul fichier. J'ai trouvé sur le forum un code VBA que j'ai su en partie adapter à ma situation (voir ci-dessous). Mais j'ai deux problèmes dont un majeur:
Le plus problématique: ce code apparemment colle des formules (mes fichiers initiaux ne sont pas des valeurs mes des calculs),
du coup ca ne fonctionne (références fausses, ...). je souhaiterais coller des valeurs. Est-ce possible de modifier le code utilisé ci-dessous pour y parvenir?
Moins important car je peux me débrouiller ensuite sans VBA mais faciliterait l'opération
Autres points: je suis sous excel 2010 , j'ai rangé tous mes fichiers dans un même répertoire et ils ont tous la même configuration, je n'ai besoin que des données de l'onglet "Bilan hebdo". Ha et les fichiers initiaux sont je pense extraits d'une base de données mais je n'y ait pas accès, ils sont tous enregistrés en xlsm (macro).
Quelqu'un pourrait-il m'aider??
Le code:
Sub importdonnees()
Dim principal As ThisWorkbook
Dim repertoire As String, fichier As String
Application.ScreenUpdating = False
Set principal = ThisWorkbook
repertoire = "P:\AgLyon\73-SAVOIE"
ChDir repertoire
fichier = Dir("*.xlsm")
Do While fichier <> ""
If fichier <> principal.Name Then
Workbooks.Open fichier
On Error GoTo suivant
With Sheets("Bilan hebdo")
On Error GoTo 0
On Error Resume Next
.[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.[A:A].Insert Shift:=xlToRight
.Range("A1:A" & .[b65536].End(xlUp).Row) = Left(fichier, Len(fichier) - 4)
.UsedRange.EntireRow.Copy Destination:=principal.Sheets(1).[a65536].End(xlUp).Offset(1)
End With
ActiveWorkbook.Close False
End If
suivant:
If Err.Number = 9 Then MsgBox "Pas de feuille ""Bilan hebdo"" dans le fichier " & fichier, vbExclamation: ActiveWorkbook.Close False
fichier = Dir
Loop
End Sub
Merci
Mary
bonjour,
replace ton instruction copy par ces 2 instructions
.UsedRange.EntireRow.Copy
principal.Sheets(1).[a65536].End(xlUp).Offset(1).PasteSpecial xlPasteValues
Merci beaucoup, le problème majeur est réglé sauf pour ma première colonne qui correspond à des dates...
Je peux le gérer après, mais juste pour ma culture si vous savez pourquoi cela m’intéresse
Autre petit ajustement: à chaque fois que ca copie une fenêtre s'ouvre me précisant qu'il y a des éléments dans le presse papier et il faut que je clique sur non (je ne vais pas les conserver) pour continuer. Je suppose qu'il y a une ligne de code à écrire pour empêcher cette fenêtre de s'ouvrir non?
Reste à trouver comment ne copier qu'à parti de la ligne 13....
mary