XL 2010 Modif Code d'un Bouton

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MuscatMimi

XLDnaute Accro
Bonsoir a tout le Forum et joyeuses fêtes a tous

J'a ce Code de D Josserand qui date de 2005,Je désire commencer a valider Les données d'une ligne de ma ListBox a partir de la ligne 12
de ma feuille,et ainsi de suite,j'y arrive pas

VB:
Private Sub CommandButton2_Click()
Dim L As Integer, x As Byte
L = Sheets("Feuil1").Range("B600").End(xlUp).Row + 1 'incrémente données
    With Me.ListBox2
        For x = 0 To .ListCount - 1
            If .Selected(x) = True Then
                'Feuil1.Range("A" & L) = .Column(0, x)
                Feuil1.Range("B" & L) = .Column(0, x)
                Feuil1.Range("C" & L) = .Column(1, x)
                
                L = L + 1
            End If
        Next x
    End With
End Sub

Merci a tous a l'avance,prenez soin de vous
Cordialement
christian
 
re
et comme je suis un serial codeur BIO je privilégie le recyclage de méthode
je disais tout a l'heure simplifier l'array pour 2 (ou plus) colonnes
donc
on transfert la ligne entière de la listbox
si multiselect
VB:
For x = 0 To .ListCount - 1
            L = Application.Max(12, Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row + 1)    '12 ou plus!!!!!
            If .Selected(x) Then Feuil1.Range("B" & L).Resize(, .ColumnCount) = Application.Index(.List, x + 1, 0)
        Next x
si selectsingle
VB:
  L = Application.Max(12, Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row + 1)    '12 ou plus!!!!!
Feuil1.Range("B" & L).Resize(, .ColumnCount) = Application.Index(.List, .ListIndex + 1, 0)
😉
 
Re

=>patrictoulon
[mauvais esprit - karl sort de cette procédure]
Moi, je suis malin (je ne sers pas le Grand Capital 😉)
Je fais du ligne par ligne...

(pas de multi-select et tutti quanti)
J'y vais clic par clic
Histoire ne pas travailler trop vite
(déjà que je suis pas payé "bézef")
Néanmoins, puisque je t'ai lu 😉
VB:
'*********Staple1600 2020 (le dernier jour)*********
' avec de bouts de patricktoulon inside ;-)
Dim f As Worksheet
Private Sub CommandButton2_Click()
Set f = Sheets("Feuil1")
With Me.ListBox2: x = .ListIndex: f.Cells(Rows.Count, 2).End(3)(2).Resize(, 2) = Array(.List(x, 0), .List(x, 1)): End With
End Sub
NB: Pour moi, tout tableau digne ce nom a forcément une ligne d'entête (même si bizarrement elle commence en ligne 12)
Evidemmment, on n'est pas obligé de mettre Staple en B12
On peut y mettre: Yec'hed mat !
ou aussi A Momentary Lapse of Reason
Le code fonctionnera également 😉

[/mauvais esprit - karl sort de cette procédure]
 
🤣 🤣 🤣 🤣 🤣 🤣
tien parce ce que j'adore ce gif
demo7.gif
 
Re

Une petite variante du code précédent
(qui semble fonctionner en 2021 comme en 2020 😉)
VB:
Private r As Range
Private Sub CommandButton2_Click()
With Me.ListBox2: x = .ListIndex: r(, 1) = .List(x, 0): r(, 2) = .List(x, 1): End With
End Sub

Private Sub ListBox2_Change()
Set r = Sheets("Feuil1").Cells(Rows.Count, 2).End(3)(2)
End Sub

Private Sub ListBox2_Click()
CommandButton2.Visible = -1
End Sub

Private Sub UserForm_Initialize()
Set s = Sheets("Feuil2")
ListBox2.List = s.Range("B2:C" & s.Cells(Rows.Count, 3).End(3).Row).Value
CommandButton2.Visible = 0
End Sub
 
Bonjour patricktoulon

=>patricktoulon
Qui dit entête, dit entête
Et qui dit entête, n'a pas forcèment en tête un ListObject
Mais l'entêtant VBA qui colle à nos doigts hante tant nos têtes, que s'entêter sans savoir la nature du tableau finira par nous donner un mal de tête, en fait.
😉
 
Bonjour vaucluse immo, JM, patricktoulon,

Pour bien commencer l'année sans se prendre la tête :
VB:
Private Sub CommandButton2_Click() 'RAZ
ListBox2.ListIndex = -1
Feuil1.Rows("12:65536").ClearContents
End Sub

Private Sub ListBox2_Click()
Feuil1.[B11:B65536].Find("", , xlValues).Resize(, 2) = Application.Index(ListBox2.List, ListBox2.ListIndex + 1, 0)
End Sub

Private Sub UserForm_Initialize()
ListBox2.List = Feuil2.Range("B2", Feuil2.Range("C65536").End(xlUp)).Value
End Sub
Bonne et heureuse année 2021.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
3
Affichages
665
Réponses
4
Affichages
461
Réponses
4
Affichages
505
Retour