Ouverture d'autres WorkBook ?

  • Initiateur de la discussion JFP
  • Date de début
J

JFP

Guest
Bonjour à toutes et à tous,

J'imagine que la question que je me pose (et que je vous soumet...) a déjà été traitée :

Voilà, je souhaiterais savoir s'il est possible dans une macro de provoquer l'ouverture de 10 autres workbooks (non activés) afin d'y récupérer des données.

J'ai donc 10 fichiers, comprenant 10 tableaux construits sur la même base, et j'aimerais, à partir d'un fichier "Cumul", ouvrir ces fichiers, y récupérer le contenu des tableaux, fermer ces fichiers et travailler sur un tableau qui contiendrait alors toutes les données.

Merci de votre aide,

JFP
 
S

steplof

Guest
Bonsoir à tous,


JFP, j'ai fait un truc de ce type qui me fait une récap de donées saisies dans la même plage de x classeurs identiques.

Vu qu'il est pas trop lourd je te l'envoie, il y a certainement plus simple, plus rapide et plus élégant mais dans mon cas il fonctionne bien.

A toi de l'adapter si tu veux

@+
Steplof
 

Pièces jointes

  • RECAPVJFP.zip
    18.9 KB · Affichages: 20
J

jacquesderyes

Guest
Bonsoir JFP et aux amis du FORUM

Je ne pense pas qu'il soit necessaire de faire de macro pour ta mise à jour!

Ton Fichier cumul étant ouvert tu ouvres par éxemple le fichier n°1 .Tu reviens sur ton fichier cumul et tu selectionnes la cellules devant être égale à la cellule du fichier 1.Tu places le signe = dans ta cellule et tu selectionnes dans le fichier 1 la cellule devant çetre copiée et tu valides!
le tour est joué.

Ensuite tu peux faire des recopies par le bas etc etc dans le fichier CUMUL. Et ceci avec chacun de tes 10 fichiers.
De cette manière ton fichier CUMUL sera toujours à jour sans pour autant avoir à ouvrir les 10 fichiers sinon que pour les mettre à jour quand necessaire.
Un conseil::::::protéges ta feuille cumul concernée celà t'évitera d'éffacer par mégarde une formule.

J'espère que celà t'aidera à résoudre ton PB.
Il y a sans doute d'autres combines et je suis certain que des amis du forum te les donneront.
Amités à tous


Jacques de ryes
 
S

steplof

Guest
Bonsoir à tous,
Jacques
je suis pas sur que ce soit aussi simple

d'une part, si tu pointes sur classeur1, a1, dans ton classeur récap en a1 par exemple, quand tu vas recopier vers le bas , la liaison ira chercher le classeur 1 et pas le 2, 3, 4.... enfin il me semble... Merci de me corriger si je me trompe
Pour moi dans ce cas il faudrait, ouvrir chaque classeur et pointer sur la cellule dans la bonne case de la récap, ça Ok.


Ensuite quand tu ouvrirzs ton classeur cumul, sans ouvrir les autres tu n'auras pas forcément les valeurs mises à jour sauf à activer les liaisons (ce qui chez moi classeurs sources fermés se traduit par une ronde de #valeur)
Encore une fois indiquez moi comment faire si ça marche car je n'y suis jamais arrivé...


@bientôt
Steplof
 
J

jacquesderyes

Guest
Bonsoir à tous
Steplof
Pour recopier vers le bas une formule avec accès à un autre fichier il est necessaire de faire une petite modif:
EX:Si dans la 1° Cellule cible nous avons:
=[DOSSIER1.xl]Feuil1!$A$I
reccopier vers le bas necessite de débloquer le N° de ligne ce qui nous donne

=[DOSSIER1.xl]Feuil1!$AI
pour recopier vers la droite nous aurons
=[DOSSIER1.xl]Feuil1!A$I
Javais oublié de préciser cette petite manip(excuses)
Il va de soi que la liaison des 10 fichiers sources doit être éffectuée fichier par fichier àpartir de fichier cible,sinon bonjours les dégâts
Bien entendu dans le cas de JFP il faudrait voir comment sont disposées les syntheses provenant des fichiers sources.
Supposant que les données soient dans des colonnes
il faudra avoir dans le fichier cible autant de colonnes x 10 fichiers avec une colonne supplémentaire affichant les cumuls.Selon le volume des fichiers celà risque d'être un sacré boulot....!
Bien entendu si les les liens sont désactivés rien ne va plus.
Peut-être eut-il été plus rationnel de créer un seul fichier avec 10+1 feuilles mais sans doute que JFP a des contraintes qui l'obligent à disposer de 10 fichiers +1 de synthese.
En conclusion ceci n'est qu'une approche personelle qui vaut ce qu'elle vaut
mais ça marche chez moi.Il y en a d'autres bien sùr.
Bonne soirée à tous

