chemin variable pour lire plusieur classeur

umkapolka

XLDnaute Nouveau
Bonjour
Le nom de mon fichier principal est (Semaine commensant le 2010-02-14.XLS) à A1 qui est A1= Filename()
Je cherche un moyen pour change la partie en rouge par la céllule A2= 2010-02-14 A3= 2010-02-15 A4= 2010-02-16 etc ...



B4 ='[Payroll 2010-02-14.xls]Daily (Payroll) (Total)'!$C$4
B5 ='[Payroll 2010-02-15.xls]Daily (Payroll) (Total)'!$C$4
B6 ='[Payroll 2010-02-16.xls]Daily (Payroll) (Total)'!$C$4
B7 ='[Payroll 2010-02-17.xls]Daily (Payroll) (Total)'!$C$4
B8 ='[Payroll 2010-02-18.xls]Daily (Payroll) (Total)'!$C$4
B9 ='[Payroll 2010-02-19.xls]Daily (Payroll) (Total)'!$C$4
B10 ='[Payroll 2010-02-20.xls]Daily (Payroll) (Total)'!$C$4



et la semaine suivante prendre le meme fichier principal et le renommé (Semaine commensant le 2010-02-21.XLS) à A1 qui est A1= Filename()
et change la partie en rouge par la céllule A2= 2010-02-21 A3= 2010-02-22 A4= 2010-02-23 etc ...




B4 ='[Payroll 2010-02-21.xls]Daily (Payroll) (Total)'!$C$4
B5 ='[Payroll 2010-02-22.xls]Daily (Payroll) (Total)'!$C$4
B6 ='[Payroll 2010-02-23.xls]Daily (Payroll) (Total)'!$C$4
B7 ='[Payroll 2010-02-24.xls]Daily (Payroll) (Total)'!$C$4
B8 ='[Payroll 2010-02-25.xls]Daily (Payroll) (Total)'!$C$4
B9 ='[Payroll 2010-02-26.xls]Daily (Payroll) (Total)'!$C$4
B10 ='[Payroll 2010-02-27.xls]Daily (Payroll) (Total)'!$C$4


etc... pour chaque autre semaine suivante

merci de votre reponce
 

JNP

XLDnaute Barbatruc
Re : chemin variable pour lire plusieur classeur

Bonjour Umkapolka :),
A tester :
En A1
Code:
'02-14
En A2
Code:
=INDIRECT("'[Payroll 2010-"&A1&".xls]Daily (Payroll) (Total)'!$C$4")
Bon dimanche :cool:

Ajout : ou plutôt en mettant en A1
Code:
14/02/2010
en A2
Code:
=INDIRECT("'[Payroll "&TEXTE(A1;"aaaa-mm-jj")&".xls]Daily (Payroll) (Total)'!$C$4")
en A3
Code:
=INDIRECT("'[Payroll "&TEXTE(A1+1;"aaaa-mm-jj")&".xls]Daily (Payroll) (Total)'!$C$4")
etc.
 
Dernière édition:

umkapolka

XLDnaute Nouveau
Re : chemin variable pour lire plusieur classeur

merci, j'avais test avec indirect et j'ai coupé colé tes formule au ca ou, mais le meme resulta.

quand le fichier '[Payroll 2010-02-14.xls]Daily (Payroll) (Total)'!$C$4
en A2 est ouvert (EX. de reponce A2 = 4 ) quand je referme le fichier et j'ouvre le fichier '[Payroll 2010-02-15.xls]Daily (Payroll) (Total)'!$C$4 en A3 (EX. de reponce A2 = #ref! et A3 = 5 )

Je voudrais quand je ferme le ou les fichier(s) '[Payroll 2010-02-??.xls]Daily (Payroll) (Total)'!$C$4 , de garder les reponce en A2 qui est = 4 et A3 qui = 5 ou que je ouvre un autre '[Payroll 2010-02-??.xls]Daily (Payroll) (Total)'!$C$4 que mes donné précedente ne change pas en #ref!

merci de ton aide
 

JNP

XLDnaute Barbatruc
Re : chemin variable pour lire plusieur classeur

