Macro Excel a l 'ouverture du fichier excel

jabrane

XLDnaute Nouveau
Bonjour,
j'ai crée un un macro excel qui ce lance automatiquement à l'ouverture de chaque fichier excel.
Ce macro fonctionne selon 3 condtion : if nom_du_fichier commence par "A" ; if nom_du_fichier commence par "B"; if nom_du_fichier commence par "C" ... Le probleme c'est que si on ouvre plusieurs classerurs en meme temp et avec des noms differents ( A**,B***, C***) , le macro ne fonctionne que pour le premier fichiers ouvert puis l excel se ferme!!
Y at il une solution svp ou une boucle a ajouter dans le macro VB??
 

camarchepas

XLDnaute Barbatruc
Re : Macro Excel a l 'ouverture du fichier excel

Bonjour ,
sans ton code pas facile de te répondre ,

Mais je pense que soit tu fermes le classeur macro au lieu de fermer le classeur à traiter , soit une macro évenementiel existe dans le fichier à traiter.
 

Pierrot93

XLDnaute Barbatruc
Re : Macro Excel a l 'ouverture du fichier excel

Bonjour,

bah..; sans voir le code utilisé et sans savoir où il est placé et comment il se déclenche, cela risque d'être difficile de t'aider....

bon après midi
@+

Edition : bonjour camarchepas
 

jabrane

XLDnaute Nouveau
Re : Macro Excel a l 'ouverture du fichier excel

Voila mon Macro Complet :

Dim TimeToRun
Sub Auto_Open()
Call scheduleJb
End Sub
Sub scheduleJb()
TimeToRun = Now + TimeValue("00:00:2")
Application.OnTime TimeToRun, "MacroAutoJB"
End Sub

Sub MacroAutoJB()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim oWdApp As Object 'Lancer Word
Dim i As Byte
Dim sChemin As String

On Error Resume Next
Dim nom As String

On Error Resume Next
Dim j As Integer
j = ActiveSheet.UsedRange.Rows.Count
Dim n As Byte
n = Cells(1, Columns.Count).End(xlToLeft).Column



If ActiveWorkbook.Name Like "AA*.xls" Then ' par exemple le nom du fichier est "AA211"
For j = 2 To j
Set WordApp = CreateObject("word.application")
nom = Sheets(1).Cells(j, 2)
user = Environ("username")

