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] Récupération Nom de fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut [VBA-E] Récupération Nom de fichier
    Bonjour,

    Je souhaiterai savoir s'il y a une "formule" sous Excel qui permet de récupérer le nom du fichier en cours, sans passer par VB.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    pas à ma connaissance
    t'es obligé de passer par du VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.Name

  3. #3
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    En fait, ce que je voudrais c'est un menu déroulant dont le contenu change selon le nom du fichier.

    Pour un menu déroulant simple, j'ai utilisé la fonction intégrée dans Excel. pour créer les menu déroulant.

    Je suppose que je peux générer le menu déroulant sous VB?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    exactement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    taListe.AddItem "valeur1"
    taListe.AddItem "valeur2"
    taListe.AddItem "valeur3"
    taListe.AddItem "valeur4"
    etc ....

  5. #5
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    mm je suis pas sur que ca fasse ce que je veux...

    En fait la liste déroulante sous excel c'était valable pour toute la colonne A par exemple en utilisant "validation de données" puis liste.

    Si j'utilise ta méthode, sauf erreur de ma part, je suis obligé de dupliquer le bouton sur l'ensemble de la colonne

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    tu fais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while cells(i,1).value <>""
        taListe.addItem cells(i,1).value
        i= i + 1
    Wend
    Dans ta liste tu auras toutes les valeursde la première colonne de ta feuille

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si j'ai bien compris, tu veux, selon le fichier, que ta liste soit mise à jour...
    Auquel cas, à chaque changement de fichier, tu dois nettoyer la liste existante avant de la renseigner
    fait ça très bien
    Mais est-ce bien ce que tu souhaites faire ?

  8. #8
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    Je m'explique par un exemple.

    Actuellement, quelque soit mon fichier, j'ai la même liste déroulante dans une colonne.

    Ce que j'aimerais c'est, par exemple :
    Si nomfichier = "liste 2006.xls" afficher les éléments de la liste 2006
    Si nomfichier = "liste 2007.xls" afficher les éléments de la liste 2007

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taListe.AddItem "valeur1"
    Je veux bien utiliser cela mais supposons que j'ai 100 cellules ou je désire afficher la liste, c'est assez ennuyeux de devoir duplique la liste.

    enfin s'il faut le faire...

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Et tu la mets où ta liste ?
    Que je t'explique : Si tu la mets dans un fichier, il faudra qu'elle existe dans l'autre...
    Si tu mets une liste par fichier, ça peut se faire avec une macro placée dans auto_open de chaque fichier + une liste dans ta feuille de calculs.
    Si tu mets ta liste dans un fichier indépendant, tu vas devoir détecter l'événement Open du classeur ouvert... Et sans macro...
    Voilà. Je pense que tu n'as pas tellement l'embarras du choix, quoique, ne savant pas l'utiisation que tu veux faire de ta liste... il y aurait bien l'utilisation d'userform contenant un combo qui se mettrait à jour à l'ouverture de chaque fichier d'une liste de fichier placée dans un autre combo afin de pouvoir sélectionner celui que tu veux ouvrir...
    Bref, si tu nous en disais plus...
    A+

    NB - Dans un userform, tu peux renseigner un combo d'un seul coup d'un seul avec RowSource

  10. #10
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    Pour la liste, j'aurai bien voulu la mettre dans une feuille du classeur et dire qq chose comme :
    Si nomfichier = "blabla.xls" alors contenu du menu dans la matrice A1:A15 et si nomfichier = "blabla2.xls" alors contenu du menu dans la matrice B1:B15

    En fait, c'est pour éviter de déployer 2 versions de l'application avec juste le contenu du menu qui change par exemple.

  11. #11
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    ah oui comme j'ai dit, le menu déroulant est visible dans toute la colonne B d'une feuille du classeur

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    tu fais un truc du genre

    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
     
    Sub auto_open()
    dim nom as string
    nom = Workbooks.name
    select case nom
         case "Classeur1"
             Call initListe(1,15,1)
     
     
         case "Classeur2"
            Call initListe(1,15,2)
     
    End Select
     
    End Sub
     
    sub initListe(ligneDebut as long, ligneFin as long, colonne as integer)
    dim i as integer
    i = ligneDebut
    while i<=ligneFin
        taListeDeroulante.Additem = Activesheet.Cells(i,colonne).value
        i=i+1
    wend
     
    End Sub
    Evidemment ce truc va te remplir une Liste déroulante faites avec la boite à outils.... tu es obligé de faire comme çà

    Si veux rester avec les listes de validation, je ne pense pas que tu puisse interagri dessus en VBA

    Je vais regarder quand même

    j'ai trouvé pour tes listes déroulantse avec validation

    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
    39
     
    Sub auto_open()
    dim nom as string
    nom = Workbooks.name
    select case nom
         case "Classeur1"
             Call initListe(1,15,"A")
     
     
         case "Classeur2"
            Call initListe(1,15,"B")
     
    End Select
     
    End Sub
     
    sub initListe(ligneDebut as long, ligneFin as long, colonne as string)
    dim i as integer
    i = 1
    while condition 
          Range("B" & i).Select
          With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$" & colonne & "$" & ligneDebut & ":$" & colonne & "$" & ligneFin
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
     
        i=i+1
    wend
     
    End Sub
    Y a sans doute plein de paramère inutile dans ce que je t'ai mis, a toi de faire le tri

    Pour ta condition de boucle tu peux imagine de mettre des listes déroulante que si la colone A est remplie par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while activesheets.cells(i,1).value <>""

  13. #13
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    sans passer par VB, tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CELLULE("filename";A1)
    Citation Envoyé par trihanhcie
    Bonjour,

    Je souhaiterai savoir s'il y a une "formule" sous Excel qui permet de récupérer le nom du fichier en cours, sans passer par VB.

    Merci

  14. #14
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    Merci de vos réponses !

    Bon ce que je pense faire pour contourner le problème c'est :
    A l'ouverture du fichier, en vb, récupérer le nom du fichier. Selon le nom, d'inscrire le contenu dans une feuille et afficher cela dans une liste de validation. Cela vous parait-il une bonne idée?

    J'ai essayé Workbooks.Name pour récupérer le nom du fichier en VB mais sans succès, la méthode n'existe pas

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327

  16. #16
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    vi je viens de voir ca faut que je fasse un traitement dessus pour récupérer juste le nom et pas le chemin ^^

  17. #17
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    J'ai défini sous excel un "nom" qui présente une matrice sous excel.
    Exemple : maliste = "Feuille2!A1:A12"

    Je voudrais savoir si sous VBA, on peut récupérer cette variable et la modifier ?

    Exemple : si fichier1 alors maliste = "feuille1!A1:A12" sinon maliste = "feuille2!A1:A12"

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Oui, si ma liste est le nom d'une cellule contenant un résultat, tu peux dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var1 = Range("maliste")
    A+

  19. #19
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    L'inverse en fait je voudrais

    je voudrais modifier "les coordonnées" de ma liste

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors il faut modifier la formule
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("maliste").formulalocal = "=feuille2!A1:A12"
    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Opendialog et problème récupération nom du fichier
    Par jeff_68 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 22/07/2010, 17h03
  2. Petits pb en VBA :espace dans noms des fichiers
    Par Calimero33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2010, 22h23
  3. [Excel VBA]Recup du nom du fichier référencé
    Par Misha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2008, 12h04
  4. [VBA-E] Recherche nom de fichier
    Par Farelga dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/01/2007, 09h26
  5. [VBA-E] récupérer nom utilisateur fichier en lecture seule
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/01/2007, 15h46

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