Autres Afficher NOM PRENOM dans combobox

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

Je n'arrive pas à trouver la solution pour afficher NOM et PRENOM dans le même combobox.
Si quelqu'un avait une idée ou une solution, ou une correction...
Ce serait gentil.
Merci;

Je joins un exemple de mon tableur.
 

BOISGONTIER

XLDnaute Barbatruc
Bonjour,

Il serait plus simple de mettre le nom et le prénom dans la même colonne.

VB:
Private Sub UserForm_Initialize()
  Set f = Sheets("effectif")
  Set Rng = f.Range("B2:C" & f.[B65000].End(xlUp).Row)
  Me.ComboBox1.ColumnCount = 2
  Me.ComboBox1.List = Rng.Value
End Sub
Un crétin a supprimé mon fichier (qui ne contenait pas de données personnelles).
Je l'ai donc remis.

Boisgontier
 

Fichiers joints

Dernière édition:

FOUQUET Yves

XLDnaute Occasionnel
Je viens de me rendre compte que j'ai pas effacer les données dans le tableau. Peux tu le virer STP. Il y a des données confifentielles. merci. J'ai téléchargé ta solution. Je vais voir ça demain.
 

FOUQUET Yves

XLDnaute Occasionnel
Bonsoir,

J'ai essayé d’intégrer ta procédure mais je n'arrive pas à la lancer. erreur de compilation objet requis .
Elle fonctionne toute seule dans le fichier téléchargé mais pas dans mon Userform de gestion des adhérents...
Où est l'erreur

VB:
Private Sub UserForm_Initialize()    '---- Affichage NOM et PRENOM dans le "combobox1" à partir de la feuille "Effectif".
Dim j As Long
Dim i As Integer
Dim eff_total As Integer
Dim [B]f[/B] As [B]Range[/B]                      ' Quel type de variable SVP
Dim [B]Rng[/B] As [B]Long[/B]                   ' quel type de variable SVP

eff_total = 0
Set [B]f[/B] = Sheets("Effectif")
 With Me.ComboBox1
   Set [B]Rng[/B] = f.Range("B2:C" & f.[B65000].End(xlUp).Row)
   Me.ComboBox1.ColumnCount = 2
   Me.ComboBox1.List = Rng.Value
 
   eff_total = eff_total + 1   'Je compter le nombre d'adhérents et je l'affiche dans le textbox14.
   TextBox14.Value = (eff_total)
 End With
End Sub
'----------------------------
Merci de ton aide.
 

FOUQUET Yves

XLDnaute Occasionnel
Bonsoir camarade,

OK j'ai copié ta proposition et cela fonctionne!
mais maintenant j'ai un autre problème qui se crée.

et quand je sélectionne un adhérent dans le combobox cela plante et il ne s'affiche pas dans les textboxs.
VB:
Private Sub ComboBox1_Change()
Dim ligne As Long
Dim i As Integer
Dim num_adherent As Integer
ligne = Me.ComboBox1.ListIndex + 2
  For i = 1 To 13    ' ----- 13 textbox à compléter et afficher
    Me.Controls("TextBox" & i) = Ws.Cells(ligne, i + 1)
  Next i
End Sub
...
"Variable objet ou variable du bloc white non définie"
Je pense qu'il doit y avoir un problème d'index... mais où.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

En cas de problème avec un code, on peut ajouter des Msgbox pour voir ce qui se passe
VB:
Private Sub ComboBox1_Change()
Dim ligne As Long
Dim i As Integer
Dim num_adherent As Integer
ligne = Me.ComboBox1.ListIndex + 2
Msgbox ligne
  For i = 1 To 13    ' ----- 13 textbox à compléter et afficher
MsgBox Me.Controls("TextBox" & i).Name
MsgBox Ws.Cells(ligne, i + 1)
   ' Me.Controls("TextBox" & i) = Ws.Cells(ligne, i + 1)
  Next i
End Sub
Ca peut permettre de voir ou cela coince ;)

Excel jamais ne s'aviserait d'écrire cela ;)
"Variable objet ou variable du bloc white non définie"
Sauf peut-être sur le PC d'un membre du KKK.

NB: A quoi correspond la variable Ws dans ton code?
 

FOUQUET Yves

XLDnaute Occasionnel
Code:
Private Sub UserForm_Initialize() 'à l'initialisation de l'userform
' --------------------------------------------------------
Dim j As Long
Dim i As Integer
Dim eff_total As Integer
Dim f As Worksheet
Dim Rng As Range

eff_total = 0
Set f = Sheets("Effectif")
   Set Rng = f.Range("B2:C" & f.[B65000].End(xlUp).Row)
   Me.ComboBox1.ColumnCount = 2
   Me.ComboBox1.List = Rng.Value
    
    For j = 2 To f.Range("B" & Rows.Count).End(xlUp).Row
    eff_total = eff_total + 1
    TextBox14.Value = (eff_total)
    Next j
 
   eff_total = eff_total + 1   'Je compter le nombre d'adhérents et je l'affiche dans le textbox14.
   TextBox14.Value = (eff_total)
End Sub

'============================== Si combobox change et ça plante !! =================================================
Private Sub ComboBox1_Change()
Dim ligne As Long
Dim i As Integer

