XL 2010 [Résolu] Créer liste dans formulaire depuis fichier fermé

jmh1

XLDnaute Occasionnel
Bonjour le forum,

Je voudrai créer un formulaire VBA utilisable par plusieurs utilisateurs en même temps.
Ce formulaire devra récupérer une liste de clients et de références dans un autre fichier Excel qui restera fermé.

Pour le formulaire, je pensais passé par une macro complémentaire. est-ce la bonne solution ?

Il me semblait avoir vu une solution pour récupérer une liste dans un fichier fermé !! Impossible de retrouver quelque chose !! Quelqu'un se souvient-il avoir cela en stock ?

Est-ce que mon projet est réalisable ou suis-je trop ambitieux ?

Merci pour votre aide
 

youky(BJ)

XLDnaute Barbatruc
Bonjour
Voici un petit exemple
Bien sur il faudra modifier pas mal de trucs
Bruno
upload_2017-1-23_18-32-25.png
 

jmh1

XLDnaute Occasionnel
Bonjour Bruno,

Merci pour ta réponse.

J'ai essayé ton code en l'adaptant à mon fichier et j'ai un message d'erreur (ligne en rouge dans le code ci-dessous) :

"La formule que vous avez tapée contient une erreur"

Code:
With UserForm1
    .ComboBox1.Clear
    Chemin = "" & ThisWorkbook.Path & "\"
    Fichier = "[List_Clt_Ref.xlsx]"
    Onglet = "Liste'!"
   
        For k = 1 To 65000
            ChampALire = "R" & k & "C1"
            tx = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire)

Vois-tu où j'ai fait une erreur ?

Merci
 

jmh1

XLDnaute Occasionnel
Code:
With UserForm1
    .ComboBox1.Clear
    Chemin = "" & ThisWorkbook.Path & "\"
    Fichier = "[List_Clt_Ref.xlsx]"
    Onglet = "Liste'!"
   
        For k = 1 To 65000
            ChampALire = "R" & k & "C1"
            tx = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire)
 

youky(BJ)

XLDnaute Barbatruc
Je mets le code afin de pouvoir le copier
VB:
Sub vachercher()
Set dico = CreateObject("Scripting.Dictionary")
With UserForm1
.ComboBox1.Clear
Chemin = "'" & ThisWorkbook.Path & "\" 'le même dossier
Fichier = "[charpente.xls]" ' le nom du fichier à lire
Onglet = "Tuiles'!" 'le nom de l'onglet à lire
For k = 7 To 65000 'commencer à lire à la ligne 7
ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite
tx = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire)
  If tx = 0 Then Exit For
dico(tx) = ""
Next
a = dico.keys 'Obtient les éléments
For k = 0 To UBound(a) - 1 'trie éléments
For b = k + 1 To UBound(a)
   If a(b) < a(k) Then
   temp = a(b)
   a(b) = a(k)
   a(k) = temp
   End If
Next
Next
For k = 0 To dico.Count - 1 'mets éléments
.ComboBox1.AddItem a(k)
Next
.Show
End With
End Sub
Bruno
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Bravo d'essayer de piger c'est comme ça qu'on avance et retiens et découvre des trucs.
a=le tableau des éléments
La boucle suivante trie les éléments en ordre croissant
For k = 0 To UBound(a) - 1 'trie éléments
For b = k + 1 To UBound(a)
....jusqu'au 2 Next
Tu peux t'en passer si pas besoin de trier
Tu peux aussi te passer du dico si tu n'as pas de doublon
Voici un code ............sans dico ni trie
Possibilité de faire un combobox à 2 colonnes pour mettre tx et dx(code supplémentaire)
Bruno
VB:
Sub vachercher()
With UserForm1
.combobox1.Clear
Chemin = "'" & ThisWorkbook.Path & "\" 'le même dossier
Fichier = "[charpente.xls]" ' le nom du fichier à lire
Onglet = "Tuiles'!" 'le nom de l'onglet à lire
For k = 7 To 65000 'commencer à lire à la ligne 7
ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite
'ChampALire2 = "R" & k & "C2" 'ici on prend en col B
tx = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire)
'dx = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2)
  If tx = 0 Then Exit For
  .combobox1.AddItem tx
Next
.Show
End With
End Sub
 

jmh1

XLDnaute Occasionnel
Merci pour tes explications.

J'ai une erreur à chaque fois que je quitte l'USF, à savoir :

Erreur d'exécution 91, Variable Objet ou variable de bloc With non définie.

Pourquoi cette erreur ? dois-je définir toutes les variables ? (je n'ai pas mis Option explicit dans mon code)

Merci de ta collaboration.
 

jmh1

XLDnaute Occasionnel
Bonsoir,

Je ne pense pas qu'il me manque de "End if", ci-dessous mon code si quelqu'un voit quelque chose

Merci

Code:
Sub RecupClt()

Set dico = CreateObject("Scripting.Dictionary")

    With UfAppli
        .LbClt.Clear
        Chemin = "'" & ThisWorkbook.Path & "\" 'le même dossier
        Fichier = "[BdD_Clt_Ref.xlsx]" ' le nom du fichier à lire
        Onglet = "Liste'!" 'le nom de l'onglet à lire
       
            For k = 1 To 100 'commencer à lire à la ligne 7
                ChampALire = "R1C" & k ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite
                tx = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire)
               
                If tx = 0 Then Exit For
               
                dico(tx) = ""
               
            Next
           
        a = dico.keys 'Obtient les éléments
       
        For k = 0 To UBound(a) - 1 'trie éléments
       
        For b = k + 1 To UBound(a)
       
        If a(b) < a(k) Then
            temp = a(b)
            a(b) = a(k)
            a(k) = temp
        End If
       
        Next
       
        Next
       
        For k = 0 To dico.Count - 1 'mets éléments
            .LbClt.AddItem a(k)
        Next
       
        .Show
       
    End With
   
   
   
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Bonjour Tous,
Je ne vois rien de spécial dans le code sinon que l'on cherche les données en horizontal au lieu de vertical.
Je verrais plutôt un bug dans le code en événement combobox _Change ou en before_Close de l'user.
Tu peux toujours mettre en début de ta macro On Error Resume Next et tester pour voir mais il
serait préférable de trouver le pourquoi de l'erreur.
Ce code permet de passer outre l'erreur.
Bruno

Edit : le combo est'il bien alimenté des données demandées dans l'user avant fermeture ????
 

jmh1

XLDnaute Occasionnel
Bonjour,

J'ai essayé de mettre On error resume next et j'ai toujours le message d'erreur.

Mon fichier est une macro complémentaire, l'erreur viendrait-elle de là ?

Je n'arrive pas joindre mon fichier (apparemment, on ne peux pas joindre de macro complémentaire)
 

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 821
dernier inscrit
hybroxis