Macro ouverture de fichier

tallia64

XLDnaute Occasionnel
Bonsoir je voudrais créer une macro d'ouverture de manière qu'à chaque ouverture il redevienne vierge. Mais je souhaiterais lui faire un test de condition en sachant que si il trouve dans son répertoire d'enregistrement un fichier sous le nom de "ex : "service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls" il s'ouvre sans effectuer mes macros "comboblanc"et "Ablanc" et ainsi les anciennes données sont sauvegardées ou si il ne retrouve pas le fichier à ce moment là il execute la macro comboblanc et Ablanc afin que le fichier redevienne vierge. j'espère que mes explications sont assez claires. Je vous remercie d'avance pour votre aide.
TALLIA:)

J'ai pensé à la macro suivante mais je n'arrive pas à l'adapter avec mes deux autres macros "COMBOBLANC" et "ABLANC"

Sub rechdernierfichier()
'
With Application.FileSearch
.LookIn = "C:\Documents and Settings\HP_Propriétaire\Mes documents\"
.Filename = "service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls"
.Execute
If .FoundFiles.Count <> 0 Then
Workbooks.OpenText Filename:=.FoundFiles(.FoundFiles.Count), _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 4))
End If
End With
ActiveWorkbook.Close
End Sub

que je souhaiterais insérer dans le :

Private Sub Workbook_Open()

COMBOBLANC
Ablanc

End Sub
 

kjin

XLDnaute Barbatruc
Re : Macro ouverture de fichier

