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 :

lister fichiers xls dans combobox ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut lister fichiers xls dans combobox ?
    voila , ayant toujours des idees dans mon projet de devis , j'aimerais ouvrir un userform dans lequel on verrait la liste des fichiers xls
    pour cela j'ai utilisé ca : ( c'est correcte ????)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function ChargerFichiers()
    Application.ScreenUpdating = False
    Dim DirVar As String
    'DirVar = Dir("c:\mes documents\*.xls")
    DirVar = Dir(Application.DefaultFilePath & "\*.xls")
    Do While DirVar <> ""
    UserForm1.ComboBox1.AddItem DirVar
    DirVar = Dir()
    Loop
    UserForm1.Show
    End Function
    par contre j'aimerais faire mieux :
    avoir 2 combobox :
    1 pour selectionner les devis en fonction des nom
    et l'autre , les devis appartenant a ce nom
    sachant que les fichier xls sont du type : Nom-Prenom -date.xls

    donc en 1 : avoir DUPONT Alain ou MARTIN Pierre
    et dans l'autre : 15122005 - 20122005 ... ... ...

    merci a vous

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu vas devoir parcourir ta liste et utiliser "inst(DirVar, NomDuGus) <> 0 "
    ou
    UserForm1.ComboBox1.AddItem mid(DirVar), instr(DirVar," ")), Len(DirVar) - Instr(DirVar, " ") - 8 ) ' si 8 = longueur de la date'

    Et pour ta liste 2

    Tu prends les 8 caractères de gauche des 12 caractères de droite ( huit pour la date + extension) ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.ComboBox1.AddItem left(right(DirVar,12) , 8 )
    Pour le reste, tu es apparemment bien assez grand, non ?

    A+ quand même si tu as un problème

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tiens un peu de code à étudier :


    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    '
    ' Initialise userForm Choix client
    '
    Private Sub UserForm_Initialize()
     Dim stRep As String
     Dim st As String
     Dim i As Integer
     Dim bDejaVu As Boolean
     stRep = ThisWorkbook.Path & "\devis\"
     
     st = Dir(stRep & "*.xls")
     While st <> ""
      ' PAUL-DURANT-211205.xls
      '            12345678901 '=> 11 car
      If Len(st) > 13 Then '11 + 3
        Debug.Print st;
        st = Left(st, Len(st) - 11) ' on prends que le nom
        Debug.Print " => " & st
        'Verifie si pas déjà dans liste et rajoute...
        bDejaVu = False
        For i = 0 To cbx_ChoixClient.ListCount - 1
          If cbx_ChoixClient.List(i) = st Then
            bDejaVu = True
           Exit For
          End If
        Next
        If Not bDejaVu Then cbx_ChoixClient.AddItem (st)
     
      End If
      DoEvents ' Au cas ou...
      st = Dir
       Wend
    End Sub
    '
    ' Sur sélection d'un client
    '
    Private Sub cbx_ChoixClient_Change()
      cbx_ChxDate.Clear
     
      stRep = ThisWorkbook.Path & "\devis\"
      st = Dir(stRep & cbx_ChoixClient.List(cbx_ChoixClient.ListIndex) & "*.xls")
      While st <> ""
      If Len(st) > 13 Then '11 + 3
        Debug.Print st;
        st = Left(Right(st, 10), 6) ' on prends la date..
        Debug.Print " => " & st
        cbx_ChxDate.AddItem (st)
      End If
      DoEvents ' Au cas ou...
      st = Dir
       Wend
    End Sub
     
    Private Sub cbx_ChxDate_Change()
      Dim stFichier As String
     
      stFichier = ThisWorkbook.Path & "\devis\" & cbx_ChoixClient.List(cbx_ChoixClient.ListIndex) & "-" & _
             cbx_ChxDate.List(cbx_ChxDate.ListIndex) & ".xls"
     
      MsgBox "Fichier choisi : " & vbCrLf & _
          stFichier
    End Sub
    tous cela dans une userForm, choix client avec 2 combobox :
    cbx_ChoixClient
    et
    cbx_ChxDate
    ...

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut
    MERCI MERCI

    c'est super cool , joli boulot

    une petite question technique :
    Dans mon projet (si tu te rappel) j'ai un userform ou j'indique Article - quantite et prix unitaire . En ce qui concerne la "quantitée" la valeure est renvoyé dans une cellule ( colone qtt du devis) utilise par la case Total Ht pour le calcul ( qtt*Prix unitaire = prix total HT) Malheureusement j'ai oublié que je dois specifier ( dans mon devis) la nature de la quantitée ( M² ou Ml ou M3 .....)
    Donc j'aimerais l'inscrire dans le textbox prevu pour la qtt alors ma question est de savoir si il existe un moyen de l'ignorer pour le calcule des formules car il va apparaitre dans la case qtt du devis et les cellule vont renvoyer une erreur du style : #VALEUR

    MERCI

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/02/2013, 13h37
  2. lister ses fichiers xls dans le repertoire de son choix ?
    Par alucard_xs dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/10/2007, 14h31
  3. Visualiser un fichier xls dans Excel (et non pas dans mon navigateur)
    Par n@n¤u dans le forum Général Conception Web
    Réponses: 10
    Dernier message: 10/07/2006, 08h43
  4. Copie de fichiers XLS dans une table
    Par sebvita dans le forum Oracle
    Réponses: 3
    Dernier message: 28/12/2005, 09h13
  5. Afficher le contenu d'un fichier xls dans un DBgrid
    Par bianconeri dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/09/2004, 16h35

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