Manipuler les sélections Macro Excel
Jack
-
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.
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:
- Manipuler les sélections Macro Excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
9 réponses
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
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
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...
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...
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???
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???
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.
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.
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à.
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à.
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
Dim plage As Range
Dim derlig As Long
Set plage = Range("$C$34:$C$39")
derlig = plage.Row + plage.Rows.Count - 1