utiliser des variables définis dans userform sur vlookup  Sujet résolu

Pour toutes vos questions à propos d'Excel ...

utiliser des variables définis dans userform sur vlookup

Messagepar sylv1 » 03 Fév 2012, 16:07

Bonjour,

j'ai un problème vba, suis débutant en programmation:

Public nbrofficer As Long
Public numerotelephone As String
Public initial As String
Public listeofficer As Range

Sub generateur()

Application.Workbooks("fax_gen.xls").Worksheets("officer").Activate
'ici je selection le nombre d'employer listé sur la feuille officer de mon doc excell
nbrofficer = Application.Workbooks("fax_gen.xls").Worksheets("officer").Range("A2", Range("A2").End(xlDown)).Count

i = 1
For i = 1 To nbrofficer
UserForm1.combobox_officer.AddItem Cells(i + 1, 1)
Next
' ici je peuple ma combo box avec les initials des employés sur mon userform de la colonne A

UserForm1.Show
' à ce niveau j'a rempli ma combo box avec les initial des employés
' ci dessous ce trouve le sub de mon user form ou il y a un bouton de commande ok ainsi que ma combo box

Public Sub bouton_OK_Click()
initial = UserForm1.combobox_officer.Value
UserForm1.Hide
End Sub

' je suppose que en fonction de ce que j'ai choisi dans ma combo box, ma variable initial va prendre la valeur de la chaine de caractere de la combobox
' ensuite je reviens sur ma procédure sub generateur je veux utilisé la valeur de la variable initial enfin de déterminer le numéro de téléphone de l'employé qui se trouve dans la collone 2 - l'erreur ressorti est run time error '5'
'invalid procedure call or argument (c'est callé sur la ligne de code listeofficer....

listeofficer = Application.Workbooks("fax_gen.xls").Worksheets("officer").Range("A2", Range("B2").End(xlDown))
numerotelephone = Application.WorksheetFunction.VLookup(initial, listeofficer, 2, False).Value

msgbox numerotelephone


JE CRAQUUUUEEE HELLLLPPP PLLLLLSSSS :?: :?: :?:

MERCI
sylv1
Utilisateur occasionnel
 
Messages: 16
Inscription: 02 Fév 2012, 12:57
Version Excel: 2003 en

Re: utiliser des variables définis dans userform sur vlookup

Messagepar Banzai64 » 03 Fév 2012, 16:32

Bonjour

Avant de craquer, joins ton fichier
Image
Avatar de l’utilisateur
Banzai64
Passionné d'Excel
 
Messages: 4633
Inscription: 21 Nov 2010, 16:42
Localisation: Jurançon
Version Excel: 2003 FR

Re: utiliser des variables définis dans userform sur vlookup

Messagepar sylv1 » 03 Fév 2012, 17:42

oui dsl, merci banzai64
je voudrais voir aparaitre le numero correspondant apparaitre
Fichiers joints
fax_genn.xls
(81.5 Kio) Téléchargé 13 fois
sylv1
Utilisateur occasionnel
 
Messages: 16
Inscription: 02 Fév 2012, 12:57
Version Excel: 2003 en

Re: utiliser des variables définis dans userform sur vlookup  Sujet résolu

Messagepar Banzai64 » 03 Fév 2012, 18:15

Bonjour

A voir
Fichiers joints
sylv1 Userform V001.xls
(78 Kio) Téléchargé 17 fois
Image
Avatar de l’utilisateur
Banzai64
Passionné d'Excel
 
Messages: 4633
Inscription: 21 Nov 2010, 16:42
Localisation: Jurançon
Version Excel: 2003 FR

Re: utiliser des variables définis dans userform sur vlookup

Messagepar sylv1 » 03 Fév 2012, 18:43

merci beaucouppp maitre :-)
mais je ne comprend pas ce qu'est "me."
peux tu m'expliquer ce que cela represente?
et pourquoi met tu une .row à la fin de Ws.Range("A" & Rows.Count).End(xlUp).Row ?


et encore une fois parce que je suis vrmt naze lol
peux tu m'expliqué le raisonement de cette fonction:
Set Ws = Sheets("officer")
With Me.initialofficer
.Clear
.ColumnCount = 2
.ColumnWidths = "-1;0"
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
.List(.ListCount - 1, 1) = J
Next J
End With
sylv1
Utilisateur occasionnel
 
Messages: 16
Inscription: 02 Fév 2012, 12:57
Version Excel: 2003 en

Re: utiliser des variables définis dans userform sur vlookup

Messagepar Banzai64 » 03 Fév 2012, 19:35

Bonjour

Quelques explications

Meremplace l'objet que tu manipules, dans ce cas c'est Userform1

Code: Tout sélectionner
Ws.Range("A" & Rows.Count).End(xlUp).Row

Row indique la ligne, et ce code retourne la dernière cellule non vide de la colonne A
Code: Tout sélectionner
Set Ws = Sheets("officer")
With Me.initialofficer
.Clear
.ColumnCount = 2
.ColumnWidths = "-1;0"
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
.List(.ListCount - 1, 1) = J
Next J
End With


Grosso modo
On affecte à la variable WS la feuille (c'est plus facile à manipuler que de marquer chaque fois Sheets("officer") )
Ensuite on initialise la ComboBox (initialofficer) avec nombre de colonnes et largeur des colonnes
Puis on remplit cette ComboBox (comme tu faisais dans ta macro)
Particularité: Je note dans une colonne (cachée car largeur = 0) de la ComboBox le numéro de ligne de la valeur que je viens d'ajouter

Pour trouver des renseignements sur la signification de tel ou tel code
Tu places ton curseur sur le mot et tu appuies sur F1
Image
Avatar de l’utilisateur
Banzai64
Passionné d'Excel
 
Messages: 4633
Inscription: 21 Nov 2010, 16:42
Localisation: Jurançon
Version Excel: 2003 FR

Re: utiliser des variables définis dans userform sur vlookup

Messagepar sylv1 » 04 Fév 2012, 20:04

merci
sylv1
Utilisateur occasionnel
 
Messages: 16
Inscription: 02 Fév 2012, 12:57
Version Excel: 2003 en

Re: utiliser des variables définis dans userform sur vlookup

Messagepar sylv1 » 07 Fév 2012, 16:12

Bonjour Banzai64,

en fait je rencontre un autre problème, ton code me permet d'afficher la donnée de la colonne B en fonction de mon choix de la colonne A.
J'ai compris la logique d'ajouter un colonne "d'indexation" invisible des items dans la combo box pour ensuite s'en servir dans le module1 (très futé).
Mais je ne comprend pas comment fonctionne la ligne
Code: Tout sélectionner
 me.combobox_counterparty.column(1)

malgré l'aide Excel - comment cette ligne peux retourner une valeur long correspondant a la ligne choisi? ca ne devrait pas plutot etre row(j)?


Code: Tout sélectionner
.List(.ListCount - 1, 1) = j

à quoi ca sert puisse que tu a déjà mis les items dans la combo box?

je suis naze....


Merci beaucoup en tout cas
sylv1
Utilisateur occasionnel
 
Messages: 16
Inscription: 02 Fév 2012, 12:57
Version Excel: 2003 en

Re: utiliser des variables définis dans userform sur vlookup

Messagepar Banzai64 » 07 Fév 2012, 16:26

Bonjour

Explication:
C'est dans ce sens que cela fonctionne
1er)
Code: Tout sélectionner
.List(.ListCount - 1, 1) = j

Une fois que j'ai rajouté l'item dans la ComboBox, dans la colonne cachée j'y note la ligne (Row)

2ème)
Code: Tout sélectionner
 me.combobox_counterparty.column(1)

Je récupère dans la colonne 1, la valeur que j'avais "cachée" , elle correspond à la ligne (Row) où se trouve l'item et cette valeur est transmise à la variable
Image
Avatar de l’utilisateur
Banzai64
Passionné d'Excel
 
Messages: 4633
Inscription: 21 Nov 2010, 16:42
Localisation: Jurançon
Version Excel: 2003 FR

Re: utiliser des variables définis dans userform sur vlookup

Messagepar sylv1 » 07 Fév 2012, 17:58

1) ok j'ai compris mais comment savoir que c'est la collonne 1 qu'on doit remplir?
on défini que la list fait 2 colonne mais de -1 à 0 donc la collone 1 ne devrait pas exister

2)du coup (en règle générale) une fois que la combobox est rempli, l'objet combobox prend la valeur en surbrillance??

je comprend que dalle :( :( :( :( :(

Private Sub UserForm_Initialize() ('défini la valeur de la combobox- comment la remplir)
Dim j As Long ('J correspond à un nombre)

With Me.combobox_officer ('on va définir les propriétés et appliquer des méthodes à la combobox)
.Clear (on vide la combobox au cas ou il y aurait déjà des valeurs)
.ColumnCount = 2 (on dit que dans la combobox il va y avoir 2 colonne de données)
.ColumnWidths = "-1;0" (on dit que la première colonne sera -1 (donc invisible) et on dit que la seconde colonne sera "0")

For j = 2 To Sheets("officer").Range("A" & Rows.Count).End(xlUp).Row (on dit que j commence par 2 et va jusqu'à la ligne correspondant à la celllule la plus au dessus en partant de la cellule la plus en bas de la colonne A -> déjà là je comprend pas puisque row retourne un plage et non un nombre :cry:

.AddItem Sheets("officer").Range("A" & j)
.List(.ListCount - 1, 1) = j (on dit que sur l'item qu'on vient d'ajouter, la colonne 1 = j (indexation des lignes)) comment sait-on que c'est 1 et pas 0 ou -1 la colonne puisque la largeur à été défini de -1 à 0?
Next j
End With

End Sub


Public Sub bouton_OK_Click()

Dim initial As Long

If Me.combobox_officer.ListIndex = -1 Then (ca veut dire que si l'index n'a pas été choisi alors msgbox)
MsgBox "choisir les initiales de créateur du fax"
Exit Sub
End If
initial = Me.combobox_officer.Column(1) (est ce qu'on aurait pas pu mettre juste column(0) ou je sais pas trop quoi pour avoir l'initial de l'officer en tant que string?)( si je comprend bien au moment ou on fait notre choix dans la liste box quand on fait tourner la macro, la macro combobox prend la valeur selectionner?) et la fonction colomn permet en fait de retourner la valeur contenue dans la colonne 1 et correspondant à l'item selectionné
End Sub


compliqué tout ca....
sylv1
Utilisateur occasionnel
 
Messages: 16
Inscription: 02 Fév 2012, 12:57
Version Excel: 2003 en

Suivante

Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google Adsense [Bot], messondewez, rico95 et 31 invités