Manipuler les sélections Macro Excel

Fermé
Jack - 19 août 2009 à 09:55
 Jack - 19 août 2009 à 10:59
Bonjour,

Je suis débutant en vba, je souhaiterais récupérer la dernière ligne d'une sélection sous Excel, je m'explique:


Une inputbox demande à l'utilisateur de sélectionner une partie d'un tableau de mesures de taille variable, j'effectue ceci par la commande:

Set plage = Application.InputBox(Prompt:="Faite votre sélection", Type:=8)

Ensuite, à partir de cette selection, j'ai récupéré le numéro de la première ligne sélectionné et le numéro de la première colonne:

a = plage.Row 'a = numéro de la première ligne de la plage
b = plage.Column 'b = numéro de la première colonne de la plage

ce qu'il me faut c'est la dernière ligne, et ci possible la dernière colonne. Je dois appliquer des modification à cette sélection, je créer donc une boucle for pour exécuter ces modifications de la première ligne à la dernière...

En vous remerciant par avance.
A voir également:

9 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
19 août 2009 à 10:02
Salut,
Le problème qui se pose à toi n'est pas simple...
Le code pour renvoyer le numéro de la dernière ligne est : Range("A65536").End(xlUp).Row
Or ton tableau est de dimension aléatoire, donc tu ne sais pas si c'est la colonne A la plus longue.
Tu pourrais faire une boucle en testant systématiquement si Range("A65536").End(xlUp).Row < Range("B65536").End(xlUp).Row etc etc mais tu ne connais pas non plus le nombre de colonnes... Je me suis gratté la tête hier la dessus!!! La solution existe, rassure toi. Un code permet d'avoir le nombre de lignes (et ou de colonnes) d'un tableau indépendamment de tout (cellules vides, longueur des colonnes, des lignes). Le voici :
Dim NBlignes As Integer, NBCol As Integer
NBlignes = ActiveSheet.UsedRange.Rows.Count
NBCol = ActiveSheet.UsedRange.Columns.Count
Bon courage
0
Merci bien, je vais tester tout ça de suite.
0
Ce que tu m'as indiqués ne correspond pas à ce que je recherche, cela me donne bien la dernière ligne mais du fichier total, tout comme NBlignes et NBcol qui m'indique la taille du tableau global.

La sélection que je demande à l'utilisateur s'effectue parmis le plus grand tableau de la page.
Théoriquement la sélection est de 3 colonnes, commençant à la A, mais avec une ligne de départ variable et un nombre de ligne variable.

J'ai réussit à obtenir les coordonnées de la première cellule de la sélection, en haut à gauche, il me faudrait la dernière en bas à droite par exemple.

J'ai pensé aussi récupérer ce qui est affiché dans l'inputbox si c'est possible, par exemple "$A$34:$C$39" . Cela me permettra peut-être de récupérer les numéros...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
19 août 2009 à 10:27
Je ne comprends pas très bien ce que tu veux...
J'ai pensé aussi récupérer ce qui est affiché dans l'inputbox si c'est possible, par exemple "$A$34:$C$39" . C'est le pricipe même de l'inputbox, que l'utilisateur puisse indiquer quelque chose (ici la plage de calcul) au programme.
Cela me permettra peut-être de récupérer les numéros..Le numéros de quoi???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je me suis pas très bien exprimé.

En fait je récupère bien "$A$34:$C$39" , cela correspond à "plage" pour moi.

Ce que je veux en réalité, c'est récupérer la dernière ligne, donc ici "39".

J'ai réussi à récupérer la première "34" par "plage.Row" mais je n'ai rien trouvé pour la dernière, et je ne sais pas très bien manipuler les plages de sélection.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
19 août 2009 à 10:46
Si tu as juste besoin de récupérer les numéros de 2 lignes : 1ère et dernière ligne d'un Range, tu fais 2 Inputbox :
prelign = InputBox("Merci de saisir le N° de la première ligne de votre plage de cellules","1ère ligne")
derlign = InputBox("Merci de saisir le N° de la dernière ligne de votre plage de cellules","Dernière ligne")
Et voilà.
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
19 août 2009 à 10:52
Bonjour, tt le monde

Dim plage As Range
Dim derlig As Long
Set plage = Range("$C$34:$C$39")
derlig = plage.Row + plage.Rows.Count - 1
0
C'est ce que j'avais fait au départ :)

Le problème, c'est que j'ai voulu simplifier, vu que ça fesais beaucoup d'inputbox, du coup je me suis dis qu'il doit exister un moyen de récupérer le 2 lignes sans passer par l'utilisateur.

Je vais continuer à chercher, sinon tant pis je ferais comme tu dis.
0
merci michel_m !! c'est exactement ça ;) et c'est très simple à comprendre.

Bonne continuation à vous et merci encore.
0