FORMULAIRE EXCEL

Le
tofti01
Bonjour à tous (et bonne année !)
Je profite de ce début d'année pour remettre mes tableurs au propre et
je souhaite créer des formulaires avec listes déroulantes ; par contre
il faut que les données liées dans la plage d'entrée se trouvent soit
dans le même classeur que le formulaire, soit dans un classeur qui
soit ouvert en même temps sinon mes listes sont vides et excel ne
retrouve pas le lien.
Dans mon cas les données sont dans un autre classeur et donc il faut
que tout soit ouvert..

Y a-t-il une solution pour remédier à ce problème ?

Dans l'attente de vos conseils et vous remerciant vivement par avance

Slts
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #20893971
Bonjour, (bonne année également)

Tu peux tout à fait rester avec un formulaire ("UF" userform) dans le
cadre de ton classeur ouvert.
Il te suffit d'y ajouter une feuille que tu nommeras tables par
exemple et où tu mettra
uniquement les quelques tableaux de référence dont tu as besoin pour
alimenter ton "UF"
Cette feuille peut contenir, au choix, des copies ou des liaisons,
selon ton contexte de mise à jour des données de base.

Cordialement.

--
lSteph




On 4 jan, 16:51, tofti01
Bonjour à tous (et bonne année !)
Je profite de ce début d'année pour remettre mes tableurs au propre e t
je souhaite créer des formulaires avec listes déroulantes ; par contr e
il faut que les données liées dans la plage d'entrée se trouvent so it
dans le même classeur que le formulaire, soit dans un classeur qui
soit ouvert en même temps sinon mes listes sont vides et excel ne
retrouve pas le lien.......
Dans mon cas les données sont dans un autre classeur et donc il faut
que tout soit ouvert........

Y a-t-il une solution pour remédier à ce problème  ?

Dans l'attente de vos conseils et vous remerciant vivement par avance

Slts


tofti01
Le #20894821
On 4 jan, 17:46, LSteph
Bonjour, (bonne année également)

Tu peux tout à fait rester avec un formulaire ("UF" userform) dans le
cadre de ton classeur ouvert.
Il te suffit d'y ajouter une feuille que tu nommeras tables par
exemple et où tu mettra
uniquement  les quelques tableaux de référence dont tu as besoin po ur
alimenter ton "UF"
Cette feuille peut contenir, au choix, des copies ou des liaisons,
selon ton contexte de mise à jour des données de base.

Cordialement.

--
lSteph





Merci de la réponse,
Concrètement, je calcule des devis : J'ai une liste de matière
première avec longueur, largeur, poids, prix........, quand je
commence un devis (1 classeur, 1 fichier), le formulaire est parfait
pour sélectionner une matière, ensuite je passe par recherchev entre
autre pour récupérer toutes les données inhérentes à cette mati ère....
cela fonctionne mais j'aurai voulu faire une base
indépendante........parfait quand la base est ouverte en même temps
que le calcul.........c'est le formulaire qui m'ennuie......
Désolé je ne suis pas trop calé avec excel et c'est difficile
d'expliquer ce que je veux...........
michdenis
Le #20895151
Bonjour,

Dans le classeur où tu veux utiliser la fonction
"MaListWithADO", tu dois charger la référence
suivante dans la fenêtre de l'éditeur de code :

Barre des menus / outils / référence / tu coches :
'nécessite une référence à la bibliothèque
'Microsoft ActiveX Data Objects 2.8 Library

Dans la procédure test, tu dois adapter le chemin et
le nom du fichier de ta base de données excel ainsi
que le nom de la feuille du fichier base de données.

Dans ton formulaire, j'ai supposé que tu avais un
combobox1 dont tu voulais charger à partir de la
Colonne A:A (col=1) de ton fichier base de données.

'---------------------------------------------
Sub test()
Dim Fichier As Variant
Dim NomFeuille As String
Dim Col As Integer

NomFeuille = "Feuil1"
Col = 1 ' signifie colonne A:A
'Col = 5 signifie colonne E:E

Fichier = "C:UsersDMDocumentsSpinbutton exemple.xls"

Me.ComboBox1.List = Application.Transpose _
(MaListWithADO(Fichier, NomFeuille, Col))
End Sub
'---------------------------------------------

'Tu mets ceci dans un module Standard :
'---------------------------------------------
Function MaListWithADO(Fichier, _
NomFeuille As String, Col As Integer)
Dim Conn As ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Requete As String

Requete = "SELECT * FROM [" & NomFeuille & "$]"

'prépare les commandes ADO
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"""

Rst.Open Requete, Conn, adOpenStatic, adLockReadOnly
MaListWithADO = Rst.GetRows(, Col)
End Function







"tofti01" discussion :
Bonjour à tous (et bonne année !)
Je profite de ce début d'année pour remettre mes tableurs au propre et
je souhaite créer des formulaires avec listes déroulantes ; par contre
il faut que les données liées dans la plage d'entrée se trouvent soit
dans le même classeur que le formulaire, soit dans un classeur qui
soit ouvert en même temps sinon mes listes sont vides et excel ne
retrouve pas le lien.......
Dans mon cas les données sont dans un autre classeur et donc il faut
que tout soit ouvert........

Y a-t-il une solution pour remédier à ce problème ?

Dans l'attente de vos conseils et vous remerciant vivement par avance

Slts
michdenis
Le #20896041
Il s'est glissé une exactitude, Correction apportée
+ une procédure pour obtenir une liste dans ton
combobox en ordre croissant

'--------------------------------------------------------
Sub test()
Dim Fichier As Variant
Dim NomFeuille As String
Dim col As Integer, X()

NomFeuille = "Feuil1"
col = 0 ' signifie colonne A:A
'Col = 4 signifie colonne E:E

Fichier = "C:UsersDMDocumentsSpinbutton exemple.xls"
X = Application.Transpose(MaListWithADO(Fichier, NomFeuille, col))
X = BubbleSort(X)
Userform1.ComboBox1.List = Application.Transpose(X)
End Sub

'--------------------------------------------------------
Function MaListWithADO(Fichier, _
NomFeuille As String, col As Integer) As Variant
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String

Requete = "SELECT * FROM [" & NomFeuille & "$]"

'prépare les commandes ADO
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;IMEX=2"""

