LISTBOX

  • Initiateur de la discussion Gilles
  • Date de début
G

Gilles

Guest
Bonjour à tous.
Une question sur les listbox.
Dans une application j'ai fait passer un listing sur une listbox afin d'effectuer des sélections. Néanmoins, si je ne sélectionne pas une une ligne dans ma listbox, par défaut c'est la première qui est soustraite de mon listing. N'y a-t-il pas une manip ? Je joins une copie de ma list box. L'insertion d'une MSGBOX pourrait être utile peut-être. Merci à tous.
Gilles

Private Sub CommandButton2_Click()

Dim lignRecup As Integer
Dim plageCell As String
Dim derniereLigne As Integer
Dim Msg As String


Msg = MsgBox('Attention, la facture est-elle réèllement payée en date du: ' _
& vbCrLf & vbCrLf & vbTab & TextBox1 & ' ? Attention vous ne pourrez pas la si vous avez oublier de valider une facture annuler la demande', vbYesNoCancel + vbQuestion, 'Rapprochement des factures')

If Msg = vbYes Then
With Sheets(3)
'pour récupérer la ligne validée et la transférer sur une autre feuille
lignRecup = Me.lbx_ListeGlobale.ListIndex + 4
.Cells(Me.lbx_ListeGlobale.ListIndex + 4, 6) = TextBox1.Value '4ème ligne 6ème colonne'
End With


Sheets('feuil3').Activate
plageCell = '' & lignRecup & ':' & lignRecup & ''
Rows(plageCell).Select
Selection.Copy
Sheets('Factures payées').Select
Range('A2').Select
If Range('A2').Value = '' Then
derniereLigne = Range('A1').End(xlUp).Row
plageCell = '' & derniereLigne + 1 & ':' & derniereLigne + 1 & ''
Else
derniereLigne = Range('A1').End(xlDown).Row
plageCell = '' & derniereLigne + 1 & ':' & derniereLigne + 1 & ''
End If

Range(plageCell).Select
ActiveSheet.Paste
Sheets('FEUIL3').Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
End If
End Sub[/color] :huh: :huh:
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Gilles, le Forum

Pour ta question initiale, c'est assez simple pour détecter si une ListBox ne contient pas de sélection c'est avec l'index retourné par 'ListIndex'... Qui aura une valeur de -1 si NON-Sélection.

Par exemple ceci en Début de ta Private Sub du CommandButton

If Me.lbx_ListeGlobale.ListIndex = -1 Then Exit Sub

Et tu n'auras pas de suite, puisque l'éxécution du reste du code sera annulé.

Pour ce qui est de ton code en général, sans avoir vraiment retranscrit dans le contexte en réel, tu peux largement améliorer en supprimant tous les Select...

Par exemple ce code :
Sheets('feuil3').Activate
plageCell = '' & lignRecup & ':' & lignRecup & ''
Rows(plageCell).Select
Selection.Copy
Sheets('Factures payées').Select
Range('A2').Select
If Range('A2').Value = '' Then
derniereLigne = Range('A1').End(xlUp).Row
plageCell = '' & derniereLigne + 1 & ':' & derniereLigne + 1 & ''
Else
derniereLigne = Range('A1').End(xlDown).Row
plageCell = '' & derniereLigne + 1 & ':' & derniereLigne + 1 & ''
End If

Range(plageCell).Select
ActiveSheet.Paste
Sheets('FEUIL3').Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
End If
Me paraît bien lourd, sans faire d'essai, je verrai plutôt ceci à la place :

Code:
With Sheets('Factures payées'Â'Â')
    DerniereLigne = .Range('A35000'Â'Â').End(xlUp).Row + 1
    Sheets('feuil3'Â'Â').Rows(LignRecup).Copy Destination:=.Rows(DerniereLigne)
End With

Bon Après Midi
@+Thierry

Message édité par: _Thierry, à: 08/03/2005 14:37
 
G

Gilles

Guest
Merci Thièrry pour ta réponse que je consulte un peu tardivement.
Je suis novice quelque peu en VBA et c'est plus par copiage et info sur ce site que je m'améliore. Merci encore pour cette leçon.
Bien à toi.
Gilles
 

Discussions similaires

Réponses
1
Affichages
192
Réponses
0
Affichages
170

Statistiques des forums

Discussions
312 388
Messages
2 087 873
Membres
103 672
dernier inscrit
ammarhouichi