Userform VBA
Résolu/Fermé
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
-
15 sept. 2010 à 16:14
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 16 sept. 2010 à 17:10
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 16 sept. 2010 à 17:10
A voir également:
- Userform VBA
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
6 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
16 sept. 2010 à 10:04
16 sept. 2010 à 10:04
Bonjour,
Voilà un exemple. Sur mon Userform, j'ai une ListBox (Listbox1) et un bouton (OuvrirList). Les données à afficher sont sur la colonne G de la feuille 1 de mon classeur courant. Le code est sur l'éditeur de mon Userform. Quand je clique sur le bouton, la liste s'affiche dans ListBox1.
Tu dois pouvoir l'adapter facilement à ton cas.
Bon courage
;o)
Voilà un exemple. Sur mon Userform, j'ai une ListBox (Listbox1) et un bouton (OuvrirList). Les données à afficher sont sur la colonne G de la feuille 1 de mon classeur courant. Le code est sur l'éditeur de mon Userform. Quand je clique sur le bouton, la liste s'affiche dans ListBox1.
Tu dois pouvoir l'adapter facilement à ton cas.
Option Explicit 'Variables globales Private mTab() 'tableau de données à afficher Private ind As Long 'Indice de tableau Private Sub OuvrirList_Click() Dim ws As Worksheet 'Objet feuille Dim derlig As Long 'Dernière ligne renseignée Dim i As Long 'Indice de boucle ReDim mTab(ind) 'Initialisation du tableau ' Set ws = Worksheets(1) 'Instance de la feuille ' derlig = ws.Range("G65536").End(xlUp).Row 'Recherche de la dernière ligne de la colonne G ' 'Boucle pour parcourir la colonne, ici la colonne G For i = 2 To derlig 'On vérifie si la valeur existe déjà dans le tableau If doesExist(ws.Range("G" & i).Value) = False Then 'La valeur n'existe pas, on la met dans le tableau ReDim Preserve mTab(ind) mTab(ind) = ws.Range("G" & i).Value ind = ind + 1 End If Next i ' 'Appel de la procédure d'affichage dans une listbox AfficheList End Sub '// Procédure d'affichage du contenu du tableau dans un Listbox Sub AfficheList() Dim i As Long For i = LBound(mTab()) To UBound(mTab()) Me.ListBox1.AddItem mTab(i) Next i End Sub '//Fonction qui contrôle si la valeur existe dans le tableau '//Retour = Booléen '//Paramètre = str - la valeur à contrôler ' Private Function doesExist(ByVal str As Variant) As Boolean Dim i As Long 'On parcours le tableau For i = LBound(mTab()) To UBound(mTab()) 'Si la valeur existe dans le tableau on retourne True If mTab(i) = str Then doesExist = True 'Et on sort de la fonction Exit Function End If Next i 'Si la valeur n'est pas trouvée, on retourne False doesExist = False End Function
Bon courage
;o)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
16 sept. 2010 à 15:20
16 sept. 2010 à 15:20
Re,
Dans la userform avec les listboxes :
Dans un module nommé Module1:
J'espère que ça ira pour toi.
;o)
Dans la userform avec les listboxes :
Private Sub CommandButton1_Click() Dim Fichier As String Dim wk As Workbook Dim ws As Worksheet Fichier = Application.GetOpenFilename Set wk = Workbooks.Open(Fichier) Set ws = wk.Worksheets(1) 'A adapter Call Module1.OuvrirList("A", ws, 1) 'A adapter Call Module1.OuvrirList("B", ws, 2) 'A adapter Call Module1.OuvrirList("C", ws, 3) 'A adapter Call Module1.OuvrirList("D", ws, 4) 'A adapter End Sub
Dans un module nommé Module1:
Option Explicit 'Variables globales Private mTab() 'tableau de données à afficher Private ind As Long 'Indice de tableau Public Sub OuvrirList(ByVal col As String, ByRef mSheet As Worksheet, ByVal mList As Integer) Dim ws As Worksheet 'Objet feuille Dim derlig As Long 'Dernière ligne renseignée Dim i As Long 'Indice de boucle ind = 0 ReDim mTab(ind) 'Initialisation du tableau ' derlig = mSheet.Range(col & 65536).End(xlUp).Row 'Recherche de la dernière ligne de la colonne ' 'Boucle pour parcourir la colonne For i = 2 To derlig 'On vérifie si la valeur existe déjà dans le tableau If doesExist(mSheet.Range(col & i).Value) = False Then 'La valeur n'existe pas, on la met dans le tableau ReDim Preserve mTab(ind) mTab(ind) = mSheet.Range(col & i).Value ind = ind + 1 End If Next i ' 'Appel de la procédure d'affichage dans une listbox AfficheList (mList) End Sub '// Procédure d'affichage du contenu du tableau dans un Listbox Private Sub AfficheList(ByVal mList As Integer) Dim i As Long With UserForm1 Select Case mList Case 1 For i = LBound(mTab()) To UBound(mTab()) .ListBox1.AddItem mTab(i) Next i Case 2 For i = LBound(mTab()) To UBound(mTab()) .ListBox2.AddItem mTab(i) Next i Case 3 For i = LBound(mTab()) To UBound(mTab()) .ListBox3.AddItem mTab(i) Next i Case 4 For i = LBound(mTab()) To UBound(mTab()) .ListBox4.AddItem mTab(i) Next i End Select End With End Sub '//Fonction qui contrôle si la valeur existe dans le tableau '//Retour = Booléen '//Paramètre = str - la valeur à contrôler ' Private Function doesExist(ByVal str As Variant) As Boolean Dim i As Long 'On parcours le tableau For i = LBound(mTab()) To UBound(mTab()) 'Si la valeur existe dans le tableau on retourne True If mTab(i) = str Then doesExist = True 'Et on sort de la fonction Exit Function End If Next i 'Si la valeur n'est pas trouvée, on retourne False doesExist = False End Function
J'espère que ça ira pour toi.
;o)
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
16 sept. 2010 à 09:16
16 sept. 2010 à 09:16
petit up sur ce post :)
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
16 sept. 2010 à 10:35
16 sept. 2010 à 10:35
Merci j'essaye tout de suite. :) :)
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
Modifié par 2000Kennedy le 16/09/2010 à 10:58
Modifié par 2000Kennedy le 16/09/2010 à 10:58
(Je suis débutante en VBA)
mTab correspond à quoi svp? j'ai un retour sur mtab: "Sub ou Function non définie"
J'ai tester sur un fichier excel test. et ça marche très bien. j'ai juste un bouton et une listbox dans ma userform test.
Dans le formulaire dans lequel je souhaiterais intégrer votre code, j'ai plein de boutons et de listbox. j'ai l'impression qu'il y a conflit je ne sais pas pk. :x
mTab correspond à quoi svp? j'ai un retour sur mtab: "Sub ou Function non définie"
J'ai tester sur un fichier excel test. et ça marche très bien. j'ai juste un bouton et une listbox dans ma userform test.
Dans le formulaire dans lequel je souhaiterais intégrer votre code, j'ai plein de boutons et de listbox. j'ai l'impression qu'il y a conflit je ne sais pas pk. :x
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
16 sept. 2010 à 11:06
16 sept. 2010 à 11:06
Code adapté merci beaucoup :)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 16/09/2010 à 12:17
Modifié par Polux31 le 16/09/2010 à 12:17
Content pour toi.
Si tu as réussi à l'adapter, c'est que n'est plus tout à fait une débutante ^^ ...
Bravo et bon courage.
N'oublie pas de passer le sujet en résolu, merci
;o)
Si tu as réussi à l'adapter, c'est que n'est plus tout à fait une débutante ^^ ...
Bravo et bon courage.
N'oublie pas de passer le sujet en résolu, merci
;o)
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
16 sept. 2010 à 12:51
16 sept. 2010 à 12:51
ah oui. Par contre une question, je pensais que c'était bon mais en fait non. lol
En fait j'ai plein de colonnes dans un fichier source autre que le fichier excel sur lequel je travaille. Je voudrais que les données des colonnes du tableau de l'onglet "GCE_Globale" (il y a plusieurs colonnes) s'intègrent respectivement dans des listboxs de mon formulaire. Et c'est la que ça bloque. en gros pour le moment:
Fichier = Application.GetOpenFilename
Workbooks.Open Fichier
CheminSo.Caption = Fichier
puis je dois copier l'onglet dont j'ai besoin dans la feuille 1 du fichier de mon formulaire. Mais j'aimerais que cela se fasse sans avoir à copier de cette manière. comment est ce que je peux m'y prendre.?
merci :)
En fait j'ai plein de colonnes dans un fichier source autre que le fichier excel sur lequel je travaille. Je voudrais que les données des colonnes du tableau de l'onglet "GCE_Globale" (il y a plusieurs colonnes) s'intègrent respectivement dans des listboxs de mon formulaire. Et c'est la que ça bloque. en gros pour le moment:
Fichier = Application.GetOpenFilename
Workbooks.Open Fichier
CheminSo.Caption = Fichier
puis je dois copier l'onglet dont j'ai besoin dans la feuille 1 du fichier de mon formulaire. Mais j'aimerais que cela se fasse sans avoir à copier de cette manière. comment est ce que je peux m'y prendre.?
merci :)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
16 sept. 2010 à 13:13
16 sept. 2010 à 13:13
oula ... mon neurone a du mal à tout digérer ...
Je te dis ce que je comprends :
Tu as un fichier Excel avec un Userform. Tu as plusieurs listbox sur ce userform. Tu veux ouvrir un fichier et mettre dans les listbox les données contenues dans les colonnes du fichier que tu as ouvert. Est-ce bien cela ?
J'attends le retour pour me pencher là dessus.
Je te dis ce que je comprends :
Tu as un fichier Excel avec un Userform. Tu as plusieurs listbox sur ce userform. Tu veux ouvrir un fichier et mettre dans les listbox les données contenues dans les colonnes du fichier que tu as ouvert. Est-ce bien cela ?
J'attends le retour pour me pencher là dessus.
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
Modifié par 2000Kennedy le 16/09/2010 à 13:58
Modifié par 2000Kennedy le 16/09/2010 à 13:58
Dsl, j'étais partie manger. je ne peux pas joindre de doc ou quoi que ce soit, je suis sur un proxy qui me bloque.
J'ai en effet des colonnes A B C D dans la source par exemple
et je voudrais dans ma listbox1 avoir les données non doublonnées de la colonne A, dans ma listbox2 avoir les données non doublonnées de la colonne B etc.
L'objectif de mon formulaire est d'avoir en regard 2 listbox, 1 des listbox qui récupère les données du fichier source, et une autre listbox correspondant à un autre fichier tiré d'une BDD Access. Le but étant par la suite à l'aide d'un bouton de lié le tableau source avec la BDD et générer un tableau uniquement rempli par des codes. Ce bouton serait la pour valider les 2 libellés.
Tout un programme pour une débutante quoi. lol
J'ai en effet des colonnes A B C D dans la source par exemple
et je voudrais dans ma listbox1 avoir les données non doublonnées de la colonne A, dans ma listbox2 avoir les données non doublonnées de la colonne B etc.
L'objectif de mon formulaire est d'avoir en regard 2 listbox, 1 des listbox qui récupère les données du fichier source, et une autre listbox correspondant à un autre fichier tiré d'une BDD Access. Le but étant par la suite à l'aide d'un bouton de lié le tableau source avec la BDD et générer un tableau uniquement rempli par des codes. Ce bouton serait la pour valider les 2 libellés.
Tout un programme pour une débutante quoi. lol
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
16 sept. 2010 à 14:09
16 sept. 2010 à 14:09
Ok mon neurone digère mieux.
Je te passe ça dans l'aprem. Je te donne un exemple et tu adaptes à ton zinzin. Ça te va ?
Je te passe ça dans l'aprem. Je te donne un exemple et tu adaptes à ton zinzin. Ça te va ?
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
16 sept. 2010 à 16:18
16 sept. 2010 à 16:18
Merci Beaucoup :D Cha marche :) Bonne journée! :) C'est la deuxième fois que tu m'aides sur ce fofo ! ;)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
16 sept. 2010 à 17:10
16 sept. 2010 à 17:10
De rien, j'essaie de faire de mon mieux ^^
Bonne continuation et bon courage.
;o)
Bonne continuation et bon courage.
;o)