Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/05/2007, 22h41   #1
Membre du Club
 
Inscription : octobre 2004
Messages : 119
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 119
Points : 40
Points : 40
Par défaut Macro complémentaire récalcitrante (encore !)

Bonjour , voici ma macro complementaire

Avec dans le ThisWorkBook
Code :
1
2
3
Private Sub Workbook_Open()
DERNIERELIGNE
End Sub
et dans un module de ma macro complémentaire

Code :
1
2
3
4
5
6
7
 
Sub DERNIERELIGNE()
Dim derniere As Range
Set derniere = Feuil1.Range("A65536").End(xlUp).Offset(2, 0) 'affecte la variable objet (2,0) 
derniere.Select  ' plante ici message :  erreur 1004 la méthode select de l’objet range a échouée
Set derniere = Nothing
End Sub

Par contre si je crée une macro ordinaire pour un classeur en particulier avec
Code :
1
2
3
4
5
6
7
8
 
Sub DERNIERELIGNE()
Dim derniere As Range
Set derniere = Feuil1.Range("A65536").End(xlUp).Offset(2, 0) 'affecte la variable objet (2,0) 
derniere.Select  
Set derniere = Nothing
 
End Sub
et que je la lance alors pas de problème … !

Quelle différence entre une macro complémentaire .xla et une macro ordinaire ?!!
aA189 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2007, 23h12   #2
Membre Expert
 
Inscription : novembre 2006
Messages : 1 465
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 465
Points : 1 411
Points : 1 411
a froid comme ça, sans essayer, je dirais que la seule difference c'est que la macro ordinaire est déja dans le bon classeur
alsimbad est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 08h57   #3
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Teste ça
Code :
1
2
3
Private Sub Workbook_Open()
Application.Run "'Classeur.xla'!DERNIERELIGNE"
End Sub
Tu dis
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 11h03   #4
Membre du Club
 
Inscription : octobre 2004
Messages : 119
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 119
Points : 40
Points : 40
Code :
Private Sub Workbook_Open() Application.Run "'Classeur.xla'!DERNIERELIGNE" End Sub
Non marche pô ...

IL y a confusion entre macro ordinaire , macro complémentaires et macro de mon classeur personnel PERSO.xls

La macro ordinaire tolère la méthode "select" , les autres ne la tolère pas ...
Comment remplacer la méthode "select" ?
aA189 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 11h27   #5
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Thisworkbook est le classeur qui contient ta macro Auto_Open
ActiveWorkbook est le classeur actif.
ActiveSheet est la feuille active
Ta macro DERNIERELIGNE est dans le xla

Tu cherches la dernière ligne de ActiveSheet (qui est dans ActiveWorkbook)
Code :
1
2
3
4
5
6
7
8
Sub DERNIERELIGNE()
Dim Fl as worksheet
Dim dernière as range
     Set Fl = ActiveWorkbook.Activesheet
     Set derniere = Fl.Range("A65536").End(xlUp).Offset(2, 0) 'affecte la variable objet (2,0) 
     derniere.Select  
     Set derniere = Nothing
End Sub
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 13h32   #6
Membre du Club
 
Inscription : octobre 2004
Messages : 119
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 119
Points : 40
Points : 40
Code :
1
2
3
4
5
6
7
8
9
10
11
 
option explicit
Sub DERNIERELIGNE()
 Dim Fl as worksheet
 Dim dernière as range 
'on error resume next
Set Fl = ActiveWorkbook.Activesheet  
Set derniere = Fl.Range("A65536").End(xlUp).Offset(2, 0)   
derniere.Select 
Set derniere = Nothing 
End Sub
plante ici
Code :
Set Fl = ActiveWorkbook.Activeshee
Erreur 91 variable objet non définie

J'aie tenté un petit "on error resume next" et plus de bug mais rien ne se passe .
Il semblerait que la variable "Fl" ne contienne rien .
aA189 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 14h09   #7
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

Il y a un problème d'accentuation (pratique déconseillée) dans ta variable, qui n'apparait plus dans l'instruction suivante:

Citation:
Dim dernière as range
'on error resume next
Set Fl = ActiveWorkbook.Activesheet
Set derniere = Fl.Range("A65536").End(xlUp).Offset(2, 0)

michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 14h11   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 14h29   #9
Membre du Club
 
Inscription : octobre 2004
Messages : 119
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 119
Points : 40
Points : 40
Oui vu aussi la petite faute de frappe mais ça ne change rien au problème ...
aA189 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 14h51   #10
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
la procédure, placée dans un xla, fonctionne chez moi.

michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 14h54   #11
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Ton fichier est bien ouvert ?
Tu as mis
Citation:
Set Fl = ActiveWorkbook.Activeshee
au lieu de ActiveSheet mais je pense que c'est en copiant sur le forum.
Teste cette ligne, après le Set. Tu devrais avoir le nom de ta feuille
Tu dis

Edit
Et moi j'ai mis Activesheets ! ZUT ! Quelle cloche ! J'ai corrigé ! C'est ActiveSheet !
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 17h23   #12
Membre du Club
 
Inscription : octobre 2004
Messages : 119
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 119
Points : 40
Points : 40
Code :
1
2
3
4
5
6
7
8
9
10
 
Sub DERNIERELIGNE()
Dim Fl As Worksheet
Dim derniere As Range
     Set Fl = ActiveWorkbook.ActiveSheet
     MsgBox Fl.Name
     Set derniere = Fl.Range("A65536").End(xlUp).Offset(2, 0)
     derniere.Select
     Set derniere = Nothing
End Sub
La procédure fontionne sauf dans un cas .

Dans l’explorateur Windows si j’ouvre un .xls quelquonque .


Je pense que l’événement
Code :
1
2
3
4
 
Private Sub Workbook_Open()
DERNIERELIGNE
End Sub
n’est alors pas compris par la machine .

Tandis pis au lieu d’un .xla je vais mettre la macro dans mon PERSO.XLS sans l’évenement
Code :
1
2
3
 Private Sub Workbook_Open()
DERNIERELIGNE
End Sub
Puis je lancerais la macro « à la main » via le menu outils/macro/PERSO.XLS !DERNIERELIGNE .
Une petite étape de plus qu’un .xla devrait pouvoir me soulager mais je m’en contenterais .

NB en tentant un mélange des 2

‘placer dans un .xla

Code :
1
2
3
4
Private Sub Workbook_Open()
Application.Run "'PERSO.XLS'!DERNIERELIGNE"
 
End Sub
Meme résultat ne fonctionne pas si je prend le chemin d’ouvrir un .xls via l’explorateur windows
aA189 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 23h46   #13
Membre du Club
 
Inscription : octobre 2004
Messages : 119
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 119
Points : 40
Points : 40
Ok merci à tous ...
aA189 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h23.


 
 
 
 
Partenaires

Hébergement Web