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 :

[VBA-E] Connaitre le nom d'un classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut [VBA-E] Connaitre le nom d'un classeur
    Bonjour, j'ai un problème avec une macro que je n'arrive pas à résoudre.

    Ma macro, contenu dans le classeur liste, sur certains événements m'ouvre un autre classeur, contenant également une macro qui modifie le nom de ce dernier.

    Je n'arrive pas a récupérer le nom du fichier ouvert avec ma macro et le mettre dans une cellule du premier fichier.

    Voici le code des deus macros
    d'abord celui contenu dans le classeur liste
    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
     
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim RNCName As String
     
    If Target.Column = 2 Then
        Select Case Target
            Case "RNC"
            Workbooks.Open ("\\Qualite\d\Holdry\RNC\RNC_nouvelle\RNC_auto.xls")
            Application.Wait Now + TimeValue("0:0:5")
            RNCName = ActiveWorkbook.GetOpenFilename
            ThisWorkbook.Worksheets(1).Activate
            Range(ActiveCell, ActiveCell).Offset(0, 1).Value = RNCName
            Case "DAC"
            Workbooks.Open ("\\Qualite\d\Holdry\DAC\DAC_nouvelle\DAC_auto.xls")
            Case "DAP"
            Workbooks.Open ("\\Qualite\d\Holdry\DAC\DAC_nouvelle\DAC_auto.xls")
        End Select
    ElseIf Target.Column = 8 Then
        Select Case Target
            Case "DAC"
            Workbooks.Open ("\\Qualite\d\Holdry\DAC\DAC_nouvelle\DAC_auto.xls")
        End Select
    End If
    End Sub

    et celle contenue dans le deuxième classeur
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Sub WorkBook_open()
     
    Dim ClaSseurRésultats As Workbook
    Dim Racine As String, Répertoire As String, ModèleRNC As String
    Dim NomFichier As String, DerNuméro As String
    Dim Numéro As Long, NbChiffres As Integer, Longueur As Integer
     
    Répertoire = "\\Qualite\D\Holdry\RNC\RNC_nouvelle"
    Racine = "RNC_0"
    NbChiffres = 5
    Longueur = Len(Racine) + NbChiffres + Len(".xls")
    ModèleRNC = Répertoire & "\RNC_source.xlt"
     
    DoEvents
    Set classeurprojet = ThisWorkbook.Worksheets
    Numéro = 0
    NomFichier = Dir(Répertoire & "\" & Racine & "*.xls", vbNormal)
     
    Do
    DerNuméro = Mid(NomFichier, Len(Racine) + 1, NbChiffres)
    If IsNumeric(DerNuméro) And Len(NomFichier) = Longueur Then
        If Val(DerNuméro) >= Numéro Then Numéro = Val(DerNuméro) + 1
    End If
    NomFichier = Dir
    Loop Until Len(NomFichier) = 0
     
    Set ClaSseurRésultats = Workbooks.Add(ModèleRNC)
    ClaSseurRésultats.Activate
    Cells(1, 47).Value = "0" & Right("00000" & Numéro, 5)
    ClaSseurRésultats.SaveAs (Répertoire & "\RNC_0" & Right("0000" & Numéro, 5))
    ThisWorkbook.Activate
    Application.DisplayAlerts = False
    ThisWorkbook.Close
    End
     
    Application.DisplayAlerts = True
    End Sub
    Merci d'avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    le nom du fichier excel liste est connu..? non..? modifie macro sur ouverture du 2° fichier afin qu'il rajoute dans fichier liste le nouveau nom...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    Le problème est que ces fichiers peuvent être ouvert manuellement par l'utilisateur et pas seulement par le classeur liste.

    Donc il n'est pas possible de modifier la macro sur ouverture du du 2° fichier.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par fab78
    Le problème est que ces fichiers peuvent être ouvert manuellement par l'utilisateur et pas seulement par le classeur liste.

    Donc il n'est pas possible de modifier la macro sur ouverture du du 2° fichier.
    et quand il est ouvert "manuellement" la macro doit aussi être exécuté..?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    Quand il est ouvert manuellement la macro doit également s'activer, mais je pense qu'en testant le fichier liste est ouvert ca résoud le pb.

    Mais dans ce cas la difficulté est, pour moi, dans quelle cellule écrire le nom du fichier.

    Je m'explique:

    En mettant RNC dans la colonne 2, par exemple en B17,j'ouvre le fichier des RNC et je dois alors mettre le nom du fichier RNC qui est du type RNC_XXXXXX, ou les X représentent le numéro de la RNC auto incrémenté par la macro, sur la meme ligne mais dans la colonne d'à côté : C17.

    L'avantage, pour moi, de mettre tout le code dans le fichier liste est que je peux facilement, avec ActiveCell, écrire dans la bonne cellule

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben tu peu créer une procedure dans fichier liste que tu appelle depuis ton 2° classeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       Dim Wk As Workbook
       On Error Resume Next
       Set Wk = Workbooks("Liste.xls")
       On Error GoTo 0
       If Not Wk Is Nothing Then
         Application.Run "'Liste.xls'!NoteClasseur", ThisWorkbook.Name
        End If

    Dans fichier liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Sub NoteClasseur(st As String)
     ActiveCell = st
     ActiveCell.Offset(1,0).Select
    End Sub

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

Discussions similaires

  1. Activer un classeur ouvert sans connaitre son nom
    Par djjilou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2012, 17h47
  2. activer un classeur ouvert sans connaitre son nom
    Par touriste01 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 24/02/2011, 09h05
  3. [VBA-E] imprimer une feuille sans connaitre le nom
    Par srame dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/04/2007, 09h02
  4. [VBA-E]Liste des noms de classeur dans un dossier
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/09/2006, 21h04
  5. [VBA-E]Définir un nom au classeur créé
    Par LeSqual dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/05/2006, 09h37

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