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 :

[E-03] Page de paramétrage des chemins vers un répertoire (éviter les modif dans vba)


Sujet :

Macros et VBA Excel

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut [E-03] Page de paramétrage des chemins vers un répertoire (éviter les modif dans vba)
    Bonjour, je ne sais pas si ce que je veux faire est possible.

    J'ai une application Excel, avec du code VBA. A l'aide d'un UserForm, je viens charger des photos et des plans se trouvant dans un répertoire externe à mon application.

    Le chemin des photos ou des plans, sont enregistrés de la manière suivante dans mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = "C:\Documents and Settings\maintenance.u09\Bureau\Exemple\Photos\" & Reference & ".jpg"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = "C:\Documents and Settings\maintenance.u09\Bureau\Exemple\Plans\" & Reference & ".pdf"
    Sachant que référence est une référence que je récupere dans une feuille nomenclature. Ce qu'il faut donc juste que je change, c'est tout le chemin avant " & Reference & ".jpg et " & Reference & ".pdf

    Je voudrais créer un petit UserForm, me permettant de changer très simplement les chemins de mes photos et plans, sans à avoir à aller dans le code.

    Je voudrais indiquer où se trouve le nouveau chemin, avec une fenetre style windows, ou autre, si vous avez des idées?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut Chemin d'un dossier
    Si c'est le chemin que tu cherches à changer je te propose le code suivant.
    Il permet de naviguer jusqu'à l'endroit souhaité et d'y sélectionner
    un fichier quelconque (il ne s'ouvrira pas). Tu récupéres ainsi le chemin du
    dossier, chemin que tu concatènes avec le nom de la photo chargée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub selection()
    Dim chemin As String
    Dim a As String
     
    chemin = Application.GetOpenFilename _
            (FileFilter:="Tous les fichiers (*.*),*.* ", _
             Title:="Sélectionnez un fichier")
     
        a = Left(chemin, InStrRev(chemin, "\", -1))
        'récupération du chemin du dossier
        Cells(6, 1) = a
    End Sub
    Pour la personne qui remet en page le code je suis désolé mais je ne comprends pas la mise en page du code, c'est quoi les balises

  3. #3
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re, tu peux expliquer d'avantage ta solution, je ne suis pas sur de comprendre?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut
    Je reprends tes termes "Ce qu'il faut donc juste que je change, c'est tout le chemin avant " & Reference & ".jpg et " & Reference & ".pdf"
    Donc si je comprends bien ton problème il faut changer la partie suivante :
    "C:\Documents and Settings\maintenance.u09\Bureau\Exemple\Plans\"
    Et la remplacer par un autre chemin à définir.
    En utilisant le code proposé tu ouvres une fenêtre qui te permettra d'aller dans le dossier de ton choix, de récupérer le chemin de ce dossier et de l'utiliser ensuite.
    Par exemple :
    Si j'ai sur mon disque dans Mes documents un dossier nommé Photos.
    Je lance le code proposé et je navigue jusqu'à ce dossier, y sélectionne n'importe quel fichier (qui ne s'ouvrira pas) le code peut récupérer dans une variable le chemin complet de ce dossier. Ne reste plus qu'à le compléter avec tes références
    "C:\Documents and Settings\Mes documents\Photos" ajoute tes références
    Si pas compris j'essaierai d'envoyer un fichier exemple plus tard.
    Si ce n'est pas ce que tu voulais, désolé mais les explications de départ ne sont pas suffisamment claires.

    jp

  5. #5
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ah ok, cela me permet d'enregistrer le chemin dans une variable.

    C'est déja une partie de ce que je veux faire. Je vais essayer d'adapter à mon application.

    Maintenant. Imaginons que je récupère cela dans une variable, par exemple CheminPhoto.

    Comment faire ensuite pour remplacer cette variable partout où je veux la modiffier dans le code vba de l'ensmble de mon application?

    Merci

  6. #6
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re, j'ai trouvé une solution, mais il ya a tout de même un petit soucis.

    Je déclare une variable en public:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public CheminPhoto As String
    Ensuite je récupère dans cette variable le chemin, comme suit:

    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
    Private Sub Cmd_CheminPhoto_Click()
    
    Dim Fenetre As String
     
    Fenetre = Application.GetOpenFilename _
            (FileFilter:="Tous les fichiers (*.*),*.* ", _
             Title:="Sélectionnez un fichier")
        
       CheminPhoto = Left(Fenetre, InStrRev(Fenetre, "\", -1))
       
          UserForm4.Hide
       
       MsgBox ("Le Chemin a bien été modifié")
       
    End Sub
    Ensuite je réutilise cette variable pour afficher mes photos, comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MAJ(Rep As Integer)
    
    Dim chemin As String
    Dim Reference As String
    Reference = Sheets("Nomenclature").Range("D2", Sheets("Nomenclature").Cells(Rows.Count, "D").End(xlUp)).SpecialCells(xlCellTypeVisible).Value
    chemin = CheminPhoto & Reference & ".jpg"
    
    End Sub
    Le soucis c'est que sa marche si je charge ma variable au moins une fois durant le temps d'ouverture de mon classeur,

    mais je voudrais que d'une ouverture de classeur sur l'autre, le chemin reste en mémoire dans ma variable, tant que je ne lui indique pas d'autre chemin.

    Mais je veux que ma variable reste PUBLIC, mais quelle garde le chemin en mémoire jusqu'à son prochain chargement. C'est possible?

  7. #7
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,
    le plus simple dans ce cas de figure est peut-être de créer une page supplémentaire dans ton classeur que tu dédies à sauvegarder tes paramêtres et que tu peux cacher en modifiant sa propriété .visible à XlVeryHidden.

    Chaque fois que tu changes ta variable fenetre, tu sauves sa valeur dans une cellule de cette page de paramêtres.
    (Je te conseille pour aider la lisibilité de mettre par exemple en colonne A le nom de la variable et en B sa valeur)

    Quand tu ouvres ton classeur, tu initialise la variable fenêtre avec le contenu de cette cellule.

    Et hop.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  8. #8
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re, oui c'est ce que j'ai fait actuellement, mais il n'y a rien de plus propre?

    Une varibale spécifique

  9. #9
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    C'est très propre et très efficace.
    Tu peux aussi travailler avec un fichier de paramêtres, style .INI, mais c'est plus fastidieux.

    Je t'assure que si tu caches ta feuille de paramêtres, c'est vraiment un excellente solution.
    Cela revient juste à utiliser une cellule.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  10. #10
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut


    OK. Si jamais quelqu'un à tout de même un type de variable qui est capal de garder en mémoire, sinon je resterais comme je suis actuellement!

    Merci

  11. #11
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Une variable qui garde sa valeur après fermeture: cela n'existe pas.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  12. #12
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ah ba c'était ma question !

    Bon ba comme ça c'est réglé

    Allé a + et merci

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut 2 ans plus tard :)
    Salut à tous,

    Je suis tombé sur ce topic en recherchant des infos sur le stockage de variables dans des .ini ou .xml ou autres.
    Et j'ai juste eu envie de répondre à Godzestla, que si, des variables qui gardent leur valeur après la fermeture d'un classeur (je précise) ça existe. C'est même très bien documenté ici :http://xcell05.free.fr/pages/prog/hnamespace.htm

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

Discussions similaires

  1. Comment connaître le chemin vers un répertoire donné ?
    Par Bobsinglar dans le forum Struts 2
    Réponses: 4
    Dernier message: 10/10/2008, 09h17
  2. chemin vers fichiers/répertoire dans une classe
    Par Xunil dans le forum Langage
    Réponses: 5
    Dernier message: 13/04/2007, 10h14
  3. Réponses: 3
    Dernier message: 23/04/2006, 12h14
  4. chemin vers le répertoire Data
    Par funkadelic dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 02/08/2005, 15h19
  5. Des styles pour le texte et les liens dans la meme div?
    Par Donkey' Shot dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 26/01/2005, 20h03

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