Macro-Excel-VB

reggenzi Messages postés 3 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 11 juillet 2006 - 30 juin 2006 à 12:35
reggenzi Messages postés 3 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 11 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

6 réponses

cameleon044 Messages postés 36 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 22 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

a+
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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 !
0
reggenzi Messages postés 3 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 11 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.

Merci d'avance

Reggenzi
0
cameleon044 Messages postés 36 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 22 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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 !
0
reggenzi Messages postés 3 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 11 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:

 Private Sub Workbook_Open()


Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual


Dim var_date As String




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




 


'Formules à appliquer....
'...
'...
'...
Range("AG24").FormulaLocal = "='\\Server4\DATA1\REVUES-PRJ-INGENIERIE\0-Tableaux_de_bord\[TdB-Project_status_report_" & var_date & ".xls]1371-Nose Fairing Freighter'!$D$23/1000"
'...
'...
'...


 


'Periode....


Dim mois, annee, moistxt, affichage As String
   
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


2   End Sub




Merci encore à tous pour vos conseils.

Reggenzi
0
Rejoignez-nous