Manipuler les sélections Macro Excel

Jack -  
 Jack -
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 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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
Jack
 
Merci bien, je vais tester tout ça de suite.
0
Jack
 
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 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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
Jack
 
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 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
Jack
 
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
Jack
 
merci michel_m !! c'est exactement ça ;) et c'est très simple à comprendre.

Bonne continuation à vous et merci encore.
0