renseignent sur macro d'ouverture

  • Initiateur de la discussion Initiateur de la discussion dj.run
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dj.run

Guest
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
 
Re : renseignent sur macro d'ouverture

Salut Dj.run

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

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+
 
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
 
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+
 
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. ???
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
178
Réponses
10
Affichages
663
Réponses
4
Affichages
735
Retour