reggenzi
Messages postés3Date d'inscriptionvendredi 30 juin 2006StatutMembreDernière intervention11 juillet 2006
-
30 juin 2006 à 12:35
reggenzi
Messages postés3Date d'inscriptionvendredi 30 juin 2006StatutMembreDernière intervention11 juillet 2006
-
11 juil. 2006 à 10:44
Bonjour,
j'ai un problème avec excel, j'ai un fichier excel A dont le contenu de cellules équivaut au contenu des autres cellules située dans un autre fichier B, là ça va, pas besoin de macro. Le problème est que maintenant j'ai plusieurs fichiers B, dépendants des dates, les noms des fichiers deviennent donc B_date1, B_date2, B_date3,.....Ce que je voudrais c'est que quand j'ouvre le fichier A, il y ait une fenetre qui se déclenche me demandant la date, et ,en cliquant OK, le fichier A ira chercher les cellules et feuilles de B_"date indiquée".
Merci d'avance
cameleon044
Messages postés36Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention22 novembre 2012 30 juin 2006 à 15:14
Bonjour,
dans le Workbook_open() de ton classeur A tu insert quelque chose du genre
var_date = InputBox("Veuillez saisir la date du jour")
Workbooks.Open Filename:= _
"adresse_de_ton_fichier\B_" & var_date
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 1 juil. 2006 à 14:21
Salut,
Je me permet, cameleon044, de préciser, afin d'éviter les erreurs de saisie, qu'il vaut mieux utiliser le contrôle "Date and Time Picker" (DTPicker).
C'est un composant à rajouter (click droit sur fenêtre des contrôles VBA).
Du coup,
Dim var_date as Date
var_date = DTPicker1.Value
et la suite du code de Cameleon044 convient très bien.
@++
--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
reggenzi
Messages postés3Date d'inscriptionvendredi 30 juin 2006StatutMembreDernière intervention11 juillet 2006 3 juil. 2006 à 15:47
Bonjour,
marci beaucoup, j'arrive à ouvrir les fichiers avec votre code. J'ai préferé garder les dates en format Chaine (String), le code que j'ai utilisé est donc:
Private Sub Workbook_Open()
Dim var_date As String
var_date = InputBox("Veuillez saisir la date du Tableau de Bord sous format AAAA_MM")
Workbooks.Open Filename:= _
"[file://Server4/DATA1/REVUES-PRJ-INGENIERIE/0-Tableaux_de_bord/TdB-Project_status_report \\Server4\DATA1\REVUES-PRJ-INGENIERIE\0-Tableaux_de_bord\TdB-Project_status_report]_" & var_date
End Sub
, par contre mes formules ne changent pas en fonction de la date indiquée. Je m'explique, par exemple, j'ai dans une cellule donnée du premier fichier, la formule suivante:
='\\Server4\DATA1\REVUES-PRJ-INGENIERIE\0-Tableaux_de_bord\[TdB-Project_status_report_2006_04.xls]1089-Case de Train Freighter'!$D$23/1000
où en bleu j'ai le chemin, en rose j'ai le nom du fichier, après j'ai le nom de la feuille se trouvant dans le fichier et à la fin j'ai la cellule concernée.
Ce que j'aimerai pouvoir faire est de rendre le 2006_04, du nom du fichier, variable. Est ce que il y aurai un moyen de stocker la variable var_date et l'insérer automatiquement dans ma formule? C'est à dire une expression "EXPR" telle que ma formule soit:
='\\Server4\DATA1\REVUES-PRJ-INGENIERIE\0-Tableaux_de_bord\[TdB-Project_status_report_"EXPR".xls]1089-Case de Train Freighter'!$D$23/1000.
cameleon044
Messages postés36Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention22 novembre 2012 4 juil. 2006 à 20:01
Bonjour
il faut simplement que tu place tes formules excel dans les cellules avec vb. exemple :
Private Sub Workbook_Open()
Dim var_date As String
var_date = InputBox("Veuillez saisir la date du Tableau de Bord sous format AAAA_MM")
Workbooks.Open Filename:= _
"\\Server4\DATA1\REVUES-PRJ-INGENIERIE\0-Tableaux_de_bord\TdB-Project_status_report_" & var_date
'on insert une formule dans une cellule
Range("A1").FormulaLocal = "='\\Server4\DATA1\REVUES-PRJ-INGENIERIE\0-Tableaux_de_bord\[TdB-Project_status_report_" & var_date & ".xls]1089-Case de Train Freighter'!$D$23/1000"
End Sub
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 4 juil. 2006 à 22:54
En tant qu'utilisateur, si je tape 2/06 ?
Bah une erreur survient.
Pareil si je tape pleins de trucs qui n'est pas en rapport avec la date.
Bref, c'est ce que je vous disais, => DTPicker : ça prend 20 sec. pour le référencer, 3 sec. pour le placer, et 1 à 3 min. suivant ton code pour remplacer tes lignes de codes.
Avantage : pas d'erreurs lors du choix utilisateur.
Avantage 2, le retour : plus sympa à utiliser (choix date dans une sorte de combo) plutôt que de se taper la saisie...
@++
--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
reggenzi
Messages postés3Date d'inscriptionvendredi 30 juin 2006StatutMembreDernière intervention11 juillet 2006 11 juil. 2006 à 10:44
Hi,
merci, même en gardant les dates en type "string", ça a marché, en fait, comme il fallait que le programme trouve un nom de fichier toujours le même à la date près, les caractères en type chaîne sont adaptés. Résultat: tout a marché, pour mon projet en tout cas. Après j'ai inséré un boucle et un Go To pour ne pas avoir une boucle infinie.
Voici mon code final:
1 var_date = InputBox("Veuillez saisir la date du Tableau de Bord sous format AAAA_MM" + Chr(13) + "Tapez EXIT, en majiscule, pour sortir")
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists("[file://Server4/DATA1/REVUES-PRJ-INGENIERIE/0-Tableaux_de_bord/TdB-Project_status_report \\Server4\DATA1\REVUES-PRJ-INGENIERIE\0-Tableaux_de_bord\TdB-Project_status_report]_" & var_date & ".xls") = True Then
mois = Right(var_date, 2)
annee = Left(var_date, 4)
If mois = "01" Then
moistxt = "Janvier"
ElseIf mois = "02" Then
moistxt = "Février"
ElseIf mois = "03" Then
moistxt = "Mars"
ElseIf mois = "04" Then
moistxt = "Avril"
ElseIf mois = "05" Then
moistxt = "Mai"
ElseIf mois = "06" Then
moistxt = "Juin"
ElseIf mois = "07" Then
moistxt = "Juillet"
ElseIf mois = "08" Then
moistxt = "Août"
ElseIf mois = "09" Then
moistxt = "Septembre"
ElseIf mois = "10" Then
moistxt = "Octobre"
ElseIf mois = "11" Then
moistxt = "Novembre"
ElseIf mois = "12" Then
moistxt = "Décembre"
Else
moistxt = "MOIS NON VALIDE!!!"
End If
affichage = moistxt & " " & annee
Range("U3").FormulaLocal = affichage
Else
If var_date = "EXIT" Then
GoTo 2
Else
reponse = MsgBox("LE TDB DE CE MOIS N'EXISTE PAS ou VOUS AVEZ MAL SAISI LE MOIS" + Chr(13) + "Cliquez OK pour recommencer")
GoTo 1
End If
End If
Set fs = Nothing
MsgBox ("Fin du traitement, cliquez OK pour voir le résultat")
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True