ouvrir un fichier avec vba

charlo

XLDnaute Nouveau
re-bonjour à tous et toutes

j'ai un problème avec ma macro et j'espère que vous pourrez m'aider :

Set x = .Find(Workbooks("110401 PRODUCTION.xls").Sheets("Paramètre").Range("C2").Value, , xlValues, xlWhole, , , False)

le problème c'est que mon fichier 110401 PRODUCTION changera de nom en fonction de la date car chaque mois une copie du précédent sera fait pour être mis à jour donc le mois prochain le nom sera 110501 PRODUCTION, comment faire pour que cette macro fonctionne quelque soit le mois ??

merci d'avance
 

xyam

XLDnaute Nouveau
Re : ouvrir un fichier avec vba

Bonjour ;)

à la place de
Code:
Workbooks("110401 PRODUCTION.xls")
pourquoi ne pas utiliser une variable ?
du style
Code:
Workbooks( DateVoulus & "PRODUCTION.xls")
Si c'est la date courante tu a les fonctions Date,Time & Now que tu peux ajuster celons tes besoins et ranger le tout dans "DateVoulus"

Si c'est une date précise tu peux la demander à l'utilisateur avec un inputbox

dans l'attente de ta réponse
 

charlo

XLDnaute Nouveau
Re : ouvrir un fichier avec vba

en fait c'est la date du premier jour du mois, mais pas forcement mois courant.
mais en réalité quand j'exécute cette macro ce fichier et déja ouvert mais ce n'est pas le fichier courant, alors je me demandais si je ne pouvais pas mettre un truc du style *&"PRODUCTION" et puis autre chose qui indique que c'est dans fichier deja ouvert qu'il faut chercher.

bon c'est peut_être un peu compliqué, je vais certanement utiliser la date comme tu me l'as dit (si j'y arrive!!) mais le problème avec inputbox c'est que j'en est déja mis partout et c'est unpeu lourd du coup.

merci !
 

xyam

XLDnaute Nouveau
Re : ouvrir un fichier avec vba

Re,

j'ai pas tout compris ^^
mais comment excel sait si tu veux ouvrir le mois courant ou le mois d'avant ou le X mois ?
Ou c'est une suite logique genre le prochain c'est 110501,110601 etc..?

Car tu prend juste l'année et le mois courant tu concatène avec 01 pour être sur d'avoir le premier jour?
Code:
Workbooks( DateVoulus & "01 PRODUCTION.xls")
 

charlo

XLDnaute Nouveau
Re : ouvrir un fichier avec vba

mais en réalité je souhaite juste qu'il (mon PC) cherche (find) dans le fénetre réduite qui s'appelle 110401. voici ma macro compléte pour que tu suives mon cheminement (sachant que le fichier 110401 est déja ouvert :

MsgBox "Choisissez le fichier ANALYSE REBUTS correspondant à l'année étudiée"
Application.Dialogs(xlDialogOpen).Show ("C:\Repertoire\")

Dim x As Range
With ActiveWorkbook.Sheets("SYNTHESE").Range("L1:L600")
Set x = .Find(Workbooks(110401 PRODUCTION.xls").Sheets("Paramètre").Range("C2").Value, , xlValues, xlWhole, , , False)
x.Select

End With


Selection.Offset(1, 8).Select
Selection.Copy
Windows("110401 PRODUCTION.xls").Activate
Range("G13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("110125 ANALYSE REBUTS.xls").Activate
Selection.offset(0, -7).Select
Selection.Copy
Windows("110401 PRODUCTION.xls").Activate
Range("G15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


'mise en forme
 
Dernière édition:

xyam

XLDnaute Nouveau
Re : ouvrir un fichier avec vba

Bonjour,

déjà tu devrais rassembler tes quatres posts en un seul ou supprimer les inutiles ;)

Sinon je comprend pas trop ta problématique de nom de fichier, si le fichier est déjà ouvert tu n'as plus qu'a récupérer son nom?

J'ai repris ta Macro en mettant "'Set x = .Find..." car il y a une erreur de syntaxe en commentaire et j'ai stocker le nom de fichier dans une cellule

Code:
MsgBox "Choisissez le fichier PRODUCTION"
   'ouvre le fichier de production
   filenew = Application.GetOpenFilename("Fichiers Excel (*.*), *.txt", , "Ouvrir le fichier Production ")
If filenew = "Faux" Then End
        Range("a1").Value = ActiveWorkbook.Name
        
MsgBox "Choisissez le fichier ANALYSE REBUTS correspondant à l'année étudiée"
Application.Dialogs(xlDialogOpen).Show ("C:\Repertoire\")

Dim x As Range
With ActiveWorkbook.Sheets("SYNTHESE").Range("L1:L600")
'Set x = .Find(Workbooks(110401 PRODUCTION.xls").Sheets("Paramètre").Range("C2").V alue, , xlValues, xlWhole, , , False)
x.Select

End With

 nomProduction = Range("a1").Value
Selection.Offset(1, 8).Select
Selection.Copy
Windows(nomProduction).Activate
Range("G13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("110125 ANALYSE REBUTS.xls").Activate
Selection.Offset(0, -7).Select
Selection.Copy
Windows(nomProduction).Activate
Range("G15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

Je sais pas si cela répond à ta demande, peut être que d'autre personne te comprendrons mieux ^^
Je débute en soutient ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 200
Messages
2 086 163
Membres
103 149
dernier inscrit
Deepkneec