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 :

Utiliser la valeur d'une cellule comme variable dans VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut Utiliser la valeur d'une cellule comme variable dans VBA
    Bonjour,

    J'ai un code qui fonctionne très bien mais est statique. Ce code liste sur une cellule les fichier se trouvant dans un dossier.

    Le problème est que le chemin du dossier est dans le code, et cela le rend statique. Je voudrais que le chemin du dossier soit dans la cellule A3, de telle sorte que l'utilisateur puisse le changer à volonté.

    Merci d'avance pour vos contribution.


    Ci-dessous 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Sub ListeFichiers()
        Dim Dossier
     
    '    Dossier = "C:\Users\Rasta\Bomboclat"   'Avec ça tout fonctionne bien, mais c'est statique!
        Dossier = Cells(3, 1).Value    '=>>>>>>> Le problème est ici, ça ne marche pas.
     
        ListeFichiers Dossier
     
        Columns("E:F").AutoFit
        MsgBox "C'est prêt!!!", vbInformation, "RastaBomboclat"
    End Sub
     
    Sub ListeFichiers(Repertoire As String)
        '
        'Nécessite d'activer la référence "Microsoft Scripting RunTime"
        '
        Dim FSO As Scripting.FileSystemObject
        Dim SourceFolder As Scripting.Folder
        Dim SubFolder As Scripting.Folder
        Dim FileItem As Scripting.File
        Dim i As Long
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = FSO.GetFolder(Repertoire)
     
        i = Range("F10000").End(xlUp).Row + 1
     
        For Each FileItem In SourceFolder.Files
            Cells(i, 6) = FileItem.Name
            ActiveSheet.Hyperlinks.Add anchor:=Cells(i, 6), _
                Address:=FileItem.ParentFolder & "\" & FileItem.Name
            Cells(i, 7) = FileItem.Type
     
            i = i + 1
     
        Next FileItem
     
        For Each SubFolder In SourceFolder.SubFolders
            ListeFichiers SubFolder.Path
        Next SubFolder
     
    End Sub

  2. #2
    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,

    tu travailles sur la feuille active ici, c'est peut-être le problème ?

    Indique le nom de la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("NomDeLaFeuille").Cells(3,1).Value
    idéalement on indique également le classeur

    idem pour la ligne du dessous avec Columns, ainsi que dans la procédure ListeFichiers

  3. #3
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Bonjour Joe,
    Merci de ta réponse.


    Je n'ai pas encore tester ta solution, et elle me parrait intérressante puisque j'y avais pensé. Mais il reste apparemment statique, puisque mon classeur a N feuilles. Je vais appliquer cette macro à chacunne des feuilles à l'aide d'un bouton (shape), auquel j'ai assigné ladite macro. Porrais-tu me proposer un code qui prend la valeur d'une cellule de l'ActiveSheet?

    Je teste ta solution tout de suite et essaie de l'adapter avec un ActiveSheet.
    Merci encore!

  4. #4
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Malheureusement, ça ne marche pas comme je le souhaite.

    S'il y a d'autres solution, je suis toujours preneur...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    "Ca marche pas", c'est très vague comme explication, peux-tu détailler ? (comportement observé vs comportement souhaité, message d'erreur ect ...).
    Et passer par l'objet Range sera probablement plus lisible que l'objet Cell:
    Range("A3") <==> Cells(3, 1)

    Enfin, pense à typer tes variable, ca t'évitera d'écrire des bêtises:

  6. #6
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour,

    Le bouton sur la feuille "resultat_scan" te permettra de choisir un répertoire à scanner.
    Le bouton sur la feuille "resultat_scan_2" te permettra de scanner le répertoire que tu auras précisément en amont précisé en "A1".

    A toi de voir ce que tu veux.

    Si j'ai bien compris tu veux utiliser le code sur plusieurs feuilles. J'ai donc utilisé "activesheet". A toi de dupliquer la feuille contenant le bouton qui t’intéresse.

    Je te laisse également adapter le code. Il correspondait à mes besoins à un moment donné.

    Enfin dans la macro il serait bon de créer des vérifications avant de lancer le scan (répertoire à scanner existant ? par exemple).

    Teste et dis-nous.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Alex020181 Alex020181 merci de ta réponse. Je vais la tester tout de suite.

  8. #8
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Alex020181 Merci encore pour ta contribution. C'est exactement ce que je voulais, et même plus, puisqu'il y a 2 versions.

    Tu as assuré à Max!

    Pour moi c'est : RÉSOLU !
    Je suis sur que ça fera le bonheur de plusieurs autres à la recherche de la même chose, et qu'il penseront à mettre un bouton vert.

  9. #9
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Content que ça te plaise.

    Tu as juste à dupliquer x fois la feuille contenant le bouton que tu veux et à adapter le code pour mettre la liste dans les colonnes que tu veux.

    PS: dans ta signature "erreurs" ne prend pas d'accent pour info

  10. #10
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Citation Envoyé par Alex020181 Voir le message
    PS: dans ta signature "erreurs" ne prend pas d'accent pour info
    J'ai essayé de le changer, mais je ne retrouve plus comment faire . Je ne vais pas ouvrir une discussion pour ça... Mais je le corrigerai quand ...

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

Discussions similaires

  1. Utiliser une valeur en % dans une cellule comme variable d'une macro
    Par YanLeFlan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2018, 15h07
  2. [LibreOffice][Tableur] Utiliser la valeur d'une cellule comme nom de feuille dans une formule
    Par Livesecours dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 02/11/2016, 16h58
  3. [XL-2007] Utiliser la valeur d'une cellule comme numéro de ligne
    Par DiesIrae dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/08/2009, 14h04
  4. Utiliser le contenu d'une cellule comme opérateur
    Par chico7878 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2008, 18h11
  5. Utiliser la valeur d'une liste comme paramètre
    Par eudeline91 dans le forum IHM
    Réponses: 0
    Dernier message: 10/06/2008, 11h03

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