ligne = Me.ComboBox1.ListIndex + 2
  For i = 1 To 13    ' ----- 13 textbox à compléter et afficher
    Me.Controls("TextBox" & i) = Ws.Cells(ligne, i + 1)
  Next i
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Tu n'as pas vu mon conseil dans le précédent message :rolleyes: ,
Et sinon en testant ainsi
Me.Controls("TextBox" & i) = Sheets("Effectif").Cells(ligne, i + 1)
 

FOUQUET Yves

XLDnaute Occasionnel
C'est là que çà plante... ligne en jaune
Me.Controls("TextBox" & i) = Ws.Cells(ligne, i + 1)


Alors qu'avant cela marchait ...
J'ai réglé l'affichage du nom et prénom (c'est chouette) mais je dois avoir écrit tout ça bizarrement car dès que j'interviens sur le combobox pour sélectionner un nom! Tilt!!
 

FOUQUET Yves

XLDnaute Occasionnel
Ouais!!!! tu es THE KING!!!
Bon c'est quand que j'arrive à ton niveau? Explique moi STP la différence des deux lignes en mots simples...
Me.Controls("TextBox" & i) = Ws.Cells(ligne, i + 1)
Me.Controls("TextBox" & i) = Sheets("Effectif").Cells(ligne, i + 1)
ta ligne fait référence à la "feuille" mais quelle différence entre Ws. et Sheets ("effectif")
 

Staple1600

XLDnaute Barbatruc
Re

Plus temps, je pars au cinoche ;)
Et relis mes précédents message, il y a tout les indices pour expliquer le pourquoi du comment ;)
 

Staple1600

XLDnaute Barbatruc
Re

Avant d'aller au dodo, quelques bout de codes pour éclairer ta lanterne demain matin ;)
NB: Macros à vocation illustrative et/ou explicative ONLY.
VB:
Sub rogation()
Dim WS As Worksheet
On Error GoTo errorHandler
MsgBox WS.Name '<- erreur!
errorHandler:
'indique le numéro et la description de l'erreur survenue
MsgBox _
    "Erreur N°: " & Err.Number & Chr(13) _
    & vbTab & Err.Description, vbCritical, _
    "Aie, caramba!, y a comme un blème, ;-)"
End Sub
Sub terfuge()
Dim WS As Worksheet, mess$
On Error GoTo errorHandler

'-> Début Syntaxe OK
Set WS = ActiveSheet
MsgBox "La feuille nommée: " & WS.Name & " a le N° d'index: " & WS.Index, vbInformation, "Ouf, bonne syntaxe"
mess = WS.Cells(1600, "S").Address & vbCrLf
mess = mess & WS.Cells(1600, 19).Address(4, 0) & vbCrLf
MsgBox mess, vbExclamation, "Test OK"
'-> Fin Syntaxe OK

MsgBox Sheets(WS).Cells(1).Address '<- erreur!

errorHandler:
'indique le numéro et la description de l'erreur survenue
MsgBox _
    "Erreur N°: " & Err.Number & Chr(13) _
    & vbTab & Err.Description, vbCritical, _
    "Aie, caramba!, y a comme un blème, ;-)"
End Sub
 

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

Rigolos tes messages. Quand j'arriverai au bout de mon truc je m'amuserai à en intégrer dedans...
Merci et j'espère que le film a été sympa.

PS dans ce fil j'ai a un moment posté un tableau dans lequel j'ai oublié de virer les données perso des gens. J'ai pu virer vite le tableau dans mon message mais quelqu'un m'a renvoyé le tableau corrigé "message 2" et celui là je ne peux le virer. J'ai envoyé des messages à la personne pour qu'elle le supprime mais rien depuis. Tu sais ce que je peux faire pour réparer ma connerie ?

Cordialement.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Question 1)
Est-ce que mes exemples t'ont été profitables?
Tu as compris comment utiliser Dim WS as Worksheet?

Pour ce qui concerne les données confidentielles, contactes par MP, le webmaster du site DavidXLD
(en cliquant sur ce lien)
 

FOUQUET Yves

XLDnaute Occasionnel
Je t'avoue que je suis un peu pris en ce moment.
J'ai regardé cela mais en vitesse. Dés que j'arrive au bout de mon petit programme et je n'en suis pas loin de reviendrai tranquillement sur tout ça.
En tout cas j'ai vu tout tes messages "d'alerte" qui m'ont bien fait rire.

Pour Dim WS as Worksheet j'ai regardé cela aussi mais il y a encore des nuances que je ne capte pas.
J'ai cru comprendre que Worksheet activait une feuille de classeur; J'imagine que c'est la feuille sur laquelle on veut travailler... ?
Ws serait une variable à laquelle un affecte la valeur worksheet et qui pointe donc sur une feuille.

Un truc comme çà quoi!

J'ai envoyé un message au webmaster. A voir s'il y a des suites.

Merci de ton aide et de tes conseils. Continues à me faire profiter de ton savoir... lol
 

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

Il serait plus simple de mettre le nom et le prénom dans la même colonne.

VB:
Private Sub UserForm_Initialize()
  Set f = Sheets("effectif")
  Set Rng = f.Range("B2:C" & f.[B65000].End(xlUp).Row)
  Me.ComboBox1.ColumnCount = 2
  Me.ComboBox1.List = Rng.Value
End Sub
Un crétin a supprimé mon fichier (qui ne contenait pas de données personnelles).
Je l'ai donc remis.

Boisgontier
Merci pour le crétin!
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas