Sélection de la dernière ligne d'une plage VBA

las-dias

XLDnaute Nouveau
Sub Macro1()
'
' Macro1 Macro
'

'

Range("A10:L15").Select
ExecuteExcel4Macro "PATTERNS(1,0,65535,TRUE,2,3,0,0)"
End Sub


Bonjour, dans la petite macro ci-dessus, le VBA sélectionne la plage A10:L15 (de la cellule A10 à L15).
Je souhaite dire à la Macro, de sélectionner de A10 à L10, puis ensuite d'aller jusqu'à la dernière ligne non vide de la plage.

Quelles sont les modifications qu'il faut apporter SVP ?
Je vous remercie encore une fois votre aide précieux !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Personnellement, je ferais ainsi
VB:
Sub a()
Dim P As Range, x&, y&
Set P = Range("A10:L15")
With P
x = .Cells.Find(What:="*", _
     SearchDirection:=xlPrevious, _
     SearchOrder:=xlByRows).Row
y = .Cells.Find(What:="*", _
      SearchDirection:=xlPrevious, _
      SearchOrder:=xlByColumns).Column
End With
Range("A" & Cells(x, y).Row).Resize(, 12).Select
End Sub
 

las-dias

XLDnaute Nouveau
D'accord, je vous remercie pour votre réponse. Mais, ou faut-il mettre votre VBA dans ma macro ci-dessus SVP ? Est ce que vous pouvez me transmettre le VBA final incluant votre réponse SVP ? (désolé, je suis nul en VBA)

Sub Macro1()
'
' Macro1 Macro
'

'
Range("A10:L15").Select
ExecuteExcel4Macro "PATTERNS(1,0,65535,TRUE,2,3,0,0)"
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

J'ai écris que je ferai ainsi pas qu'il fallait mettre ma macro dans ta macro.
Et ma macro ne fait ce que tu as demandé
puis ensuite d'aller jusqu'à la dernière ligne non vide de la plage.

Qu'est censé faire celle ligne de code?
ExecuteExcel4Macro "PATTERNS(1,0,65535,TRUE,2,3,0,0)"

PS: Personne n'est nul ici.
Il y en a juste qui ont passé plus de temps sur leur Excel que d'autres.
 

las-dias

XLDnaute Nouveau
Justement Slape, ma macro contient d'autres opérations, en conséquence, je souhaite la garder (si c'est possible ?) et changer uniquement la partie en VBA qui dit de sélectionner la plage (A10:L15). Malgré mon niveau en VBA, je pense qu'il s'agit de la partie Range("A10:L15").Select qu'il faut changer.

Dans cette Macro, je souhaite dire à Excel de sélectionner A10 à L10, puis ensuite d'aller jusqu'à la dernière ligne non vide de la plage.

Voici l'objectif souhaité, je sais pas si c'est possible à faire ou faut-il refaire une nouvelle macro ?
 

zebanx

XLDnaute Accro
Bonsoir Las-Dias, bonsoir STAPLE1600

@las-dias
C'est qui "SLAPE" :D??
Petit conseil, joindre un fichier facilite la compréhension et le fait que d'autres personnes se joignent au fil, surtout quand tu précises par la suite de la première demande que tu n'as communiqué qu'un bout de code ("autres opérations").
Et accessoirement la correction directe dans le fichier plutôt que de rebondir sur des posts qui ne font guère avancer le schmilblik. Quitte, bien sûr, à anonymer les données si elles sont sensibles...

++ zebanx
 

las-dias

XLDnaute Nouveau
La ligne ExecuteExcel4Macro "PATTERNS(1,0,65535,TRUE,2,3,0,0) je pense c'est pour faire une mise sous le tableau de la plage sélectionné c'est à dire (A10:L15)
Si non, Oui Staple, j'ai essayé ta Macro, certes, Excel m'affiche une erreur d'exécution de la macro.
J'ai joint le le fichier Excel dont je vous parle.
Je vous remercie pour votre aide.
 