Re :),
Pas sûr d'avoir compris :rolleyes:...
Via VBA
Code:
Sub test()
Dim MaDate As Date, NbJours As Integer, I As Integer
MaDate = CDate(Application.InputBox("Date départ ?", "Import", , , , , , 2))
NbJours = Application.InputBox("Nombre de jours ?", "Durée", , , , , , 1)
For I = 1 To NbJours
Range("A" & I).Formula = "='[Payroll " & Format(MaDate + I - 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$C$4"
Next I
End Sub
Bonne soirée :cool:
 

umkapolka

XLDnaute Nouveau
Re : chemin variable pour lire plusieur classeur

il faut que indirect meurt. il ne faut plus qui recalcule apres la premiere réponce si non quand le fichier que indirect a fait ouvrir et me donne la bonne réponce si le fichier ce referme ou est fermé la réponce redevient #REF! Je veut gardé cette donné intact.

merci de cherché une réponce pour moi
 

umkapolka

XLDnaute Nouveau
Re : chemin variable pour lire plusieur classeur

Bonjour,
Vous est proche de ce que je veux, mais je crois que je m'explique tres mal, un fichier visuel sera parler a ma place.
Je vous jouin une parti du fichier avec des commentaires qui explique ce que je veux ce qui ce passe et qui est fonctionnel
et j'ai une question en bonnus qui est en Mauve dans le fichier, qui est comme suit dans ma feuille de calcul je voudrais Imprimé seulment les page de la feuille 1 que la cellule S92=1 ne pas Imprimé la page 2 et Imprimé les pages que leur Cellule est =0 (sauté les page que leur cellule qui les appartien est = 1)
PS. Le fichier étais trop gros j'ai divisé en deux (Forum ABS14A.xls et Forum ABS14B.xls) qui faut les Sheet 1 avec Sheet 2 pour faire fonctionner les feuille.
Merci de me démelé
 

Pièces jointes

  • forum abs14B.xls
    40.5 KB · Affichages: 64
  • forum abs14A.xls
    288.5 KB · Affichages: 77

umkapolka

XLDnaute Nouveau
Re : chemin variable pour lire plusieur classeur

Désoler
Pour le fichier illisible en le coupent en deux les lien se sont défait. Si vous voulez le revoir vous ète proche de la solution. Je vous mais le fichier avec une plus petit parti. Dans le mesage plus haut ce qui ne vas pas c'est la parti des boite ex. (MaDate = CDate(Application.InputBox("Date départ ?", "Import", , , , , , 2))
NbJours = Application.InputBox("Nombre de jours ?", "Durée", , , , , , 1)
Il faudrait a la place de Madate = Cdate..... que sa sois la cellule de ma feuille2 qui est B2 de Sheet 2 et la boite NbJours = ..... que sa sois la cellule de ma feuille2 qui est M4 à M10 de Sheet 2

Merci a toi de bien vouloire de te reprendre, et d'autre personne peuve me donné d'autre solution.
Merci à tous
 

Pièces jointes

  • forum abs13.xls
    292.5 KB · Affichages: 70

JNP

XLDnaute Barbatruc
Re : chemin variable pour lire plusieur classeur

Re :),
A mettre dans le code de la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$2" Then Exit Sub
Dim MaDate As Date, I As Integer
Const NbJours As Integer = 7
MaDate = CDate(Mid(Target, 6, 10))
For I = -1 To -NbJours Step -1
Range("O" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$C$4"
Next I
Range("O4:O10") = Range("O4:O10").Value
End Sub
il te suffit de modifier B2 (attention, tel que tu l'a fourni, soit FTSF 2011-04-16.xls), et ça devrait le faire (pas garanti que ça ne te demande pas de localiser les fichiers pour autant :rolleyes:...).
Bonne journée :cool:
 

umkapolka

XLDnaute Nouveau
Re : chemin variable pour lire plusieur classeur

Super!! Votre réponce fait exatement ce qu'il me falait. Mais en ajoutant tout les ligne que j'ai de besoin, voir exemple, sa devient trop lent.
et ce code est que pour une seule page. J'ai 42 page diférente et la diférence entre chaque page est ses cellules $C$4 a la deusième page devient $C$5, 3iem page $C$6 etc... $E$4, $D$4, $F$4, $G$4 même chose toujours + 1 pour chaque pages et pour $P$7, $S$8, $P$8 et $P$7 devient $P$9, $S$10, $P$10 et $P$9 pour la page 2 toujours + 2 pour chaque pages suivante. Voir si vous avez une solusion pour accélérer le calcule.

Merci de votre aide.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$2" Then Exit Sub
Dim MaDate As Date, I As Integer
Const NbJours As Integer = 7
MaDate = CDate(Mid(Target, 6, 10))
For I = -1 To -NbJours Step -1
Range("O" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$C$4"
Range("P" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$E$4"
Range("Q" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$D$4"
Range("R" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$F$4"
Range("S" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$G$4"
Range("T" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor A)'!$P$7"
Range("U" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor B)'!$S$8"
Range("V" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$8"
Range("W" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$7"
Next I
Range("O4:O10") = Range("O4:O10").Value
Range("P4:P10") = Range("P4:P10").Value
Range("Q4:Q10") = Range("Q4:Q10").Value
Range("R4:R10") = Range("R4:R10").Value
Range("S4:S10") = Range("S4:S10").Value
Range("T4:T10") = Range("T4:T10").Value
Range("U4:U10") = Range("U4:U10").Value
Range("V4:V10") = Range("V4:V10").Value
Range("W4:W10") = Range("W4:W10").Value
End Sub
 

JNP

XLDnaute Barbatruc
Re : chemin variable pour lire plusieur classeur

Bonjour Umkapolka :),
Pour accélérer, tu peux déconnecter l'affichage et le calcul en début de macro et le remettre en route à la fin
Code:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'...
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Pour l'application sur 42 feuilles, le plus simple serait de mettre la valeur à utiliser dans une cellule pour chaque page :
Par exemple avec A1 :
Code:
Dim Feuille As Worksheets, MonAdresse As String
For Each Feuille In ThisWorkbook.Worksheets
With Feuille
MonAdresse = .Range("A1")
For I = -1 To -NbJours Step -1
.Range("O" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!" & MonAdresse
'...
Next I
.Range("O4:O10") = .Range("O4:O10").Value
'...
Next Feuille
Bon courage :cool:
 

umkapolka

XLDnaute Nouveau
Re : chemin variable pour lire plusieur classeur

Bonjour,

Le premier code je ve vois pas de diférence, est que je doit le collé dans code que vous vous m'avez montrer.


le deusième j'ai une erreur comme suit: Ereur de Compilation Next sans For.

Ps. Mes 42 Pages son sur la même feuille, sur la feuille1!

Merci
 

umkapolka

XLDnaute Nouveau
Re : chemin variable pour lire plusieur classeur

Ok pour la vitesse j'ai trouver commend intéger Ton code Super!!

La deusième parti ne marche pas demande toujours un For: Erreur de Compilation Next sans For. qui je croie est: Next Feuille qui et sans For.

J'ai une autre solution, j'ai mie tout mes cellule cimétrique. Mais dans le code il faut que je les copy les 42 personnes, pour éviter de copy tout les personne peut il exsité une manière de faire.

Je te join les 3 première personnes

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$2" Then Exit Sub
Dim MaDate As Date, I As Integer
Const NbJours As Integer = 7
MaDate = CDate(Mid(Target, 6, 10))
For I = -1 To -NbJours Step -1
Range("Q1").Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$A$4"
Range("O" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$C$4"
Range("P" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$E$4"
Range("Q" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$D$4"
Range("R" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$F$4"
Range("S" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$G$4"
Range("T" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor A)'!$P$7"
Range("U" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor B)'!$S$8"
Range("V" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$8"
Range("W" & 11 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$7"

'Personne Suivante
Range("Q11").Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$A$5"
Range("O" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$C$5"
Range("P" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$E$5"
Range("Q" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$D$5"
Range("R" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$F$5"
Range("S" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$G$5"
Range("T" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor A)'!$P$9"
Range("U" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor B)'!$S$10"
Range("V" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$10"
Range("W" & 21 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$9"

'Personne Suivante
Range("Q21").Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$A$6"
Range("O" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$C$6"
Range("P" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$E$6"
Range("Q" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$D$6"
Range("R" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$F$6"
Range("S" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Payroll) (Total)'!$G$6"
Range("T" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor A)'!$P$11"
Range("U" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor B)'!$S$12"
Range("V" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$12"
Range("W" & 31 + I).Formula = "='[Payroll " & Format(MaDate + I + 1, "yyyy-mm-dd") & ".xls]Daily (Supervisor C)'!$P$11"
Next I

Range("Q1") = Range("Q1").Value
Range("P4:P10") = Range("P4:P10").Value
Range("Q4:Q10") = Range("Q4:Q10").Value
Range("R4:R10") = Range("R4:R10").Value
Range("S4:S10") = Range("S4:S10").Value
Range("T4:T10") = Range("T4:T10").Value
Range("U4:U10") = Range("U4:U10").Value
Range("V4:V10") = Range("V4:V10").Value
Range("W4:W10") = Range("W4:W10").Value

'Personne Suivante
Range("Q11") = Range("Q11").Value
Range("P14:P20") = Range("P14:P20").Value
Range("Q14:Q20") = Range("Q14:Q20").Value
Range("R14:R20") = Range("R14:R20").Value
Range("S14:S20") = Range("S14:S20").Value
Range("T14:T20") = Range("T14:T20").Value
Range("U14:U20") = Range("U14:U20").Value
Range("V14:V20") = Range("V14:V20").Value
Range("W14:W20") = Range("W14:W20").Value

'Personne Suivante
Range("Q21") = Range("Q21").Value
Range("P24:P30") = Range("P24:P30").Value
Range("Q24:Q30") = Range("Q24:Q30").Value
Range("R24:R30") = Range("R24:R30").Value
Range("S24:S30") = Range("S24:S30").Value
Range("T24:T30") = Range("T24:T30").Value
Range("U24:U30") = Range("U24:U30").Value
Range("V24:V30") = Range("V24:V30").Value
Range("W24:W30") = Range("W24:W30").Value
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

in si de suite.... X 42 Personnes.............

Petit oublie, Je suis Nul en MVB, et je travail avec Excel 2000
Toujours un gros Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 127
Membres
103 479
dernier inscrit
Compta