Re,
Je viens de comprendre que tu lances directement "BESSAIFORM_Base_Service_General.xls" et non pas depuis un autre fichier
Dans ce cas, dans le module ThisWorkbook de "BESSAIFORM_Base_Service_General.xls"
Code:
Private Sub Workbook_Open()
Dim Rep as String, Fichier as String
Rep = "C:\Documents and Settings\HP_Propriétaire\Mes documents\"
Fichier = Dir(Rep & service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls")
If Fichier = "" Then
Call COMBOBLANC
Call Ablanc
End If
End Sub
A+
kjin
 
Dernière édition:

tallia64

XLDnaute Occasionnel
Re : Macro ouverture de fichier

Oui c'est BESSAIFORM_Base_Service_General.xls que j'ouvre et à l'ouverture s'il trouve dans mes documents service_général à la date du jour il n'exécute pas les macros et sinon il exécute les macros. Merci beaucoup pour votre aide.
TALLIA
 

tallia64

XLDnaute Occasionnel
Re : Macro ouverture de fichier

Merci beaucoup pour votre code mais il continue à m'exécuter les macros alors que dans mes documents il y a bien le fichier service_general à la date du jour ? Je ne comprends alors que vous avez bien spécifié dans le code qu'il ne les exécute que quand le fichier n'est pas à la date du jour. Je vais continuer à chercher si vous avez une idée merci beaucoup .
Tallia
 

kjin

XLDnaute Barbatruc
Re : Macro ouverture de fichier

Re,
Il y a une erreur ici (en rouge), j'avais écris le code directement :rolleyes:
Code:
Private Sub Workbook_Open()
Dim Rep As String, Fichier As String
Rep = "C:\Documents and Settings\HP_Propriétaire\Mes documents\"
Fichier = Dir(Rep & [COLOR="Red"]"[/COLOR]service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls")
If Fichier = "" Then
Call COMBOBLANC
Call Ablanc
End If
End Sub
Néanmoins tu aurais du avoir un message d'erreur
Tu peux peut-être faire un debug pas à pas en affichant la fenêtre des variables locales
Code:
Sub test()
Dim Rep As String, Fichier As String
Rep = "C:\Documents and Settings\HP_Propriétaire\Mes documents\"
Fichier = Dir(Rep & "service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls")
If Fichier = "" Then
MsgBox "le fichier n'existe pas"
'Call COMBOBLANC
'Call Ablanc
End If
End Sub
En outre, tu peux peut-être nous faire passer la macro qui se trouve dans le ThisWorkBook que l'on a toujours pas vu
A+
kjin
 

tallia64

XLDnaute Occasionnel
Re : Macro ouverture de fichier

bonsoir voici mes deux macros je vous remercie TALLIA
Sub COMBOBLANC()
'
' COMBOBLANC Macro
'
'

'
Range("M3", "M66").Select
Selection.ClearContents
Range("B3", "B66").Select
Selection.ClearContents
Range("C3", "C66").Select
Selection.ClearContents
Range("D3", "D66").Select
Selection.ClearContents
Range("E3", "E66").Select
Selection.ClearContents
Range("F3", "F66").Select
Selection.ClearContents
Range("G3", "G66").Select
Selection.ClearContents
Range("H3", "H66").Select
Selection.ClearContents
Range("I3", "I66").Select
Selection.ClearContents
Range("J3", "J66").Select
Selection.ClearContents
Range("K3", "K66").Select
Selection.ClearContents
Range("L3", "L66").Select
Selection.ClearContents
Range("A3", "A66").Select
Selection.ClearContents

End Sub


Sub Ablanc()
'
' Ablanc Macro
' Macro enregistrée le 17/10/2008 par PAMAC
'

'

Range("A3:M66").Select
Selection.Clear
Range("A1").Select
End Sub
 

kjin

XLDnaute Barbatruc
Re : Macro ouverture de fichier

Re,
Je me suis sans doute mal exprimé
[/CODE]
En outre, tu peux peut-être nous faire passer la macro qui se trouve dans le ThisWorkBook que l'on a toujours pas vu
Je voulais dire la macro "Workbook_Open" de ton fichier "BESSAIFORM_Base_Service_General.xls" , et qui de fait se lance à l'ouverture de ce classeur

Edit: concernant tes 2 macros on peut simplifier
Sub COMBOBLANC
Range ("A3:M66").ClearContents
End Sub
Et surtout, la seconde ne sert à rien, elle fait exactement la même chose :confused:
A+
kjin
 
Dernière édition:

tallia64

XLDnaute Occasionnel
Re : Macro ouverture de fichier

Rebonsoir désolée j'ai du m'absenter en fait que mon excel bugaita aprés toutes ces modifications je suis revenue à ma macro d'hier mais qui ne fonctionne pas comme je le souhaiterais merci pour votre aide.
TALLIA

Private Sub Workbook_Open()
With Application.FileSearch
.LookIn = "C:\Documents and Settings\HP_Propriétaire\Mes documents\"
.Filename = "service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls"
.Execute
On Error Resume Next
If .execute= 0 Then call COMBOBLANC : call Ablanc
End With
End Sub
 

kjin

XLDnaute Barbatruc
Re : Macro ouverture de fichier

Bonsoir,
Quelle que soit les procédures, elles font toutes la même chose :
vérifier que le fichier :
service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls
existe dans le répertoire :
C:\Documents and Settings\HP_Propriétaire\Mes documents\

... Le 1er sur lequel je rentre des données c'est pour cela que je l'appellais mon application est BESSAIFORM_Base_Service_General.xls à la fermeture de celui-ci automatiquement il fait une extraction de ses données dans mon autre fichier service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls afin d'effectuer une sauvegarde des données
...

Généralement quand je reouvre mon fichier BESSAIFORM_Base_Service_General.xls, il y a deux macros qui sont dans le thisworkbook dont COMBOBLANC et Ablanc qui se déclenchent. Mais je voudrais qu'elles se déclenchent sous une condition " Si à l'ouverture de BESSAIFORM_Base_Service_General.xls il trouve dans C:\Documents and Settings\HP_Propriétaire\Mes documents le fichier service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "(à la date du jour).xls il s'ouvre sans effectuer les macros par contre s'il trouve le service_general à une date différente à celle du jour là il s'ouvre en effectuant les macros. J'espère avoir été assez claire un grand merci.
TALLIA

Et c'est bien ce que font ces procédures.

Par contre il y a qqchose qui me tracasse dans ce raisonnement !

Tu sauvegardes automatiquement BESSAIFORM_Base_Service_General.xls
à la fermeture donc si tu l'ouvre 2 fois dans la même journée, les données de
service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "(à la date du jour).xls
sauvegardées une première fois seront remplacées, non ?

--- n'est ce pas un premier pb ?

Or en plus on a une procédure, qui, si à l'ouverture de BESSAIFORM_Base_Service_General.xls, recherche et trouve le fichier service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "(à la date du jour).xls,
lance la macro COMBOBLANC qui va effacer toutes les données de BESSAIFORM_Base_Service_General.xls

--- n'est ce pas là un second pb ?

Edit : ce que je veux dire par là c'est que si tu sauvegardes automatiquement toute la procédure de vérification comme tu l'as prévue et que l'as décrite ne sert à rien ! tes données seront écrasées à moins que tu n'ouvres le fichiers à 23:59:59 et que tu ne referme qu'après 00:00:00 !
A+
kjin
 
Dernière édition:

tallia64

XLDnaute Occasionnel
Re : Macro ouverture de fichier

bonsoir en fait plusieurs personnes risquent de travailler sur ce fichier pendant la journée et en cas de fermeture accidentelle j'aimerais qu'elle reouvre BESSAIFORM_Base_Service_General.xls avec les données sauvegardées afin de pouvoir y rajouter les saisies de la journée ainsi à la fin de la journée la sauvegarde sera complète dans l'extraction du fichier service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & "(à la date du jour). ainsi le lendemain lors de la réouverture de BESSAIFORM_Base_Service_General.xls il sera remis à blanc (macros) vu que la date aura changé.
Je vous remercie pour votre patience.
TALLIA
 

kjin

XLDnaute Barbatruc
Re : Macro ouverture de fichier

Re,
Alors le fonctionnement est correct
Ci-joint un fichier test que tu décompresses dans un répertoire temporaire de ton choix
Contient le fichier BESSAIFORM_Base_Service_General.xls
Les instructions qui sont fort simples
Dans un premier temps APPUIE sur le bouton pour céer un fichier service_general_12_11_2008.xls (jusqu'à demain 00:00:00 :D)
SAISIE des données dans la plage A3:M66
Ensuite, FERME le fichier BESSAIFORM_Base_Service_General.xls puis REOUVRE LE
Une boîte de message doit t'indiquer que le fichier
service_general_12_11_2008.xls existe déjà
La macro COMBOBLANC ne sera pas executée
REFERME le fichier BESSAIFORM_Base_Service_General.xls et EFFACE le fichier service_general_12_11_2008.xls de ton répertoire
REOUVRE une dernière fois BESSAIFORM_Base_Service_General.xls
le fichier service_general_12_11_2008.xls n'existant plus
la macro COMBOBLANC sera executée et
et d'après ta macro la plage A3:M66 est effacée
Code dans le module du classeur
Code:
Private Sub Workbook_Open()
Dim Rep As String, Fichier As String
Rep = ActiveWorkbook.Path & "\"
Fichier = "service_general_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xls"
If Dir(Rep & Fichier) <> "" Then
MsgBox "Le fichier " & Fichier & " Existe déja !", vbCritical
Else
Call COMBOBLANC
End If
End Sub
Code dans le module standard
Code:
Sub COMBOBLANC()
Range("A3:M66").ClearContents
End Sub
Si le résultat est correct, tu pourras recopier ces codes tels quels à conditions que les 2 fichiers en question soient bien dans le même répertoire
Sinon :eek:
A+
kjin
 

Pièces jointes

  • BESSAIFORM_Base_Service_General.zip
    10 KB · Affichages: 23
Dernière édition:

tallia64

XLDnaute Occasionnel
Re : Macro ouverture de fichier

bonsoir vous êtes tout simplement génial ça fonctionne du tonnerre !! Un grand merci pour votre aide. Juste un petit rajout de ma part dans le code ma macro "ablanc" car dans mon fichier certaines lignes sont de couleur rouge et c'est simplement pour les effacer à la réouverture.
Je tiens vraiment à vous remercier ainsi que LEDZEPFRED et PIERROT93.
Merci pour votre PATIENCE car je débute et mes explication n'étaient pas souvent trés claires je m'en excuse. J'ai appris beaucoup de choses sur le vba que j'apprécie de jour en jour grâce à vous tous CHAPEAU !!! Je dois présenter mon projet dans quelques heures sans votre aide je n'y serais pas arriver. Merci beaucoup bonne nuit.
TALLIA.
 

Discussions similaires

Réponses
2
Affichages
118

Statistiques des forums

Discussions
312 237
Messages
2 086 489
Membres
103 234
dernier inscrit
matteo75654548