IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Renommer un classeur sans altérer une macro associée.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Renommer un classeur sans altérer une macro associée.
    Bonjour à tous, je solicite votre aide pour le problème suivant :

    J'ai créé une base de données (plusieurs classeurs Excel contenant chacun plusieurs feuilles de données) : c'est un catalogue de chiffrage.

    Voici un exemple de macro que je souhaite exécutée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub TUBEINOX316LDN200()
     
    ' TUBEINOX316LDN200 Macro
    ' Macro enregistrée le 16/01/2007 par AL
    '
        ChDir "N:\ACHAT\Catalogue Chiffrage"
        Workbooks.Open Filename:="N:\ACHAT\Catalogue Chiffrage\TUBES.xls"
        Windows("TUBES.xls").Activate
        Sheets("TUBES").Select
        Range("A50:D50").Select
        Selection.Copy
        Windows("détail chiffrage.xls").Activate
        ActiveSheet.Paste
        Windows("TUBES.xls").Activate
        ActiveWindow.Close
    End Sub
    Mon problème est que cette macro ne peut être exécutée que dans le classeur "détail chiffrage.xls". Si je renomme le classeur je ne peux plus exécuter cette macro (ni des centaines d'autres car elles dépendent toutes du fameu "détail chiffrage.xls" !!).

    Existe-t-il une fonction ou une variable qui permette d'exécuter la macro précédemment mentionnée dans n'importe quelle feuille Excel une fois cette dernière renommer ?

    Merci beaucoup de votre aide par avance !

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    pour le classeur tu peux utiliser la variable :

    et pour les feuilles pareil :

    Sinon pour les feuilles, tu peux aussi utiliser le "(name)" que tu vois quand tu vas dans la fenetre du VBA, dans les propriétés de la feuille, celui la ne bougera pas si tu change le nom de la feuille je sais pas si tu vois ce qu eje veux dire la


    A c emoment sui tu utilise celui la, tu fera au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("feuil1").range("A1")
    (par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    feuil1.range("A1")
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Bonjour,

    Un moyen tres simple meme: mettre le nom dans une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim NomClasseur as String 'en debut de module, avant la premiere procedure pour que toutes les macros du module "voient" cette variable
    NomClasseur = "détail chiffrage.xls"
     
    'puis
    Windows(NomClasseur).Activate
    Comme ca une seule ligne a modifier en cas de renommage.

    Pour remplacer "détail chiffrage.xls" par NomFichier utilise la fonction "remplacer" de l'editeur dans le menu edition. Coche bien "mot entier uniquement" pour eviter les problemes (remplacer ce qui ne devrait pas l'etre).

  4. #4
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Merci pour cette réponse !
    Désolé illight mais je n'ai pas trop réussi à comprendre ta réponse (je suis un débutant en VBA) !
    Par contre la réponse de tonton fred m'a simplifié la vie !
    Merci à vous deux de votre aide et je reviendrai certainement grapillé 2 3 infos !
    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Copier un classeur excel avec une macro
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/12/2010, 19h03
  2. [XL-2003] Ouvrir un classeur à partir d'une macro.
    Par chouchou_82 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/10/2010, 14h20
  3. [XL-2003] evenement sur un classeur ouvert par une macro
    Par cecyl dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2010, 11h39
  4. [VBA] Ouverture classeur sans activer les macros
    Par xc78370 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/10/2007, 10h45
  5. Afficher un message sans arrêter une macro
    Par bybelos33 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/06/2007, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo