[VBA Excel] comment reconnaitre les cellules

chercheur92 Messages postés 28 Date d'inscription   Statut Membre -  
Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour !
je veux faire une procedure qui me renvoie la ligne de la cellule selectionnée dans une colonne bien définie.
" msgbox selection.row " renvoie juste la ligne de la premiere cellule sélectionnée.
que faut il rajouter pour que j'ai la ligne de toutes les cellules sélectionnées d'une colonne donnée ?
je compte sur votre aide et merci d'avance.

1 réponse

  1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    salut chercheur92,

    moi, je suis dans le 91, et peut-être que j'ai trouvé ce qu'il te faut ;-)
    Sub NumerosDeLignes()
        Dim rngPlage        As Range
        Dim lngIndex        As Long
        Dim lng1            As Long
        Dim lng2            As Long
        Dim blnAsc          As Boolean
        Dim lngLigne(65536) As Long
        Dim lngRow          As Long
        Dim strMessage      As String
        
        ' récupération des numéros de ligne
        ' si une même ligne est sélectionnée sur plusieurs colonnes, 
        ' il y aura des doublons dans la liste...
        lngIndex = 0    ' premier élément du tableau = 0
        For Each rngPlage In Selection.Cells
            lngLigne(lngIndex) = rngPlage.Row
            lngIndex = lngIndex + 1
        Next
        ' dernier élément du tableau = n-1
        lngIndex = lngIndex - 1
        
        ' tri des numéros de ligne
        blnAsc = True       ' tri ascendant, remplacer True par False pour un tri descendant
        For lng1 = 0 To lngIndex
            For lng2 = lng1 + 1 To lngIndex
                lngRow = lngLigne(lng2)
                If blnAsc Then
                    If lngRow < lngLigne(lng1) Then
                        lngLigne(lng2) = lngLigne(lng1)
                        lngLigne(lng1) = lngRow
                    End If
                Else
                    If lngRow > lngLigne(lng1) Then
                        lngLigne(lng2) = lngLigne(lng1)
                        lngLigne(lng1) = lngRow
                    End If
                End If
            Next
        Next
        
        ' création du message à afficher dans le msgbox
        For lng1 = 0 To lngIndex
            strMessage = strMessage & lngLigne(lng1) & ", "
        Next
        strMessage = Left(strMessage, Len(strMessage) - 2)
        
        MsgBox strMessage, vbInformation, "Numéros de lignes"
    End Sub
    
    0