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 :

Renomer un tableur à partir d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut Renomer un tableur à partir d'une macro
    Bonjour,

    En deux mots mon problème est que j'ai crée une macro qui en appele une autre. Dans cet appel il y a donc le nom du tableur qui est entré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "ogtabxl_v262_blue_macro.xls!Remplissage_Importer2"
    Seulement je peux être amené assez régulièrement à renommer ce tableur et ma macro n'est alors plus fonctionelle car elle n'appelle plus le bon tableur.

    J'ai donc pensé à faire une macro qui renomerai le tableur et modifierai la macro concernée.
    Mais j'ai deux problème, déja comment rentré dans la macro le nom que l'on veut donner au tableur et deuxièmement comment fait-on pour modifier une macro?

    Voila merci d'avance pour vos réponses avisées.

    Ysandor, bidouilleur débutant

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu veux écrire dans une macro ?
    Alors la lecture de cet article : http://silkyroad.developpez.com/VBA/VisualBasicEditor/ de Silkyroad est pour toi.

    Starec

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut
    Bon ben je commence fort :

    Je commence à lire et je trouve ce qui me parait être la procédure pour renomer le classeur:

    Modifier le nom du projet (Le nom par défaut est "VBAProject").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.VBE.ActiveVBProject.Name = "MonProjet"
    Donc je teste en créant une macro => "macro1" dans "Classeur1"
    Voila la procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 30/10/2007 par
    '
     
    '
        Application.VBE.ActiveVBProject.Name = "MonProjet"
    End Sub
    Et quand je l'execute j'obtiens le message d'erreur suivant:
    Erreur d'exécution '1004':

    La méthode 'VBE' de l'objet '_Application' a échoué
    Voila j'ai un peu cherché et j'en suis arrivé à la conclusion que je comprends rien.

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour Ysandor,
    je crois que c'est ce que tu recherches
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Public Const MonClasseur As String = "ogtabxl_v262_blue_macro.xls"
    'la variable au-dessus se modifie par macro, elle doit rester ligne 1
    'sinon remplace le 1 de la ligne 24 par le bon n° de ligne
    'adapte cette variable
    Public Const Racine As String = "C:\Users\XXXX\Desktop\" ' garde l'antislash \ final
    Sub TaMacro()
    'remplace
    'Application.Run "ogtabxl_v262_blue_macro.xls!Remplissage_Importer2"
    'par
    Application.Run "'" & MonClasseur & "'!Remplissage_Importer2" 'j'ai ajouté les ' si tu saisies un nom avec des espaces
    End Sub
    Sub Renommer()
    'pour renommer le classeur, il faut qu'il soit fermé
    On Error Resume Next
    'on enregistre et on ferme (si ouvert)
    Workbooks(MonClasseur).Close True
    On Error GoTo 0
    AncienNom = Racine & MonClasseur
    NouveauNom = InputBox("Donnez un nouveau nom au classeur " & MonClasseur, "Renommer", MonClasseur)
    'on ajoute l'extension si non saisie, à ajuster pour Excel 2007
    If Not Right(NouveauNom, 4) = ".xls" Then NouveauNom = NouveauNom & ".xls"
    'on modifie la première ligne du Module1, adapte le nom du module
    ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.ReplaceLine _
      1, "Public Const MonClasseur As String = """ & NouveauNom & """"
    'on renomme le classeur
    NouveauNom = Racine & NouveauNom
    Name AncienNom As NouveauNom
    End Sub
    cordialement

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour
    Citation:
    Modifier le nom du projet (Le nom par défaut est "VBAProject").
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.VBE.ActiveVBProject.Name = "MonProjet"
    ds la feuil xl option/macro/securité/ onglet : editeurs approuvés
    choisir : faire confiance au projet visual basic

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut
    @patbou: Merci la macro s'execute à présent même si elle n'a aucun effet notable.

    @fred65200: J'ai quelques questions.

    Déja quelle est la diifférence entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const MonClasseur As String
    et car tu as l'air d'utiliser l'un ou l'autre à des moments biens précis et je n'arrive pas à voir si ils désignent la même variable "MonClasseur" ou si c'est deux variables différentes dont une avec un nom à ralonge.

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/12/2006, 12h56
  2. Formatage de formule Excel à partir d'une macro
    Par keithanos dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/11/2006, 16h47
  3. Réponses: 1
    Dernier message: 23/09/2006, 14h12
  4. Comment Executer Un Module A Partir D'une Macro
    Par lea022 dans le forum Access
    Réponses: 8
    Dernier message: 23/06/2006, 13h17
  5. [VBA-E]Imprimer à partir d'une macro
    Par benoue dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/03/2006, 10h09

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