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 :

Paramétrage du chemin avec nom d'utilisateur variable [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Par défaut Paramétrage du chemin avec nom d'utilisateur variable
    Bonjour à tous,

    Je travail sur un drive (en l’occurrence OneDrive) et j'aimerai pouvoir créer un module qui définit le nom d'utilisateur du chemin afin de pouvoir automatiser la portabilité de mes modules.
    Avec un exemple ça devrait être plus clair:

    - Voici un module qui créer une structure de dossier de réception de fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Structuredossier()
     
    Call Module33.NomUtilisateur
     
    MkDir "C:\Users\" & NomUtilisateur & "\OneDrive\Data\Chaîne detraitement"
     
    End Sub
    Le module 33 est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub NomUtilisateur()
     
    Dim NomUtilisateur As String
        NomUtilisateur = "Prénom nom" 'Prénom et Nom varient en fonction de l'utilisateur
     
    End Sub
    Quand je lance mon module Structuredossier il me surligne NomUtilisateur sur la ligne -> MkDir "C:\Users\" & NomUtilisateur & "\OneDrive\Data\Chaîne detraitement" avec l'erreur Fonction ou variable attendue.

    Clairement je m'y prends mal à priori. Mais je me suis déjà pas mal creuser la tête pour essayer de modifier mes chemins dans mes différents modules afin de pouvoir avec juste une simple manipulation en amont changer le nom d'utilisateur dans ces chemins.

    Quelqu'un a-t-il de comment je pourrais procéder ?

  2. #2
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Par défaut Précision
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Structuredossier()
     
    Dim NomUtilisateur As String
        NomUtilisateur = "Prénom Nom"
     
    MkDir "C:\Users\" & NomUtilisateur & "\OneDrive\Data\Chaîne detraitement"
    Ça fonctionne comme ça... Il faut que je trouve un moyen d'appeler le paramétrage Dim dans tous mes modules, est-ce possible ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    as-tu essayé de récupérer le nom d'utilisateur via la fonction Environ() ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VBA.Environ("USERNAME")

  4. #4
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Par défaut Environ
    Non je ne connaissais pas l'existence de cette fonction, j'essaye de me familiariser avec, merci

    Je dois insérer cette fonction dans tous mes modules ?

  5. #5
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Par défaut Résolu
    Merci joe.levrai, j'ai compris comment cela fonctionnait et à priori ça marche bien
    Bonne journée à toi !

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    je ne sais pas, je ne connais pas ton projet

    soit tu le changes lors d'un besoin unitaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MkDir "C:\Users\" & VBA.Environ("USERNAME") & "\OneDrive\Data\Chaîne detraitement"

    soit, en cas d'enchainement de procédures, utiliser une variable publique qui va une seule fois associer ta variable au nom de l'utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public MonUser As String
     
    Sub MonUtilisateur()
    MonUser = VBA.Environ("USERNAME")
    End Sub
    Tu appelles la procédure MonUtilisateur UNE SEULE FOIS, au tout début du traitement de ton enchainement de procédures, et après tu utilises la variable MonUser partout sans devoir modifier par la suite tes procédures appelées

  7. #7
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Par défaut Erreur sur la suite du code
    Bon ça marche bien pour mon module qui crée la structure des dossiers.

    En revanche, y'a une erreur sur "l'enregistrement sous" dans cette macro:

    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
    Sub ProcessFilesindividus()
        Dim File As String, Pathname As String, Pathsave As String
        Dim wb As Workbook
        Application.DisplayAlerts = False
     
        Pathname = "C:\Users\" & VBA.Environ("USERNAME") & "\OneDrive\Data\Chaîne de traitement\Table individus\Chaîne 300 pour la création de la base individus\Fichiers copiés\"
        Pathsave = "C:\Users\" & VBA.Environ("USERNAME") & "\OneDrive\Data\Chaîne de traitement\Table individus\Fichiers traités\"
        File = Dir(Pathname & "*.xls")
        Do While File <> ""
            Set wb = Workbooks.Open(Pathname & File)
            Macromiseenformeindividus wb
            ActiveWorkbook.SaveAs Filename:=Pathsave & ActiveWorkbook.Name 
            wb.Close
            File = Dir()
        Loop
    End Sub
    L'erreur est sur ActiveWorkbook.SaveAs avec comme erreur "La méthode 'SaveAs' de l'objet '_Workbook' a échoué. Y'a t-il une incompatibilité de VBA.Environ avec le "ActiveWorkbook.SaveAs Filename:=" ?

  8. #8
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Par défaut Erreur de ma part
    Bon en fait, c'est une erreur grossière de ma part, le chemin Pathsave n'étati tout simplement pas bon... Je m'en excuse.

    Cela marche très bien, encore emrci joe.levrai !

  9. #9
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    environ("UserProfile") & "\OneDrive\Data\Chaîne de traitement\Table individus\Chaîne 300 pour la création de la base individus\Fichiers copiés\"

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

Discussions similaires

  1. SSIS - Requete sql avec nom de table variable
    Par IcedLand dans le forum Développement
    Réponses: 3
    Dernier message: 03/12/2007, 11h55
  2. SSIS - Requete sql avec nom de table variable
    Par IcedLand dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/12/2007, 11h55
  3. Requête avec nom de champ "variable"
    Par Pgs dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2007, 10h25
  4. [DOM4J] récupérer chemin avec nom attribut
    Par jenny1985 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 12/07/2007, 17h24
  5. PC bloqué avec nom d'utilisateur introuvable
    Par katia10 dans le forum Windows XP
    Réponses: 5
    Dernier message: 24/06/2007, 14h50

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