[VBA Excel] comment reconnaitre les cellules

Fermé
chercheur92 Messages postés 28 Date d'inscription jeudi 20 juillet 2006 Statut Membre Dernière intervention 29 octobre 2006 - 12 sept. 2006 à 14:04
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 - 12 sept. 2006 à 23:10
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

Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
12 sept. 2006 à 23:10
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