Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Bonsoir

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

Oui


Qui ça ? toi

Comment?


En regardant en bas de cette page, dans Discussions similaires.

On se retrouve quand tu auras essayé quelques solutions proposées

si jamais des difficultés apparaissaient.
 
Re : Récupérer données d'autres classeurs

J'ai bien regardé les sujets en bas mais rien ne correspond à ma demande. Je cherche quelque chose de simple et basique.

Pour ce qui est d'effacer toutes les données sur la première feuille c'est bon j'ai trouvé, mais pour importer tout le reste je rame.....
 
Re : Récupérer données d'autres classeurs

Re



Donc tu n'as pas trouvé ce code VBA présent dans ce fichier
(issu de liens des Discussions similaires)
Lien supprimé intéressant ?

De plus , il me paraissait évident que si on farfouille dans les Discussions similaires.

On va évidemment utiliser également le moteur de recherche du forum.


Ce sujet a été traité moult fois.
 
Dernière édition:
Re : Récupérer données d'autres classeurs

Salut,

J'ai suivi ton lien. J'avais bien vu ce fichier mais je ne l'avais pas entièrement étudier.

Après étude donc, je vois que ce fichier me permet de choisir le nombre de fichier à ouvrir et ensuite me propose les fichiers à ouvrir. Ensuite il y a une erreur et je ne vois pas ou il me permet de rapatrier les données voulus.

J'ai donc continuer à chercher et ai trouver ce fichier: BDDV2.xls qui permet d'ouvrir un classeur et d'importer les données. Par contre à mon niveau c'est un peu du "trop complexe" pour moi je trouve....

Je joint un exemple de mon fichier qui comporte deux feuilles: "Suivi_General" qui contiendra les données récupérées et "Config" qui recense: les fichiers, feuilles et plages dont les données doivent être copiées.

Je continu à "bidouiller" en attendant de la lumière 😉

Merci
 

Pièces jointes

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

Bon je trouve que j'ai pas mal bossé. J'arrive à récupérer la première ligne du premier classeur 😀

Par contre pas les lignes suivantes, ni les lignes des autres classeurs dont j'aimerais que tout se met à la suite les uns des autres. Je met le code:

Code:
Option Explicit
Sub import()

Dim wsT As Worksheet
Dim wsF As Worksheet
Dim lRow(1) As Long
Dim iCol As Integer
Dim sFolderName As String
Dim sFname As String
Dim classeur1 As String
Dim i As Long
Dim Sh As Worksheet
Dim dl1 As Long
Dim plage1 As String
Dim plage2 As String
Dim premligne As Long
'**********************************

Dim MSGCONFIRM As Long
MSGCONFIRM = MsgBox("Voulez vous importer les actions IGP des équipes postées ?", vbQuestion + vbYesNo, "Information")
If (MSGCONFIRM = 6) Then

Rows("3:700").Select
    Selection.Delete Shift:=xlUp
    Selection.RowHeight = 21

Range("A3").Select

sFolderName = ThisWorkbook.Path & "\"
classeur1 = ActiveWorkbook.Name


Application.ScreenUpdating = False
Application.DisplayAlerts = False

   sFname = Dir(sFolderName & "IGP_modele_Eq*.xls")
   
   If sFname = vbNullString Then
      MsgBox "Les fichiers n'ont pas été trouvés !" _
         & Chr(10) & Chr(10) _
         & sFolderName, vbInformation
      Exit Sub
   End If
   
 premligne = 3
 
   Set wsT = ThisWorkbook.Sheets("Suivi_general")
   
   Do Until sFname = vbNullString
      Workbooks.Open sFolderName & sFname
      
      Set wsF = Sheets("Suivi_Actions")
      
       For Each Sh In Workbooks(sFname).Worksheets
           If Sh.Name = "Suivi_Actions" Then
           
                    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)
                    For i = premligne To premligne
                    Next i
                    
                    premligne = premligne + dl1 + 1
                    
           End If
        Next Sh
        
      Workbooks(sFname).Close False
      
      sFname = Dir
      
   Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True



End If

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

Bravo pour ce que tu as accompli ... !!!

Il ne te manque qu'un petite boucle au niveau de premligne ...
Tu as certainement constaté qu'il n'y a pas encore l'incrémentation qui te permettra de ramener toutes les données dont tu as besoin ...

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

Merci pour les encouragements. Mais là...je flenche. J'ai réussi à mettre la deuxième ligne du premier classeur (alors qu'il y en a 10 au moins). 😱 et toujours rien des autres classeurs.
 
Re : Récupérer données d'autres classeurs

Re



Pour t'encourager , peux-tu m'aider à trouver ce qui cloche dans ce code


Code:
Option Explicit
Const Chemin As String = "C:\Temp\" ' ici juste pour le test
Const Onglet As String = "Suivi_Action"
Const Plage As String = "A3:G100"
Sub importdatas()
Dim arrClass
Dim SLFplage As Range
Dim i
Set SLFplage = dwbk.Sheets("Config").Range("A3:A" & [A65536].End(xlUp).Row)
arrClass = Application.Transpose(SLFplage.Value)
For i = 1 To UBound(arrClass)
    Workbooks.Open (Chemin & arrClass(i))
    ActiveWorkbook.Sheets("Suivi_Action").Range(Plage).Copy ThisWorkbook.Sheets("Suivi_general").Range("A65536").End(xlUp).offse(1, 0)
    ActiveWorkbook.Close False
    Application.CutCopyMode = False
Next
End Sub
 
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 +
 
Re : Récupérer données d'autres classeurs


Euh il y dwbk qui n'est pas déclaré, sinon je vois pas trop....😕
 
Re : Récupérer données d'autres classeurs

Re

Bah la je suis penaud
Car le classeur Modele_A.xls est bien ouvert
mais ça buggue sur la copie. Ca doit être la fatigue du week-end
Pour le moment je n'arrive pas à trouver mon erreur
Meme comme cela ca buggue toujours.

EDITION
: Ca y est je viens de trouver :
J'avais écrit Offse au lieu de Offset

Ouf je viens de tester : cela fonctionne

End adaptant le nom du répertoire (en bleu) à ton cas
Cela fonctionne - t-il chez toi ?

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 arrClass
Dim SLFplage As Range
Dim i
Set SLFplage = ThisWorkbook.Sheets("Config").Range("A2:A" & ThisWorkbook.Sheets("Config").[A65536].End(xlUp).Row)
arrClass = Application.Transpose(SLFplage.Value)
For i = 1 To UBound(arrClass)
    Workbooks.Open Chemin & CStr(arrClass(i))
    ActiveWorkbook.Sheets("Suivi_Action").Range(Plage).Copy ThisWorkbook.Sheets("Suivi_general").Range("A65536").End(xlUp).Offset(1, 0)
    ActiveWorkbook.Close False
    Application.CutCopyMode = False
Next
End Sub
 
Dernière édition:
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…