Récupérer données d'autres classeurs

  • Initiateur de la discussion Initiateur de la discussion arnaudbu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

arnaudbu

XLDnaute Occasionnel
Bonjour,

J'ai un fichier excel de suivi général. En ouvrant ce fichier j'aimerais qu'il:
1. efface les données contenu dans la feuille ("Suivi_general") qui commencent en "A3"
2. récupére les données (valeurs sans formules + mises en forme) présentent dans 5 autres classeur.

Les feuilles des 5 classeurs ont le même nom ("Suivi") et les données commencent toujours en "A3".

Toutes ces données devront être ajoutées les unes après les autres sur la feuille ("Suivi_general") du classeur ouvert bien sur.

J'espère être assez clair...sinon dite le moi 😉

Quelqu'un pourrait il m'aider à mettre ceci en œuvre ? 😀

Merci
 
Re : Récupérer données d'autres classeurs

Ok ...

La zone sur laquelle tu dois bosser est
Code:
For Each Sh In Workbooks(sFname).Worksheets
           If Sh.Name = "Suivi_Actions" Then
' [COLOR="Red"]de là[/COLOR] ..........................................................................................
'           [COLOR="red"]For i = premligne To[/COLOR]  ' à  cet endroit il te faut une variable pour avoir
'                    le nombre total de lignes à ramener ....
                    dl1 = Workbooks(sFname).Sheets(Sh.Name).Range("A65536").End(xlUp).Row 'ligne disponible
                    plage1 = "A" & premligne & ":H" & premligne
                    Workbooks(sFname).Sheets(Sh.Name).Range(plage1).Copy _
                    Destination:=Workbooks(classeur1).Sheets("Suivi_general").Range(plage1)
                    
'          [COLOR="red"]Next i[/COLOR]
' [COLOR="red"]jusque là[/COLOR] ......................................................................................
                    
           End If
        Next Sh

J'espère que cela va t'aider ...😉

A +

Comment puis je savoir le nombre de ligne à ramener puisque ceci est variable selon les fichiers ?

C'est pas de la mauvaise volonté mais là....... c'est dur 😀
 
Re : Récupérer données d'autres classeurs

non de diou.... ça marche....et ce tout petit bout de code remplace ma grosse gamelle...non mais c'est incroyable !!!! J'hallucine....chapeau bas.....

Bon faudra que je le test au boulot encore !!!!
 
Re : Récupérer données d'autres classeurs

Bonjour


L'Efferalgan codéiné m'ayant remis suffisamment sur pied

Voici ma proposition finale (à adapter pour la constante Chemin )

Code:
Option Explicit
Const Chemin As String = [COLOR="Blue"]"C:\Temp\"[/COLOR]
Const Onglet As String = "Suivi_Action"
Const Plage As String = "A3:G100"
Sub importdatas()
Dim W As Workbook, arrClass, Plg As Range, i As Byte
Set W = ThisWorkbook
Set Plg = _
W.Sheets("Config").Range("A2:A" & W.Sheets("Config").[A65536].End(xlUp).Row)
arrClass = Application.Transpose(Plg.Value)
Application.ScreenUpdating = False
For i = 1 To UBound(arrClass)
    Workbooks.Open Chemin & CStr(arrClass(i))
    With ActiveWorkbook
        .Sheets(Onglet).Range(Plage).Copy W.Sheets("Suivi_general").Range("A65536").End(xlUp).Offset(1, 0)
        .Close False
        Application.CutCopyMode = False
    End With
Next
Application.ScreenUpdating = True
End Sub
 
Re : Récupérer données d'autres classeurs

Encore une fois merci ceci fonctionne très bien. J'avais ajusté avec le screenupdating hier soir déjà.

J'ai quand même remplacé mon code par le tiens car plus propre évidement.

Encore une question:
Avec ton code, contrairement au mien, si un des fichiers est ouvert chez moi, la copie se fait passe bien -> ce qui est nickel !

Par contre ce fichier sera placé sur un serveur. Tout le monde peut consulter les fichiers dans lesquels j'extrait les copies. Si qqun d'autre à ouvert un des fichiers sur le réseau que peux t-il se passer ?

Peut on mettre une condition d'erreur qui annulerait l'importation ?

Encore merci à tous les intervenants de la discussion !
 
Re : Récupérer données d'autres classeurs

Re


Une proposition différente qui n'utilise pas de feuille Config

Code:
Sub importdata2()
Dim W As Workbook, WL As Workbook, DestiCell As Range, i As Long

Application.ScreenUpdating = False
   
On Error Resume Next

Set W = ThisWorkbook
With Application.FileSearch
    .NewSearch
    .LookIn = "C:\Temp"
    .FileType = msoFileTypeExcelWorkbooks
    .Filename = "Modele_*.xls"
 
If .Execute > 0 Then
    For i = 1 To .FoundFiles.Count
        Set WL = Workbooks.Open(.FoundFiles(i), 0)
        Set DestiCell = W.Sheets("Suivi_general").Range("A65536").End(xlUp).Offset(1, 0)
        WL.Sheets("Suivi_Action").Range("A3:G10").Copy DestiCell
        WL.Close False
    Next i
End If
End With

On Error GoTo 0
Application.ScreenUpdating = True

Set W = Nothing
Set WL = Nothing
Set DestiCell = Nothing
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour