Combobox1 comment récuperer une ligne de plusieurs colonnes

Utilisateur anonyme - Modifié par geoffroy1958 le 5/04/2015 à 21:13
 Utilisateur anonyme - 7 avril 2015 à 17:33
Bonsoir,
Je suis débutant en VBA et j'ai insérer une combobox dans mon userform j'ai mis dans une feuille Excel que j'ai nommé Données avec
5 colonnes de titre:
 ! A1= Date ! B1=Désignation ! C1=Ordre ! D1=Prix_à_payé ! E1=Somme_reçu !
.
La combo lit la colonne B=désignation .

j'aurais aimé:
Quand je sélectionne avec la combo (la colonne B2 à Bfin de la feuille "Données") que se soit la ligne entière, qui correspond à sa sélection:
 !date ! désignation ! Ordre ! Prix_à_payé ! somme_reçu !
,
qui s'insére dans une seconde feuille nommée Compte en-dessous des autres lignes à la colonne A?

Comment faire ?
merci

6 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 6/04/2015 à 21:14
Hé bien :
l'item d'index 0 de ta combo est donc la ligne 2 de ta feuille
et donc : l'index cliqué dans la combo est la ligne index + 2 de ta feuille.
Et la ligne entière de ta feuille est donc (à main levée) :

range("B" & combobox1.listindex+2) & ":F" & combobox1.listindex+2)


yapluka !
Au passage : le choix de l'évènement Change de la combo est malheureux. L'évènement Change n'intervient pas uniquement après un click, mais également si l'utilisateur frappe n'importe quoi dans la zone de saisie.
Utilise l'évènement click.

EDIT : Je voudrais vraiment que l'on comprenne, une fois pour toutes, que l'utilisation de l'évènement Change d'une combobox n'a sa justification que dans des cas très précis et isolés (dont le contrôle des caractères que l'on saisit dans la zone d'édition de la combobox...).
Je remarque trop souvent cet abus d'utilisation, à tort, de cet évènement !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
1
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 5/04/2015 à 21:35
Bonjour,
Nous ne voyons pas le code de remplissage de ta combo. Or, il a son importance (ne serait-ce que pour voir la correspondance éventuelle entre les lignes (index) de la combo et celles (rangs) de la feuille).
Montre donc ce code

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Bonjour,
oups désolé :)
voici le code

Option Explicit
Dim lig2 As Long
Public Sub maj_ligne()
With ActiveSheet
     .Cells(lig2, "B").Value = Me.ComboBox1

Call raz_ligne
End With
End Sub
Private Sub UserForm_Initialize()
Me.ComboBox1.RowSource = "données!b2:F" & Sheets("données").Cells(1, 1).End(xlDown).Row
End Sub
Public Sub raz_ligne()
Me.ComboBox1.ListIndex = -1
End Sub

Private Sub ComboBox1_Change()
With ActiveSheet
lig2 = .Cells(Rows.Count, "B").End(xlUp).Row + 1
End With
End Sub


comme vous pouvez le voir, je suis arrivé à voir dans la combobox les colonnes qui m'intéresse mais pas la sélection


merci
0
Utilisateur anonyme
7 avril 2015 à 09:14
Bonjour,
Merci d'avoir répondu mais il y a une
"erreur de compilation erreur de syntaxe"
dans ta ligne .
J'ai mis une combobox que je ne maitrise pas du tout et j'essaye de comprendre, pris des exemples sur plusieurs sites, ce n'est sûrement pas la bonne solution?
Je recherche à sélectionner une ligne dans une base de données avec plusieurs colonnes et qu'elle s'insère à la suite de mes saisies sur une autre feuille Excel comme indiqué ci-dessus.
Donc si tu as une solution simple pour débutant je suis preneur ?
EDIT : Désolé d'être novice dans le VBA et de ne pas utiliser comme il faut tous ces évènements .Mais peut-être que ce site s'adresse qu'au professionnel ?
Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 7/04/2015 à 11:08
mais il y a une "erreur de compilation erreur de syntaxe"
dans ta ligne

Montre ce que tu en as fait (ton code) !

Il y a une parenthèse de trop dans ce que j'avais écrit à main levée (tu aurais pu corriger seul, non ?)

Regarde :
Private Sub ComboBox1_Click()
Dim plage_a_copiuer As Range
Set plage_a_copier = Range("B" & ComboBox1.ListIndex + 2 & ":F" & ComboBox1.ListIndex + 2)
MsgBox "tu dois donc copier d'une feuille à l'autre la plage " & plage_a_copier.Address
End Sub

Je te laisse préciser la feuille, dans cette plage (cela, quand-même ...)
Pour le reste (surtout si tu es débutant) :
Il te suffit d'appliquer maintenanty la méthode Copy (Rubrique Range.copy dans ton aide VBA). C'est simple, clair et assorti d'un exemple non moins clair.
Quant à copier où (argument destination). Ne me dis surtout que tu ne sais pas déterminer quelle est la dernière ligne remplie. Sinon, cela voudrait dire que tu n'as pas non plus compris ce que tu écrivais plus haut !
Reviens avec ton code d'essai, si vraiment encore en difficulté.
Je tiens à te préciser que rien, de ce dont je te parle, n'est pas à la portée de n'importe quel débutant de chez débutant et ne requiert des qualités "professionnelles" !
A toi de jouer.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Utilisateur anonyme
7 avril 2015 à 17:33
bonjour,
merci pour ton aide je vais vois la rubrique dans aide VBA. désolé je n'y avais même pas pensé et je galère depuis des lustres... :)
cordialement
0