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 :

inserer une variable a partir d'une cellule dans mon code VBA / EXCEL 2013 [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 1
    Par défaut inserer une variable a partir d'une cellule dans mon code VBA / EXCEL 2013
    Bonjour

    Je veux faire en sorte que la cellule F4 de ma feuille devienne une variable dans mon code VBA

    Ce qui donnerait normalement genre fichier = " *ma_cellule.xlsx"

    le code recherche tout les fichiers d'un dossier et copie les cellule demander dans une page voulu, et cela fonctionne très bien.

    Ma cellule F4 comporte une liste déroulante contenant les numéro de mes clients
    les fichiers son des factures et se nommes exemple: 140001-20001.xlsx

    Mais moi j'ai besoin qu'il prenne " *F4.xlsx pour qu'il tri afin de récupérer les fichiers spécifique.

    J'ai essayer de plusieurs manière et j'y arrive pas.

    Merci à l'avance.

    Voici le 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
    44
    45
    46
    47
    48
    49
    50
    Option Explicit
    Sub Creer_Recapitulatif()
    Dim Obj, RepP, Fichier, F1
    Dim i As Integer, Lig As Long
    Dim Chemin As String
    Dim WksDest As Worksheet
    Dim wlSource As Worksheet
    Dim TB
     
    ' Vider la page
    Dim a
    With ThisWorkbook.Sheets(1)
    a = .Range("A1").SpecialCells(xlCellTypeLastCell).Address
    With Range("A5:" & a)
    .ClearContents
    .Interior.Pattern = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    End With
    End With
    'Fin vidé la page
     
    Application.ScreenUpdating = False
    TB = Array(" ", "d4", "C5", "K2", "j4", "C6", "C7", "K32", "k33", "k35", "k36", "k37", "k38")
    Chemin = "D:\smc\Factures\" 'Adapter le répertoire
    Set WksDest = ThisWorkbook.Sheets(1) 'feuille de destination
    Lig = WksDest.Cells(Rows.Count, 1).End(xlUp).Row + 1 '1ère ligne où commencer les transferts
    Set Obj = CreateObject("Scripting.FileSystemObject")
    Set RepP = Obj.GetFolder(Chemin)
    Set Fichier = RepP.Files
    For Each F1 In Fichier 'boucle sur tout les fichiers du répertoire
    If F1 Like "*" Then ' recherche tout les fichiers a partir de l'étoile "*"
    Workbooks.Open F1
    'Le fichier qu'ont vient d'ouvrir est toujours le fichier actif.
    With ActiveWorkbook.Sheets(1) 'Travail avec l'index feuille et pas le nom
    For i = 1 To UBound(TB)
    WksDest.Cells(Lig, i) = .Range(TB(i))
    Next i
    'Copie pour avoir aussi le format
    '.Range("K9").Copy WksDest.Cells(Lig, i)
    'Ferme le classeur sans sauver et sans message.
    ActiveWorkbook.Close False
    Lig = Lig + 1
    End With
    End If
    Next F1
    Set RepP = Nothing
    Set Obj = Nothing
    End Sub

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Par défaut
    Bonjour

    En nommant la cellule F4 (Ex :"toto"), et en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomFichier= " *" & range("toto") & ".xlsx"
    , ça devrait le faire, non?

    Cordialement

  3. #3
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Une autre solution, tout aussi bonne que celle de piotr76

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MyValue
    MyValue = ThisWorkbook.Worksheets("MaFeuille").Cells(X, Y)
    Avec X et Y les coordonnées de F4.

    Même si j'aurais tendance à nommer la cellule, et à utiliser le Range, comme le fait piotr76. Cette solution n'est pas mal si tu veux faire une boucle sur des cellules.

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

Discussions similaires

  1. construire une liste a partir d'une variable string
    Par Palsajicoco dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 12/07/2011, 10h05
  2. gerer une variable a partir d'une chaine de caractere ?
    Par giuseppe2 dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/08/2010, 14h01
  3. Creer un nom de variable a partir d'une variable
    Par fuyo2004 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/06/2009, 16h14
  4. Instancier une class a partire d'une variable string
    Par Assimil dans le forum ASP.NET
    Réponses: 7
    Dernier message: 25/06/2008, 16h47
  5. [Smarty] Récuper une variable php à partir d'une variable Smarty
    Par SPKlls dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/04/2008, 17h40

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