Extraction de données vers un userform

Extraction de données vers un userform - VB/VBA/VBS - Programmation

Marsh Posté le 09-06-2005 à 12:34:23    

Bonjour à tous...
 
Nouvel utilisateur de VBA excel j'aimerais savoir comment extraire des données d'une feuille et de les présenter dans un userform.
 
Pour le moment mon userform ne me permet que de charger l'image correspondante à la valeur de la liste (ListBox1) et j'aimerais pouvoir charger dans des boites (à créer !!!) de l'userform les valeurs de la base de données correspondantes à cette même sélection de la listbox1
 
 
Exemple :  
         A                    B           C             D
Titre de la chanson      Format      Genre    Chanteur(s)
 
1    Candy Shop              mp3         Rap        50 Cent
2       Exodus               wma        Reggae     Bob Marley
 
 
etc.
 
Le code se présente de cette manière :
 
Private Sub UserForm_non_modal()
 
End Sub
 
 
Private Sub UserForm_Initialize()
 
Dim W As Double
 
' 1024 pixels = 768 points
    W = Application.UsableWidth / 768
    Me.Zoom = CInt(W * 100)
    Me.Width = Me.Width * W
    Me.Height = Me.Height * W
 
' Disparition de la fenêtre Excel
 
    Application.Visible = False
 
' Initialisation de la liste de la ListBox (a améliorer je suppose!!!)
 
    ListBox1.RowSource = "Feuill1!A1:A200" & ActiveSheet.UsedRange.Rows.Count
 
' Sélection de l'index 1 de la liste
 
    ListBox1.ListIndex = 0
 
End Sub
 
Private Sub ListBox1_Change()
 
    nom = Userform.ListBox1.Value
         
    On Error Resume Next
     
    Fichier = ActiveWorkbook.Path & "\" & nom & ".jpg"
     
    Userform.Image1.Picture = LoadPicture(Fichier)
     
 
End Sub
 
Private Sub UserForm_QueryClose(cancel As Integer, closemode As Integer)
 
'Apparition de la fenêtre Excel
 
    Application.Visible = True
 
End Sub
 
 
J'aimerais aussi des conseils pour executer cette macro dès l'ouverture de ce classeur , faire apparaitre une msgbox avec oui et non me demandant si je veux ajouter des titres a la feuille de données : si oui, rejoindre la première ligne vide de la première colonne de la feuille de données ou non , executer l'userform.
Enfin J'aimerais masquer la feuille contenant les données ou de les protégées de modification par un mot de passe...
 
Merci d'avance à celui qui essayera de m'aider
 

Reply

Marsh Posté le 09-06-2005 à 12:34:23   

Reply

Marsh Posté le 09-06-2005 à 15:12:29    

Citation :

des conseils pour executer cette macro dès l'ouverture de ce classeur


 
à mettre dans thisworkbook :
 
sub Workbook_open
   ...
end sub
 
 
 

Citation :

faire apparaitre une msgbox avec oui et non me demandant si je veux ajouter des titres a la feuille de données :


 
tape msgbox dans l'aide tu trouvera ton bonheur
 

Citation :

rejoindre la première ligne vide de la première colonne de la feuille de données


 
De même avec SpecialCells et XlCellTypeLastCell
 
 

Citation :

executer l'userform


 
Userform.show ??
 

Citation :

Enfin J'aimerais masquer la feuille contenant les données ou de les protégées de modification par un mot de passe...


 
Outil -> Protection -> Proteger la feuille
 
 

Citation :

Merci d'avance à celui qui essayera de m'aider


 
De rien  ... :)

Reply

Marsh Posté le 09-06-2005 à 17:07:59    

Dois je recopier le code de mon userform dans le code de "this workbook ???? Y'a-t-il des changements a faire dans mon code original car l'image et les données de la listbox1 ne s'affichent plus????
En ce qui concerne le masquage de la feuille ainsi que la protection je cherche a le mettre en place dans VBA...
Enfin, pourriez vous m'expliquer comment mettre en forme le msgbox1 recherché ???? Cà doit être du genre If ....then...goto... non ????
Pour finir est-il pôssible d'améliorer cette rowsource afin que seules les cellueles non vides soient présentes dans la listbox1 ????
 
ListBox1.RowSource = "Feuill1!A1:A200" & ActiveSheet.UsedRange.Rows.Count  
 
 
 
 
 
 
 

Reply

Marsh Posté le 09-06-2005 à 17:31:54    

t'es pas obligé de tout recopier, tu peut surement y faire appel du style  
 
sub Workbook_open  
   call LeNomDeTaMacro
end sub  
 
pour programmer la protection de la feuille tu peux appliquer la méthode Potect à un objet Chart, Workbook ou Worksheet
 
et pour masquer ya la méthode Visible, et la tu peux l'appliquer à plein d'objet (cf l'aide)
 
Pour ta listBox c'est surement possible de rentre une plage avec selection multiple, mais je sais pas trop comment ca fonctionne
 
mais je trouve que le plus mieux est de parcourir toi même la plage de donnée, et de rentrer les élément un a un
c'est ptet pas ce qu'il ya de plus jolie mais au moin ca t'apprend un peu d'algo
 
ca donne un truc du genre
 
dim Ligne as integer
dim Col   as integer
 
Ligne = 1
Colonne = 1
 
for Ligne=1 to 100
   If Cells(Ligne, Col)<> "" then
      Listbox1.add blablabla ...
    end if
next
 
 
 
 
       
 
 

Reply

Marsh Posté le 09-06-2005 à 20:27:12    

Auto Execution de l'userform marche bien...
 
Finalement j'ai opté pour la protection du classeur avec un mot de passe
 
En ce qui concerne le masquage de la feuill1 cela génère une erreur : c'est la seule feuille de mon classeur..peut être est ce du à ça...
 
Enfin, quand je ferme l'userform, mon classeur n'est plus en plein écran dans la fenêtre excel...dois-je réactiver la feuill1 dans le code ???
 
Pour ce qui est de rejoindre la dernière cellule non vide de ma colonne je n'ai pas encore testé
 
Merci
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed