VBA numéro de ligne d'une cellule [Résolu/Fermé]

Signaler
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
-
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
-
Bonjour,
je voudrais savoir si il était possible de récupérer le numéro de ligne d'une cellule ? C'est à dire si j'ai la cellule A3 je veux récupérer 3. Comment je dois procéder (en VBA) ?

Merci beaucoup pour votre aide

14 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 491
Salut,

Sub Ligne()
  MsgBox Range("A3").Row
End Sub

5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
3
Merci !!
Je mettais .Rows avec un "s" donc je pense que c'est pour ça que ça ne marchais pas !
Autre question comment je pourrais accéder à la première et à la dernière ligne d'une plage de cellules ?
Il n'y aurait pas quelque chose du genre : Range("ma_plage").FirstRow ???

Merci
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 491
Re,

Peut être
Sub ligne_plage()
    Dim l1, l2
    Dim plage As Range
    
    Set plage = Range("A3:B6")
   
    With plage
        l1 = .Row
        l2 = l1 + .Rows.Count - 1
    End With
    
    MsgBox l1 & " et " & l2
End Sub
--
106485010510997108
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
179
bonjour :)

sinon..

Set plage = Range("A3:B6")
a = InStr(1, plage.Address, ":")
ligne1 = Mid(plage.Address, a - 1, 1)
ligne2 = Right(plage.Address, 1)
MsgBox "ligne1=" & ligne1 & " - ligne2=" & ligne2
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
3
Merci jjsteing, mais si j'ai nommé ma plage de cellule cela ne va pas marcher ??
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 491
Re,

Ben, tu n'as qu'à tester et tu veras si ça marche ou pas.
C'est plutôt à toi de nous dire si ça marche ;-))
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
3
Oui effectivement, autant pour moi ça marche dsl
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
179
cool.. donc post résolu ;):p
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
3
Par contre mes plages de cellule sont situées dans un grand tableau qui peut tout le temps varier donc mes plages se "déplacent". Elles peuvent avoir des numéros de lignes à 2 chiffres ou à 3 chiffres, donc si je mets :

ligne2 = Right(plage.Address, 3) quand mon numéro de plage est à 2 chiffres ça ne marche pas (et je veux quelque chose de général qui puisse s'adapter à ces 2 cas de figure...)

Si par exemple ça concerne la ligne 21, la cellule dans laquelle je récupère ce numéro à pour valeur 21 € !!!! Je ne sais pas pourquoi le signe € apparaît !!
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
179
Il est vrai...

Alors :
Set plage = Range("AA33:BA67")
CellAdd = plage.Address
a = InStr(2, CellAdd, "$")
b = InStr(1, CellAdd , ":")

ligne1 = Mid(CellAdd , a + 1, b - a - 1)

c = InStr(b + 2, CellAdd, "$")
ligne2 = Right(CellAdd , Len(CellAdd) - c)
MsgBox "ligne1=" & ligne1 & " - ligne2=" & ligne2


pour ton signe € regarde le format de ta cellule ;)
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
3
Ca marche super merci beaucoup !!! Ca va me permettre d'alléger considérablement mon code !!
J'ai vérifié mon format de cellule j'étais bien en format standart... c'est étrange. Bref de toute façon cela fonctionne donc c'est super !
Encore merci :-)
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
3
Bonjour, autre petit problème ....
Je voudrais à la suite du code :

Set plage = Range("AA33:BA67")
CellAdd = plage.Address
a = InStr(2, CellAdd, "$")
b = InStr(1, CellAdd , ":")

ligne1 = Mid(CellAdd , a + 1, b - a - 1)

c = InStr(b + 2, CellAdd, "$")
ligne2 = Right(CellAdd , Len(CellAdd) - c)

faire :

Rows("ligne1:ligne2").Select

mais ça ne marche pas, ça me renvoie un message d'erreur : "incompatibilité de type"

Comment faire ???

Merci beaucoup :-)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 491
Salut,

Rows(ligne1 & ":" & ligne2).Select
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 491
Re,

En faite ligne1 et ligne2 sont des variables qui contiennent un nombre.
Rows à besoin des nombres de lignes et pas de chaines de caractères.
Quand tu mets les guillements VBA croit que les chaines ligne1 et ligne2 sont des nombres, c'est pour ça que tu as une erreur.
Ce qui interesse c'est le contenu de ligne1 et ligne2.
Messages postés
56
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
7 septembre 2009
3
Super merci !!!