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 :

Problème de code : emplacement de fichiers


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut Problème de code : emplacement de fichiers
    Bonjour,

    Je souhaiterais avoir un petit coup de pouce : je travaille actuellement sur un petit logiciel en VBA sous excel 2007. Ce petit logiciel ne sert qu'à faire l'interface avec l'utilisateur, et son but est de pouvoir d'un simple clic sur un bouton de ce userform ouvrir la page excel correspondante. Jusque la rien de compliqué =)
    Cependant me voilà devant un problème de taille, vu que je ne suis pas expert en programmation. Je souhaiterais que mon userform puisse ouvrir les pages excels quelque soit l'utilisateur, le pc ou l'endroit où il est mis; je m'explique :
    Normalement, la commande pour ouvrir à partir d'un bouton d'un userform est du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks.Open Filename:="C:\Users\Maxou\Desktop\Metrologie\Données\DPI_800.xls" 
    Sheets("Index").Select
    Cela fonctionne à merveille. Cependant, si je donne le dossier Metrologie à quelqu'un et qu'il le met sur son pc, forcément son nom d'utilisateur ne serap as le meme, et le lieu d'ouverture du fichier aussi. Jespère que je ne suis pas trop flou ^^
    Je souhaiterais avoir de l'aide sur ce point, car je souhaite de manière relativement simple pouvoir avoir un code qui irait pourquoi pas chercher automatique le nom d'utilisateur ou autre.
    Est-ce possible d'avoir un code qui va chercher systématiquement dans le dossier "Metrologie" par exemple? car en fct du lieu de ce dossier, l'exection ne marche bien evidemment plus.
    Bref merci de votre aide et bnne aprem midi à tous !! =P

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Tu veux donner la possibilité à l'utilisateur de choisir le fichier?

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Tu peux utiliser la variable environnement de l'utilisateur connecté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:=Environ("USERPROFILE") & "\Desktop\Metrologie\Données\DPI_800.xls"

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Donner la possibilité à l'utilisateur de choisir soit le fichier ou le répertoire serait peut être la meilleur solution.

  5. #5
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    Bonjour, je te remercie de m'accorder de ton temps

    Et bien je veux que l'utilisateur ne sois pas contraint de mettre le dossier contenant touts les fichiers excels et l'executif à un endroit précis, par exemple obligatoirement sur le bureau.

    De plus, les codes sont pour mon pc c-a-d mon profil d'utilisateur c'est maxou donc les liens sont du type :

    "C:\Users\Maxou\Desktop\Metrologie\Données\DPI_800.xls"

    Tu me comprends? ^^

    merci de ton temps !

    EDIT : je veux dire par la que peut être si je file mon dossier à quelqu'un d'autre, les liens comme celui ci dessus ne marcheront bien evidemment pas

    car peut être que lui devrait avoir ce lien :

    "C:\Users\Rene\Desktop\AAAA\Metrologie\Données\DPI_800.xls"

  6. #6
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    Merci !!

    Mais cela signifie donc qu'il faut impérativement que l'utilisateur mette le dossier sur son bureau?

    Merci beaucoup de votre temps et de votre rapidité

  7. #7
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    Oui je pense. mais je n'ai aucune idée sur comment le faire. Car jusque là, j'affecte manuellement chaque bouton de mon userform avec un ficher excel, et le lien qui lui est associé =S

    Est-ce difficile ce que tu proposes?

    Merci à toi =)

  8. #8
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Une solution avec fildialog

    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
    Sub Ourvrir()
     
    Dim file As FileDialog
    Dim strFichier As String
    Dim str() As String
     
    Set file = Application.FileDialog(msoFileDialogFilePicker)
     
    'Creation des filtres
    file.Filters.Clear
    file.Filters.Add "Fichier Excel", "*.xls"
     
    'Si pas de sélection sortir de la procedure
    If file.Show = False Then
        Exit Sub
    End If
     
    'file.SelectedItems(1) => Retourne le chemin complet du fichier (ou du premier fichier de la selection)
     
    str = Split(file.SelectedItems(1), "\")
    strFichier = str(UBound(str))
     
    'StrFichier => Nom du fichier
    MsgBox strFichier
     
    End Sub

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une autre proposition (avec choix du fichier à ouvrir)
    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
    Dim Wbk As Workbook
    Dim Fichier
     
    Fichier = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
    'Si l'utilisateur n'a pas annulé le choix du fichier
    If Fichier <> False Then
        'Dans Wbk on a le fichier ouvert
        Set Wbk = Workbooks.Open(Fichier)
        'Par exemple on affiche la valeur de A1 de la feuille Index de notre fichier qu'on vient d'ouvrir
        MsgBox Wbk.Worksheets("Index").Range("A1")
     
        'Autres traitements.....
        '....
        'On ferme notre fichier qu'on a ouvert sans sauvegarder
        Wbk.Close False
        'On écrase la variable Wbk
        Set Wbk = Nothing
    End If
    Trop d'informations tue l'information.

  10. #10
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    JE te remercie !

    Cependant, le code tel que tu l'as ecrit ci-dessus est déjà opérationnel?

    Désolé, mais je ne suis pas un professionnel niveau codage =) je m'initie, tant bien que mal =)

    Je reformule ^^

    Comment utiliser vos codes, je m'explique : en ce qui concerne le sub Ouvrir, comment dois-je utiliser ta fonction?

    de cette facon "Ouvrir( xxx/xxxx/xxxx/xxx.xls"?

    Merci beaucoup

  11. #11
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Comme cela

    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
    Sub Ouvrir()
     
    Dim file As FileDialog
    Dim strFichier As String
    Dim str() As String
     
    Set file = Application.FileDialog(msoFileDialogFilePicker)
     
    'Creation des filtres
    file.Filters.Clear
    file.Filters.Add "Fichier Excel", "*.xls"
     
    'Si pas de sélection sortir de la procedure
    If file.Show = False Then
        Exit Sub
    End If
     
     
    Workbooks.Open Filename:= file.SelectedItems(1)
     
     
    End Sub

  12. #12
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    Et si j'ai bien compris, je copie ce code pour chaque bouton?

    Merci beaucoup !

  13. #13
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Afin de ne pas repeter ce code sur tous les boutons tu peux en faire une fonction

    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
    Function Ouvrir() As String
     
    Dim file As FileDialog
    Dim str() As String
     
    Set file = Application.FileDialog(msoFileDialogFilePicker)
     
    'Creation des filtres
    file.Filters.Clear
    file.Filters.Add "Fichier Excel", "*.xls"
     
    'Si pas de sélection sortir de la procedure
    If file.Show = False Then
        Exit Function
    End If
     
    Ouvrir = file.SelectedItems(1)
     
    End Function
    Le code a mettre dans les boutons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
    Dim strFichier As String
    strFichier = Ouvrir()
    If strFichier <> "" Then Workbooks.Open Filename:=strFichier
    End Sub

  14. #14
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    Merci jfontaine pour ta patience et ta pertinence !!

    Il faut donc que je mette le nom de mon fichier au sein du code de chaque bouton?
    Si oui, à quel endroit? dans tes "" rouges? et c'est du type par exemple DPI800.xls que je dois mettre?

    Merci beaucoup beaucoup !

    EDIT: Merci aussi mercatoq !

  15. #15
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour pouvoir t'aider, mets ici ton code dans lequel tu as mis le chemin du fichier à ouvrir en dure pour qu'on puisse l'adapter.
    Reporte aussi la différence pour chaque Boutton

  16. #16
    Membre régulier
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    Suivant tes conseils, je m'execute =)
    VOici le code que je met sur un module :
    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
    -------------------------------------
    Function Ouvrir() As String
     
    Dim file As FileDialog
    Dim str() As String
     
    Set file = Application.FileDialog(msoFileDialogFilePicker)
     
    'Creation des filtres
    file.Filters.Clear
    file.Filters.Add "Fichier Excel", "*.xls"
     
    'Si pas de sélection sortir de la procedure
    If file.Show = False Then
        Exit Function
    End If
     
    Ouvrir = file.SelectedItems(1)
     
    End Function
    -----------------------------------------
     
    Ensuite, sur mon userform, je dispose de nombreux boutons , qui doivent ouvrir des fichiers excels correspondant à l'intitulé du bouton; voici deux exemple; mes fichiers excel se prénomme DPI100.xls et DPI200.xls
    voici leur code respectif :
    ---------------------------
    Private Sub CommandButton1_Click()
    Dim Ctrfichier As String
    strFichier = Ouvrir()
    If strFichier <> "DPI100" Then Workbooks.Open Filename:=strFichier
    End Sub
    --------------------
    Private Sub CommandButton2_Click()
    Dim Ctrfichier As String
    strFichier = Ouvrir()
    If strFichier <> "DPI200" Then Workbooks.Open Filename:=strFichier
    End Sub
    --------------------
    Est-ce correct? SI j'ai bien compris, il ne faut plus dire où se situe les fichiers ( ici il se trouve tel que : C:\Users\Maxou\Desktop\EDF-Metrologie\Données\Données finies\DPI100.xls )
    Suis près de la vérité ou alors totalement hors du coup? xD

    Merci beaucoup de votre pédagogie et de votre temps !

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

Discussions similaires

  1. [XL-2003] Problème avec code sauvegarde fichier
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/11/2010, 12h59
  2. Script Upload problème d'emplacement du fichier uploadé
    Par Phoenix0007 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 7
    Dernier message: 09/10/2007, 19h52
  3. [.NET C# VS05] Problème d'emplacement de fichier
    Par NeraOne dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/05/2007, 17h32
  4. problème d'acces concurentiel à un fichier
    Par Theoden dans le forum MFC
    Réponses: 2
    Dernier message: 04/03/2004, 09h49
  5. Problème d'E.S. sur fichier avec open
    Par Bubonik software dans le forum C
    Réponses: 6
    Dernier message: 04/02/2004, 19h42

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