Jacques de ryes
 
J

JFP

Guest
Merci à vous Steplof et Jacques,

Je vais avoir tout mon dimanche pour m'amuser avec les solutions que vous m'avez gentiment proposé. Comme toujours, si ça ne permet pas de régler directement le problème, ça fait toujours avancer et ça servira pour autre chose.
Pour davantage d'explication, mon truc consiste à donner des tableaux à remplir à 10 collègues (avec des cases de couleurs) puis de récupérer de temps en temps les données pour un tableau général.
Pour l'heure, et depuis ma demande, j'ai trouvé ça que j'essaye en ce moment et qui a l'air de marcher :

(macro depuis CUMUL.xls)

ActiveSheet.Unprotect
Workbooks.Open ("d:FICHIER1.XLS")
Range("a7:k46").Select
Selection.Copy
Workbooks("CUMUL.xls").Activate
Range("a7").Select
Selection.PasteSpecial ' Paste:=xlFormats, Operation:=xlNone, skipBlanks:=False, Transpose:=False
Workbooks("FICHIER1.XLS").Close SaveChanges:=False

Workbooks.Open ("d:FICHIER2.XLS")
Range("a7:k46").Select
Selection.Copy
Workbooks("CUMUL.xls").Activate
Range("a47").Select
Selection.PasteSpecial ' Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Workbooks("FICHIER2.XLS").Close SaveChanges:=False
etc...

Ca a l'air de fonctionner sauf qu'à chaque fois, j'ai un message à propos du presse-papier qui contient trop d'infos.
Comment le vider automatiquement ?

A +

JFP

PS : au fait, nous avons un super temps en ce moment en Bretagne alors c'est pas dit du tout que je vais rester enfermé demain !
 
M

Mytå

Guest
Bonsoir le forum

JFP entre

Selection.PasteSpecial ' Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

et

Workbooks("FICHIERx.XLS").Close SaveChanges:=False

Ajout ceci

Application.CutCopyMode = False

Mytå
 
M

Mytå

Guest
Re le forum

JFP tu pourrais aussi compacter ta macro dans se style

Option Explicit
Sub copier_workbooks()
ActiveSheet.Unprotect
Dim i As Byte
For i = 1 To 10
Workbooks.Open ("d:FICHIER" & i & ".XLS")
Range("a7:k46").Select
Selection.Copy
Workbooks("CUMUL.xls").Activate
Range("a" & (i - 1) * 40 + 7 & "").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, skipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Workbooks("FICHIER" & i & ".XLS").Close SaveChanges:=False
Next i
ActiveSheet.Protect
End Sub

A condition que tu as bien les fichiers de 1 a 10 (FICHIER1.XLS a FICHIER10.XLS)

Amicalement Mytå º¿º
 
J

JFP

Guest
Merci Mytå,

En fait j'ai 16 fichiers alors effectivement je vais procéder comme indiqué.

Une dernière question :

mes fichiers 1 à 16 sont identiques mais les tableaux ne sont pas tous les mêmes. Je m'explique : les données à récupérer démarre toute en "A7" mais varie ensuite de "K47" à "K12"
Comment faire pour prendre en compte cette variable pour chaque fichier ?
 
M

Mytå

Guest
re le forum

JFP voila la macro modifier reste juste a adapter final

Option Explicit
Sub copier_workbooks()
ActiveSheet.Unprotect
Dim i As Byte, longueur As Byte, position As Double
position = 7
For i = 1 To 16
Select Case i
Case 1 To 5
longueur = 47
Case 6 To 10
longueur = 12
Case 11 To 16
longueur = 20
End Select
Workbooks.Open ("d:FICHIER" & i & ".XLS")
Range("a7:k" & longueur & "").Select
Selection.Copy
Workbooks("CUMUL.xls").Activate
Range("a" & position & "").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, skipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Workbooks("FICHIER" & i & ".XLS").Close SaveChanges:=False
position = position + longueur - 6
Next i
End Sub

Mytå
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 645
Messages
2 111 535
Membres
111 181
dernier inscrit
Ledoux