PB sur macro à lancer a l'ouverture d'une feuille

jjjerome

XLDnaute Occasionnel
Bonjour le forum,
A l'aide de l'enregisteur de macro, j'ai obtenu ce code :

Code:
Sub macro9()
  
  Sheets("TCD").Select
    Range("J5:AD5").Select
    Selection.ClearContents
    Range("H5").Select
    Selection.TextToColumns Destination:=Range("J5"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=False, Semicolon _
        :=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array( _
        Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Sheets("LM A SITES").Select

End Sub

Me permettant de DECONCATENER une cellule. Jusque là, tout va bien.
Pour que cette macro se lance à l'ouverture d'une feuille (différente de celle ou se trouve la cellule à déconcatener), j'ai ajouté :
Code:
Private Sub Worksheet_Activate()
Et j'obtiens systematiquement une erreur...
Quelqu'un aurait une autre idée ???
 

Catrice

XLDnaute Barbatruc
Re : PB sur macro à lancer a l'ouverture d'une feuille

Bonjour,

Au moment du Worksheet_Activate(), on ne doit pas etre sur la bonne feuille.

Pour quoi ne pas plutot faire :

Sub macro9()
Workbooks.Open Filename:="C:\Monfichier.xls"
Sheets("TCD").Range("J5:AD5").ClearContents
Range("H5").TextToColumns Destination:=Range("J5"), DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=True, TrailingMinusNumbers:=True
Sheets("LM A SITES").Select
End Sub

Tu peux aussi le mettre dans la Private Sub Workbook_Open() du classeur qui doit lancer la macro mais il faudra rajouter :
Workbooks.Open Filename:="C:\Monfichier.xls"
ou

With Workbooks("Classeur1.xls").Sheets("TCD")
.Range("J5:AD5").ClearContents
.Range("H5").TextToColumns Destination:=.Range("J5"), DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=True, TrailingMinusNumbers:=True
Sheets("LM A SITES").Select
End With

s'il est deja ouvert
 
Dernière édition:

jjjerome

XLDnaute Occasionnel
Re : PB sur macro à lancer a l'ouverture d'une feuille

Merci pour vos reponses aussi rapide !
Ilovezadig, je ne souhaite pas lancer la macro a l'ouverture du fichier, mais d'une feuille
PierreJean, j'ai replacé les codes, mais j'ai toujours cette erreur, comme le dit Catrice, ce doit être parce que je ne suis pas placé sur la même feuille
Catrice, je n'ai pas bien compris pourquoi le code
Workbooks.Open Filename:="C:\Monfichier.xls"
mais ça me renvoi une erreur egalement, et de toute façon, le fichier est utilisé par plusieurs personne, est-ce ça ne risque pas de bloquer ?
 

pierrejean

XLDnaute Barbatruc
Re : PB sur macro à lancer a l'ouverture d'une feuille

Re
Peux-tu poster ton fichier apres avoir oté les données confidentielles et allégé eventuellement pour que zippé il ne fasse pas plus de 48 k (ne laisser que l'essentiel qui pose probleme)
 

Catrice

XLDnaute Barbatruc
Re : PB sur macro à lancer a l'ouverture d'une feuille

jjjerome,

D'apres ce que j'ai compris, tu veux que lors de l'activation d'une feuille une macro s'execute.
Cette macro fait un traitement sur une feuille qui se trouve dans un fichier.

Il faut donc que le classeur qui contient cette Feuille soit ouvert.
Soit tu l'ouvres avec Workbooks.Open Filename:="C:\Monfichier.xls"

Soit il est dèjà ouvert, dans ce cas ce code doit suffire :

Workbooks("Classeur1.xls").Activate
With Sheets("TCD")
.Range("J5:AD5").ClearContents
.Range("H5").TextToColumns Destination:=.Range("J5"), DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=True, TrailingMinusNumbers:=True
End With
Sheets("LM A SITES").Select 'Si elle est dans Classeur1.xls

A placer dans la Feuille "déclencheuse" dans une procédure :
Private Sub Worksheet_Activate()
 
Dernière édition:

jjjerome

XLDnaute Occasionnel
Re : PB sur macro à lancer a l'ouverture d'une feuille

En fait, je voulais que la macro s'execute sur une autre feuille, mais dans le même fichier.
Ca marche très bien comme ça (avec 'With et And With). Merci

J'ai juste supprimé la ligne
Code:
Workbooks("EX PB JL.xls").Activate

Merci à tous ;)
 

Catrice

XLDnaute Barbatruc
Re : PB sur macro à lancer a l'ouverture d'une feuille

Re,

Essaie ceci :

Workbooks("Classeur1.xls").Activate
With Sheets("TCD")
If .Range("H5") ="" Then Exit Sub
.Range("J5:AD5").ClearContents
.Range("H5").TextToColumns Destination:=.Range("J5"), DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=True, TrailingMinusNumbers:=True
End With
Sheets("LM A SITES").Select 'Si elle est dans Classeur1.xls
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 283
Membres
103 507
dernier inscrit
tapis23