Set WordDoc = WordApp.Documents.Open("C:\Documents and Settings\" & user & "\PaieJb.doc")
Set oWdApp = CreateObject("Word.Application")
Set WordDoc = oWdApp.Documents.Open("C:\Documents and Settings\" & user & "\PaieJb.doc")

For i = 1 To n

WordDoc.Bookmarks("Sig" & i).Range.Text = Cells(j, i) ' enregistre la ligne selectionné
Next i
WordDoc.Bookmarks("Signet").Range.Text = Cells(j, 2)

On Error Resume Next
nom = Replace(nom, ":", "")
nom = Replace(nom, """", "")
nom = Replace(nom, "/", "")
nom = Replace(nom, "\", "")
nom = Replace(nom, "*", "")
nom = Replace(nom, "?", "")
nom = Replace(nom, "<", "")
nom = Replace(nom, ">", "")
nom = Replace(nom, "|", "")

WordDoc.SaveAs Filename:=nom & ".doc"
WordApp.Visible = False

oWdApp.Quit
ActiveDocument.Close True
WordDoc.Quit 'ferme le document word en sauvegardant les données
WordApp.Quit 'ferme la session Word

Next j
Application.Quit
End If


If ActiveWorkbook.Name Like "BB*.xls" Then
For j = 2 To j
Set WordApp = CreateObject("word.application")
nom = Sheets(1).Cells(j, 2)

user = Environ("username")

Set WordDoc = WordApp.Documents.Open("C:\Documents and Settings\" & user & "\AbsenceJb.doc")
Set oWdApp = CreateObject("Word.Application")
Set WordDoc = oWdApp.Documents.Open("C:\Documents and Settings\" & user & "\AbsenceJb.doc")

For i = 1 To n

WordDoc.Bookmarks("Sig" & i).Range.Text = Cells(j, i)
WordDoc.Bookmarks("Signet").Range.Text = Cells(j, 2)

On Error Resume Next
nom = Replace(nom, ":", "")
nom = Replace(nom, """", "")
nom = Replace(nom, "/", "")
nom = Replace(nom, "\", "")
nom = Replace(nom, "*", "")
nom = Replace(nom, "?", "")
nom = Replace(nom, "<", "")
nom = Replace(nom, ">", "")
nom = Replace(nom, "|", "")
WordDoc.SaveAs Filename:=nom & ".doc"
WordApp.Visible = False

oWdApp.Quit
ActiveDocument.Close True
WordDoc.Quit
WordApp.Quit
Next j
Application.Quit
End If


If ActiveWorkbook.Name Like "CC*.xls" Then
For j = 2 To j
Set WordApp = CreateObject("word.application")
nom = Sheets(1).Cells(j, 2)

user = Environ("username")

Set WordDoc = WordApp.Documents.Open("C:\Documents and Settings\" & user & "\CotisationJb.doc")
Set oWdApp = CreateObject("Word.Application")
Set WordDoc = oWdApp.Documents.Open("C:\Documents and Settings\" & user & "\CotisationJb.doc")


For i = 1 To n

WordDoc.Bookmarks("Sig" & i).Range.Text = Cells(j, i)
Next i
WordDoc.Bookmarks("Signet").Range.Text = Cells(j, 2)

On Error Resume Next
nom = Replace(nom, ":", "")
nom = Replace(nom, """", "")
nom = Replace(nom, "/", "")
nom = Replace(nom, "\", "")
nom = Replace(nom, "*", "")
nom = Replace(nom, "?", "")
nom = Replace(nom, "<", "")
nom = Replace(nom, ">", "")
nom = Replace(nom, "|", "")

WordDoc.SaveAs Filename:=nom & ".doc"
WordApp.Visible = False 'affiche le document Word

oWdApp.Quit
ActiveDocument.Close True
WordDoc.Quit
WordApp.Quit
Next j
Application.Quit
End If


End Sub
Sub auto_close()
On Error Resume Next
Application.OnTime TimeToRun, "MacroAutoJB", , False
End Sub

*******
Une autre question , si vous permettez bien sure ; Mon macro , enregistre chaque ligne du fichier excel dans un nouveau document word , et comme résultat j obtient n document word ouvert = n lignes du fichiers excel , alors que je veut bien si c possible , enregistré ces lignes dans un Seul DOCUMENT mais des fenêtres différentes ( ou des pages differentes, au lieu d ajouter un document on ajoute une nouvelle page ) ??
Merci beaucoup pour votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : Macro Excel a l 'ouverture du fichier excel

Re,

peut être faire une boucle sur les classeurs ouverts en testant le nom, un exemple ci-dessous à adapter :
Code:
Dim wb As Workbook
For Each wb In Workbooks
    If wb.Name Like "AA*.xls" Or wb.Name Like "BB*.xls" Or wb.Name Like "CC*.xls" Then
        'ton code ou il sera fait référence au classeur "variabilisé" "wb"
        'exemple de code ensuite :
        'wb.Sheets("NomFeuille").Cells(i, j).Value = 123
    End If
Next wb
 

camarchepas

XLDnaute Barbatruc
Re : Macro Excel a l 'ouverture du fichier excel

Bonjour Jabrane , Mes respects Pierrot

Il faut être honnête avec toi, ta macro entre les resume next essayant de masquer les erreurs de programmation, les variables mal déclarées , les appels toutes les 0.2 secondes. Une vraie usine à mines . y'a un très gros boulot de reconstruction. Et pourquoi cette relance de la macro sans arrêt ?

Il faudrait un modele de tes fichiers données , bon pour les cibles l'on peut encore s'en passer ,mais sans garantie du résultat réel.

A oui les for next avec la même variable en inbrication , non vraiment impossible que cela fonctionne de façon sereine.
 

jabrane

XLDnaute Nouveau
Re : Macro Excel a l 'ouverture du fichier excel

Merci pour votre Aide Pierrot93 Mais si je fesais " If wb.Name Like "AA*.xls" Or wb.Name Like "BB*.xls" Or wb.Name Like "CC*.xls" Then" j'obtiendrais pas le resultat que je veut , puisques pour chque NOM (AA*, BB*,CC*) il ya un chemin specifique bien determiné..
 

jabrane

XLDnaute Nouveau
Re : Macro Excel a l 'ouverture du fichier excel

Bonjour camarchepas et merci pour votre temp ;
Bon , d apres les resultat que j'ai arrivé , le macro ce lonce apres 2 secondes de louverture du fichier excel ou le classeur excel, puis l'application se ferme automatiquement .. Je suis debutant dans les macro puisque je travaile sur les bases de données , et je comprend pas c quoi "relance de la macro sans arrêt" !! Mon Boulo et de faire fonctionné ce macro sur le serveur de la base de données .. Pouvez vous m aidez avec tout mes respects??
 

Discussions similaires

Statistiques des forums

Discussions
312 810
Messages
2 092 304
Membres
105 346
dernier inscrit
yanikala