Pièces jointes

  • TrainingReport_watermacro.xlsm
    17 KB · Affichages: 20

Staple1600

XLDnaute Barbatruc
Re

La macro fonctionne pourtant.
(la preuve en image!)
C'est bien la ligne où il y la dernière cellule non vide qui est sélectionnée, non ?
01camarche.jpg
 

las-dias

XLDnaute Nouveau
Bonjour à tous,,
D'abord, je voudrai vous remercie pour l'ensemble de votre aide et pour le temps que vous avez accordé à ce problème .
Malheureusement, j'ai toujours réussi à obtenir ce que je souhaite. J'ai essayé en plusieurs reprises vos réponses, Staple, certes, à chaque fois Excel m'affiche une erreur d’exécution .

Pour vous donnez une idée de la macro,voici ci-dessus les manipulations que j'ai enregistré dans le VBA et le fichier en PJ:
Feuille 1:
1- Supprimer les colonnes C, D et I, J, K
2- Supprimer les lignes 5, 6, 7
3- Mettre sous forme de tableau (toujours de A10 à la colonne L, puis jusqu’à la dernière ligne Non vide: ce que j'ai pas réussi à faire),
4- Filtrer I10 par un ordre décroissant
5- Mise en Forme Conditionnelle de toute la plage (A10 :Lxxx ?), par formule: =$I10=0 (couleur verte clair)

Feuille 2:
6- Supprimer les colonnes C, D
7- Mettre sous forme de tableau (toujours de A6 à la colonne H, puis jusqu’à la dernière ligne Non vide: ce que j'ai pas réussi à faire)
8- Mise en Forme Conditionnelle de toute la plage (A6 :L xxx ?), par la formule =$H6="Missed" (couleur rouge clair)

Certes, ma macro se limite à la ligne L200 dans la feuille 1 et à la ligne H100 dans la feuille 2
Le but : est de dire à cette macro, de faire (les opérations 3,4 et 5 dans la feuille 1 ) en partant de A10 à la colonne L puis jusqu’à la dernière ligne Non vide de la plage. Et pas seulement jusqu'à L200 uniquement

même chose pour la feuille 2, (faire 7 et pas uniquement en allant jusqu'à H100, mais en allant toujours de A6 à la colonne H puis jusqu’à la dernière ligne Non vide de la plage. Genre (A6 :Hxx)
 

Pièces jointes

  • Trainingmacro.xlsx
    12.5 KB · Affichages: 21

las-dias

XLDnaute Nouveau
Bonjout à tous,
Après un bon moment de bidouillage dans le VBA, finalement j’ai réussi à obtenir la macro que je souhaite, celle-ci bien évidemment et sans aucun doute grâce à votre aide et vos réponses très RAPIDES. Sans vous, j'aurai pas eu ce que je souhaitais.
je voudrai vous remercie beaucoup pour le temps que vous m'avez accordé et pour votre aide précieux
 

zebanx

XLDnaute Accro
Bonsoir Staples1600, las-dias

Ayant excel 2003, je ne peux pas non plus m'y intéresser sur la partie "tableau", centrale à cette demande.

Toutefois, si vous supprimez plusieurs lignes au départ de votre code (point 2), le démarrage de votre tableau sera impacté (plus A10 mais A7).

Le point de blocage étant de ma compréhension cette "dernière ligne" à définir, n'hésitez pas à utiliser une variable, par exemple :
dim derligne as integer
et l'une ou l'autre des données à aller rechercher :
derligne = Cells(7,1).End(xlDown).Row (il ne faut pas de cellule vide jusqu'à la dernière ligne dans la colonne de recherche concernée en partant de cellule A7 de votre tableau
derligne = Cells(Rows.Count, 1).End(xlUp).Row (dernière ligne en partant du bas de la feuille, sur la première colonne)

Cela devrait vous permettre, si vous avez à compléter le code de Staple1600, de finaliser votre demander.

bon we
zebanx

edit : écriture pendant la double réponse, sujet soldé = :cool:
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390