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 :

Trouver le chemin d'acces d'un Classeur ouvert [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut Trouver le chemin d'acces d'un Classeur ouvert
    Bonjour a tous,

    Je me présente vite fait, je suis stagiaire dans une petite entreprise ou j'essaie d'automatiser certaines petites taches, je fais ça sous Excel en VBA, mais aujourd'hui je suis tomber sur un os. D'habitude j'arrive a me débrouiller avec la quantité de message déjà posté sur les forum mais là, pas moyen (je ne sais pas exactement ou chercher).

    Je vous présente donc mon problème, je suis entrain de créer une macro classique dans un fichier Excel (que j’appellerai le fichier 1).
    Dans cette Macro grâce a une "Imputbox" je viens sélectionner une plage de cellule dans un second fichier Excel ouvert ((que j’appellerai le fichier 2)) dans le but de traité les données et convertir le résultat en fichier CSV.

    Maintenant je voudrais récupérer dans une variable (String) le chemin d’accès du fichier 2.
    c'est la que ça coince comme je lance ma macro depuis le fichier 1 si je fais un "ActiveWorkbook.Name" de temps en temps j'ai le fichier 2 donc tout vas bien mais quelques fois j'ai le chemin du fichier 1.

    J'aimerais donc savoir comment récupérer a tout les coup le chemin d’accès du Fichier Excel de destination de mon "imputBox" ou déjà pour faire simple je voudrais que la macro du fichier 1 modifie le fichier 2.

    voici un petite partie de mon code:

    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
     
    Sub diviser()
     
    Dim ran As Range
    Dim Path_name As String
    Dim File_name As String
    Dim File_Path As String
     
    Set ran = Application.InputBox("Select Range", "Select Range", Type:=8)
     
     
    File_name = ActiveWorkbook.Name
    Path_name = ActiveWorkbook.Path & "\"
    File_Path = ThisWorkbook.Path & "\"
     
    Complete_File_name = Path_name & File_name
     
     
    '
    ' la suite du code est assez longue et n'a pas d'incidence sur le problème
    '
     
    'a la fin de la macro une fois sur 2 le mauvais fichier s'ouvre
    Shell Environ("WINDIR") & "\explorer.exe " & Path_name, vbNormalFocus
    Shell Environ("WINDIR") & "\explorer.exe " & Path_name & "test.csv", vbNormalFocus
     
    End Sub
    En vous remerciant par avance. :)

    W.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut
    Bon je me sent con, j’essaie des choses depuis ce matin et un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ran.workSheet.Activate
    semble fonctionner, désolé pour le dérangement.

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    À moins d'être bien malchanceux, tu pourrais utiliser le contrôle RefEdit pour sélectionner tes plages. Il est fait pour cela.

    P.S. Tant que le classeur est ouvert dans la même session d'Excel, c'est un objet WorkBook dans une collection WorkBooks
    Chaque feuille d'un classeur est un objet sheet dans une collection sheets. Chaque classeur a sa collection sheets.

    Par exemple, pour écrire "Président Snow" dans la feuille "Feuil1" du classeur "Alouette":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ÉcrireDansAlouette()
        workbooks("Alouette.xlsx").sheets("Feuil1").Range("a1").value =  "Président Snow"
    end sub

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut
    bonjour merci pour ces informations

    oui j'utilise déjà ce genre de choses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Excel.Application.Workbooks("Creation-commande.xls").Worksheets("Résultat du calcul")
    .Cells(ligne - 1, col).Value = titre1
    End With
    par ailleurs quelle est la différence entre "Worksheets" et "sheets"?
    et quest ce que tu entend pas "RefEdit" d’après ce que je vois c'est un peux lourd seulement pour sélectionner une plage de cellule non ?

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Sheet veut dire tout ce que Excel peut considérer comme une feuille. Une feuille de calcul, une feuille de macros Excel 4 ou Excel 5, une feuille graphique et peut-être d'autres que j'oublie

    Worksheet veut dire une feuille de calcul uniquement et rien d'autre. Donc, une worksheet c'est une sheet, alors qu'une sheet n'est pas obligatoirement une Worksheet. Tant que tu as juste des feuilles de calcul, un ou l'autre va convenir.

    Quant à utiliser RefEdit ou une inputBaox, cela reste, pour ainsi dire un "débat théologique". L'avantage du RefEdit, c'est qu'il va, à moins d'être bien malchanceux, te donner automatiquement une plage (Excellement) valide, même si l'utilisateur choisit la mauvaise plage.

    Avec une InputBox, tu dois, sous peine de plantage de programme et de mutinerie des utilisateurs, contrôler que ton utilisateur a bien entré, par exemple a2:G45 et pas a2,g45, a2 g45, a2;g45, ou toute autre réponse qui ne correspond pas à ce qu'Excel considère comme une plage de cellule. Cela t'oblige à gérer l'erreur pour éviter un plantage et de fournir un exemple à tes utilisateurs de façon qu'ils puissent donner rapidement la bonne plage et de ne pas être insultés ou inutilement stressés en cas d'erreur.

    Tu peux aussi faire du zèle et patenter un système d'options où l'utilisateur pourrait choisir un ou l'autre...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut
    Ok merci je vois a peu prés .

    Je vais sans doute devoir passer par RefEdit pour alléger mon programme je commence a avoir beaucoup de "InputBox" qui s'ouvre, je vais essayé de centraliser ça dans un seul "UserForm" faut que je vois comment ça fonctionne. Surtout que pour la petite histoire le fichier .CSV que je crée a la fin de mon programme est censé servir a l'importation de données dans une base de données et... elle ne veux pas s'importer, j'ai l'impression de faire tout ça pour rien .

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/01/2017, 20h48
  2. Réponses: 8
    Dernier message: 24/04/2015, 13h11
  3. Réponses: 2
    Dernier message: 08/09/2014, 15h24
  4. Réponses: 3
    Dernier message: 11/08/2008, 11h27
  5. [VBA] Retrouver le chemin d'accès de la base ouverte
    Par menguygw dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 12h05

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