renseignent sur macro d'ouverture

dj.run

XLDnaute Nouveau
Bonjour a tous,

Quelqu'un peut il m'expliquer pourquoi un code tapé dans ThisWorkbook :

Private Sub Workbook_Open()
Dim DerLig As Long
Dim Cel1 As Range

Dim firstaddress As String, FichSource As String
Application.ScreenUpdating = False
'If Sheets("Feuille de monte").Range("Q3") = 0 Then Exit Sub

FichSource = ThisWorkbook.Name
Workbooks.Open Filename:="C:\CHE adhérents\mailing.xls"
Workbooks(FichSource).Activate


DerLig = Workbooks("mailing.xls").Sheets("Feuil1").Range("A65500").End(xlUp).Row + 1
With Workbooks("mailing.xls").Sheets("Feuil1")
'***Recherche si adhérent existe déjà
Set Cel1 = .Range("A2:A" & DerLig).Find(Range("L2").Value)
If Not Cel1 Is Nothing Then
firstaddress = Cel1.Address

If Cel1.Offset(0, 1) <> Range("M2").Value Then
Do
Set Cel1 = .Range("A2:A" & DerLig).FindNext(Cel1)
If Cel1.Offset(0, 1) = Range("M2").Value Then DerLig = Cel1.Row
Loop While Not Cel1 Is Nothing And Cel1.Address <> firstaddress
End If

DerLig = Cel1.Row
End If

'***Renseigne le fichier mailing
For j = 1 To 6
.Cells(DerLig, j).Value = Cells(2, 11 + j).Value
Next
End With
Workbooks("mailing.xls").Activate
ActiveWorkbook.save
ActiveWindow.Close
Application.ScreenUpdating = True

End Sub

Fonctionne très bien à l'ouverture du fichier.

Alors que le meme code affecté à un macro ne fonctionne pas ???

Sub suite()

Dim DerLig As Long
Dim Cel1 As Range

Dim firstaddress As String, FichSource As String
Application.ScreenUpdating = False
'If Sheets("Feuille de monte").Range("Q3") = 0 Then Exit Sub

FichSource = ThisWorkbook.Name
Workbooks.Open Filename:="C:\CHE adhérents\mailing.xls"
Workbooks(FichSource).Activate


DerLig = Workbooks("mailing.xls").Sheets("Feuil1").Range("A65500").End(xlUp).Row + 1
With Workbooks("mailing.xls").Sheets("Feuil1")
'***Recherche si adhérent existe déjà
Set Cel1 = .Range("A2:A" & DerLig).Find(Range("L2").Value)
If Not Cel1 Is Nothing Then
firstaddress = Cel1.Address

If Cel1.Offset(0, 1) <> Range("M2").Value Then
Do
Set Cel1 = .Range("A2:A" & DerLig).FindNext(Cel1)
If Cel1.Offset(0, 1) = Range("M2").Value Then DerLig = Cel1.Row
Loop While Not Cel1 Is Nothing And Cel1.Address <> firstaddress
End If

DerLig = Cel1.Row
End If

'***Renseigne le fichier mailing
For j = 1 To 6
.Cells(DerLig, j).Value = Cells(1, 11 + j).Value
Next
End With
Workbooks("mailing.xls").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Application.ScreenUpdating = True

End Sub

Merci pour vos réponses
 
C

Compte Supprimé 979

Guest
Re : renseignent sur macro d'ouverture

Salut Dj.run

Tu as une petite différence dans ton code, cherche l'erreur :D

Private Sub Workbook_Open()
...
'***Renseigne le fichier mailing
For j = 1 To 6
.Cells(DerLig, j).Value = Cells(2, 11 + j).Value
Next
...

et
Sub suite()
...
'***Renseigne le fichier mailing
For j = 1 To 6
.Cells(DerLig, j).Value = Cells(1, 11 + j).Value
Next
...

Tu as 2 secondes pour trouver ;)

A+
 

dj.run

XLDnaute Nouveau
Re : renseignent sur macro d'ouverture

Merci BrunoM45, pour avoir vu cette erreur que je ne voyais pas, mais meme avec cette correction, cela ne marche toujours pas.

Je vais continuer à chercher pourquoi.


Merci encore pour ton aide
 
C

Compte Supprimé 979

Guest
Re : renseignent sur macro d'ouverture

Dj.run,

Si le problème n'est pas : .Cells(DerLig, j).Value = Cells(2, 11 + j).Value

Quel est le problème rencontré entre les deux versions !?

A+
 

dj.run

XLDnaute Nouveau
Re : renseignent sur macro d'ouverture

En fait BrunoM45,

j'ai prés de 200 fichiers dans un répertoire, dans un de ces fichiers j'ai adapté une macro a l'ouverture de ce fichier. elle m'ouvre un autre fichier (mailing), et elle me copie sous forme de liste les cellules c5, c6,c10,c11,c13,et g13 de la feuil1 dans la feuil1 du fichier mailing.

Je voudrai eviter de copier cette macro dans les 200 fichiers dans
thisworkbook
Private Sub Workbook_Open()

Donc j'ai recopié le code dans une macro personnelle et quand j'ouvre un fichiers dans les 200, je lance cette macro.

Le problème c'est que ça fonctionne avec Private Sub Workbook_Open() mais pas avec la macro personnelle. Et la je comprends pas. ???
 

dj.run

XLDnaute Nouveau
Re : renseignent sur macro d'ouverture

Merci Spitnolan08, de te pencher sur mon problème, ok j'ai bien compris, dans mon code "perso.xls" je fait référence avec FichSource = ThisWorkbook.Name à perso.xls et non au fichier que je viens d'ouvrir.

La question est comment dois je définir le fichier que j'ouvre sachant que mes 200 fichiers n'ont pas le même nom bien évidement.

A moins qu'il y ai une possibilité d'ecrire dans

thisworkbook
Private Sub Workbook_Open()

Du fichier que j'ouvre avec une macro ?? mais là je pense ne pas avoir le niveau . lol
 

Statistiques des forums

Discussions
312 920
Messages
2 093 640
Membres
105 768
dernier inscrit
Luc Juvénal YAMBASSA