Rst.Open Requete, Conn, adOpenStatic, adLockReadOnly
MaListWithADO = Rst.GetRows(, , col)
End Function

'--------------------------------------------------------
Function BubbleSort(List()) As Variant
' Sorts the List array in ascending order
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp

First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i, 1) > List(j, 1) Then
Temp = List(j, 1)
List(j, 1) = List(i, 1)
List(i, 1) = Temp
End If
Next j
Next i
BubbleSort = List
End Function
'--------------------------------------------------------
tofti01
Le #20896431
On 4 jan, 21:52, "michdenis"
Il s'est glissé une exactitude, Correction apportée
+ une procédure pour obtenir une liste dans ton
combobox en ordre croissant

'--------------------------------------------------------
Sub test()
Dim Fichier As Variant
Dim NomFeuille As String
Dim col As Integer, X()

NomFeuille = "Feuil1"
col = 0 ' signifie colonne A:A
        'Col = 4 signifie colonne E:E

Fichier = "C:UsersDMDocumentsSpinbutton exemple.xls"
X = Application.Transpose(MaListWithADO(Fichier, NomFeuille, col))
X = BubbleSort(X)
Userform1.ComboBox1.List = Application.Transpose(X)
End Sub

'--------------------------------------------------------
Function MaListWithADO(Fichier, _
NomFeuille As String, col As Integer) As Variant
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String

 Requete = "SELECT * FROM [" & NomFeuille & "$]"

'prépare les commandes ADO
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Fichier & ";" & _
    "Extended Properties=""Excel 8.0;HDR=YES;IMEX=2"""

Rst.Open Requete, Conn, adOpenStatic, adLockReadOnly
MaListWithADO = Rst.GetRows(, , col)
End Function

'--------------------------------------------------------
Function BubbleSort(List()) As Variant
'   Sorts the List array in ascending order
    Dim First As Integer, Last As Integer
    Dim i As Integer, j As Integer
    Dim Temp

    First = LBound(List)
    Last = UBound(List)
    For i = First To Last - 1
        For j = i + 1 To Last
            If List(i, 1) > List(j, 1) Then
                Temp = List(j, 1)
                List(j, 1) = List(i, 1)
                List(i, 1) = Temp
            End If
        Next j
    Next i
BubbleSort = List
End Function
'--------------------------------------------------------  



Merci à tous pour l'intérêt que vous portez à mon problème, mais je ne
sais absolument pas programmer, et c'est donc du chinois, voir
pire......
Je vais essayer de procéder différemment, en "bidouillant".
Votre niveau de connaissance me dépasse et m'impressionne à vrai dire,
bravo à vous et merci

Slts
Mgr T. Banni
Le #20897221
en fait tu as eu de la chance, tofti
avec michdenis, tu avais droit à la télévision de base
avec LSteph, tu passais à la TNT puisqu'il te fallait un décodeur pour le
capter
Mgr T.B.

Merci à tous pour l'intérêt que vous portez à mon problème, mais >je ne
sais absolument pas programmer, et c'est donc du chinois, voir
pire......
Je vais essayer de procéder différemment, en "bidouillant".
Votre niveau de connaissance me dépasse et m'impressionne à >vrai dire,
bravo à vous et merci



Slts


LSteph
Le #20901661
Bonjour,

Tu mets une feuille dans le classeur liée avec les données dont tu as
besoin
Sinon:
Donne un exemple de tes classeurs http://www.cjoint.com

--
LSteph
''''''''''''
[ModeShootAndKickCoinCoinExPrésident].Enabled=True
[ModeAntiMgr].Enabled(Item("Banni").ExtendedMode)
[ModeDecodeur].AlwaysInService
''''''''''''



On 4 jan, 19:31, tofti01
On 4 jan, 17:46, LSteph




> Bonjour, (bonne année également)

> Tu peux tout à fait rester avec un formulaire ("UF" userform) dans le
> cadre de ton classeur ouvert.
> Il te suffit d'y ajouter une feuille que tu nommeras tables par
> exemple et où tu mettra
> uniquement  les quelques tableaux de référence dont tu as besoin pour
> alimenter ton "UF"
> Cette feuille peut contenir, au choix, des copies ou des liaisons,
> selon ton contexte de mise à jour des données de base.

> Cordialement.

> --
> lSteph

Merci de la réponse,
Concrètement, je calcule des devis : J'ai une liste de matière
première avec longueur, largeur, poids, prix........, quand je
commence un devis (1 classeur, 1 fichier), le formulaire est parfait
pour sélectionner une matière, ensuite je passe par recherchev entre
autre pour récupérer toutes les données inhérentes à cette mati ère....
cela fonctionne mais j'aurai voulu faire une base
indépendante........parfait quand la base est ouverte en même temps
que le calcul.........c'est le formulaire qui m'ennuie......
Désolé je ne suis pas trop calé avec excel et c'est difficile
d'expliquer ce que je veux...........- Masquer le texte des messages pr écédents -

- Afficher le texte des messages précédents -


Publicité
Poster une réponse
Anonyme