Nom du fichier excel actif dans VB

[Résolu/Fermé]
Signaler
Messages postés
64
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
9 juillet 2014
-
Messages postés
64
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
9 juillet 2014
-
Bonjour,
Bonjour,
J'ai office 2000 sous Vista.
Je n'arrive pas à réserver une macro à un fichier déterminé, même en précisant lors de sa création "pour ce classeur".
j'ai donc pensé à un complément dans visual basic pour la macro concernée, mais comment préciser le nom du fichier dans lequel on travaille dans VB ?
Merci pour votre aide

3 réponses

Bonjour,

avec thisworkbook.path peut-être ? ;)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
64
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
9 juillet 2014
6
Non j'ai essayé en déclarant après le Sub macro : thisworkbook = activeworkbook
puis : If thisworkbbok = "nomfichier.xls"
(exécution macro)
else
end sub

résultat erreur syntaxe sur la ligne IF

Je ne suis pas du tout familiarisé avec le langage VB. Je ne sais que modifier les macros dans leur exécution.
Merci de ton aide
>
Messages postés
64
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
9 juillet 2014

Alors,

Déjà, pour faire un IF, la structure se présente comme ceci :

IF conditions THEN
(code)
ELSE 'facultatif
(autre code)
END IF

Ensuite, vous ne pouvez pas comparer thisworkbook avec une chaine de caractères :

thisworkbook.path en revanche, peut être comparé avec une chaine de caractères. Cependant attention, thisworkbook.path retourne le chemin entier de votre fichier (ex: "C:/Documents And Settings/Toto/tata.xls"), mais c'est la seul méthode que je connaisse pour connaitre le nom du fichier :S

Bonjour,

Suggestion :

Option Explicit

Sub Traitement()

    Dim strNomFichier As String
    
    strNomFichier = "Fichier1.xls"

    If Not (ActiveWorkbook.Name = strNomFichier) Then
        Workbooks(strNomFichier).Activate
    End If
    Call MaRoutine
    
End Sub
'

Sub MaRoutine()
    MsgBox "In progress ..."
End Sub
'

Lupin
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
64
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
9 juillet 2014
6
Bonjour L. Arsène....

Tu m'as donné le fil de la solution. Thanks so much.
J'ai modifié et simplifié un peu ta proposition :

Sub MaRoutine()

If (ActiveWorkbook.Name = "Fichier1.xls") Then
MaRoutine
End IF

End Sub

J'ai enregistré finalement les macros concernées dans le "classeur de macros personnelles" et classées dans le "nouveau menu". Résultats ok. Et si elles sont activées dans un autre fichier que le "fichier1.xls", il ne se passe rien : c'était mon objectif.
La solution était donc dans mon cas avec la parenthèse ci-dessus dans la macro.
Encore merci de tes bons conseils.
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 177
Bonjour,

Je ne comprends bien le problème ...

Une macro appartient au classeur qu'il l'a créé. Elle se trouve (son code) dans un module (VBE) lié au classeur. Si on veut qu'une macro puisse être utilisée par plusieurs classeurs, il faut la sauvegarder dans un fichier .xla (voir ici).

Qu'entends-tu par réserver une macro à un fichier déterminé ?
Messages postés
64
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
9 juillet 2014
6
J'avais omis le "then" dans ma réponse à greenthumb. par contre j'avais omis le "end if", mais rien n'y fait.
Tu as saisi mon pb. Je croyais aussi qu'une macro enregistrée avec l'option "ce classeur" n'affecterait ou ne pourrait être exécutée que dans ledit classeur actif. Comme plusieurs utilisateurs peuvent modifier ce fichier1, j'ai installé un bouton spécifique, ce que je voudrais faire aussi sur les autres postes. Mais en testant un fichier2 excel avec ce bouton donc inapproprié j'ai récupéré un résultat anarchique de la macro sensée ne s'exécuter que sur le fichier1.
Alors j'ai introduit un nouveau "menu sp" avec les macros concernées pour éviter des erreurs mais c'est un peu lourd.
Le plus simple ce serait ainsi de trouver pour le "If" la formulation permettant à la macro de ne s'exécuter que si le fichier actif est bien fichier1.xls. VB permet-il de reconnaître le nom du fichier ouvert ? ET de quelle façon ?
Merci de ton aide