OVH Cloud OVH Cloud

lastcell

19 réponses
Avatar
Andrew
excusez-moi j'ai omis de mettre un objet

Andrew

9 réponses

1 2
Avatar
Jacky
Bonjour,
Or je souhaite seulement que le code de la macro sélectionne toujours
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?


Perso, je l'utilise de cette façon:
'----------
Sub jj()
On Error GoTo err
Cells(Cells.Find("*", , 1, , 1, 2).Row, Cells.Find("*", , 1, , 2,
2).Column).Select
On Error GoTo 0
Exit Sub
err:
MsgBox "Aucune cellule renseignée"
End Sub
'-----------
Salutations
JJ


"Cucky" a écrit dans le message de
news:
Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujours
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky

Avatar
Andrew
Bonjour Michel

J'ai testé le code que tu as écrit, mais je n'ai toujours pas le bon
résultat. J'utilise Excel 2003

Bonne journée

Andrew

"Michel Gaboly" a écrit dans le message de news:
ejPs$
Bonsoir,

Cette simple procédure réinitialise correctement la position de la dernière
cellule, sans qu'un enregistrement soit
nécessaire :

Sub MAJLastCell()
ActiveSheet.UsedRange
End Sub


Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujours
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Michel Gaboly
Rebonjour,

Voici comment j'ai testé :


J'ai créé un nouveau classeur. Dans la feuille active, j'ai entré q uelque chose dans la une cellule quelconque.

J'ai vérifié avec Edition, Atteindre, bouton Cellules, Dernière cel lule que la cellule renseignée était bien considérée
comme la dernière cellule.

J'ai ensuite effeacé la cellule, puis inséré un module, entré la Sub que je t'ai indiquée. Après exécution, la dernière
cellule est bien en A1.


Bonjour Michel

J'ai testé le code que tu as écrit, mais je n'ai toujours pas le bo n
résultat. J'utilise Excel 2003

Bonne journée

Andrew

"Michel Gaboly" a écrit dans le message de news:
ejPs$
Bonsoir,

Cette simple procédure réinitialise correctement la position de la dernière
cellule, sans qu'un enregistrement soit
nécessaire :

Sub MAJLastCell()
ActiveSheet.UsedRange
End Sub


Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujour s
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky








--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Andrew
Bonjour Michel

Avec toutes mes excuses Michel. ça marche parfaitement

Range("a1").Select
MAJLastCell '(sous routine)
Selection.SpecialCells(xlCellTypeLastCell).Activate

Dans mon précédent test, j'avais mis la ligne MAJLastCell en deuxieme
position

Merci infiniment à un excellentissime Excelien

Andrew


"Michel Gaboly" a écrit dans le message de news:
OR4$
Rebonjour,

Voici comment j'ai testé :


J'ai créé un nouveau classeur. Dans la feuille active, j'ai entré quelque
chose dans la une cellule quelconque.

J'ai vérifié avec Edition, Atteindre, bouton Cellules, Dernière cellule que
la cellule renseignée était bien considérée
comme la dernière cellule.

J'ai ensuite effeacé la cellule, puis inséré un module, entré la Sub que je
t'ai indiquée. Après exécution, la dernière
cellule est bien en A1.


Bonjour Michel

J'ai testé le code que tu as écrit, mais je n'ai toujours pas le bon
résultat. J'utilise Excel 2003

Bonne journée

Andrew

"Michel Gaboly" a écrit dans le message de news:
ejPs$
Bonsoir,

Cette simple procédure réinitialise correctement la position de la
dernière cellule, sans qu'un enregistrement soit
nécessaire :

Sub MAJLastCell()
ActiveSheet.UsedRange
End Sub


Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujours
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky








--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
isabelle
bonjour Cucky,

essaie la méthode longue :

Lx = Cells.Find("*", [A1], xlValues, , xlByRows, xlPrevious).Row
Cx = Cells.Find("*", [A1], xlValues, , xlByColumns, xlPrevious).Column

isabelle


Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujours
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky



FxM wrote:

Bonsoir Cucky,

Cells.Find("*", , 1, , 2, 2).Column t'indique la numérod e la dernière
colonne. Il faut que tu utilises ce nombre ou l'affectes à une variable.
Idem pour la dernière ligne.

Quelque chose comme :
Sub test()
' Macro enregistrée le 07/09/2006 par Corinne
Range("a1").Select
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column
lx = activesheet.Cells.Find("*", , 1, , 1, 2).Row
msgbox "dernière cellule en :" & vbnewline & _
"colonne " & cx & vbnewline & _
"ligne " & lx
End Sub

@+
FxM




Bonjour,
l'alternative d'AV m'intéresse mais quand je l'essaie, j'ai un message
d'erreur :

"Erreur de compilation
Utilisation incorrecte de la propriété"


Voici mon code:
Sub test()
'
' test Macro
' Macro enregistrée le 07/09/2006 par Corinne
'
'
Range("a1").Select
Cells.Find("*", , 1, , 2, 2).Column
Cells.Find("*", , 1, , 1, 2).Row
End Sub

Attention, je suis une grande débutante,
merci de vos lumières
Corinne


Jacky wrote:

Bonsoir

<<<Si après avoir effacé ou même suprimé ma plage j'exécute à nouveau la
même
<<<macro, le résultat sera à nouveau F22.



Excel a la fâcheuse habitude de garder en mémoire la sélection de
"SpecialCells(xlCellTypeLastCell)" même après effacement de la plage, sauf
si le fichier est enregistré puis ré-ouvert.

Av avait donné une alternative.
dernièrecollonne = Cells.Find("*", , 1, , 2, 2).Column
dernièreligne = Cells.Find("*", , 1, , 1, 2).Row

Salutations
JJ

"Andrew" a écrit dans le message de news:


excusez-moi j'ai omis de mettre un objet

Andrew













Avatar
Michel Gaboly
Aucun problème, le principal est que cela marche ;-)))

Bonjour Michel

Avec toutes mes excuses Michel. ça marche parfaitement

Range("a1").Select
MAJLastCell '(sous routine)
Selection.SpecialCells(xlCellTypeLastCell).Activate

Dans mon précédent test, j'avais mis la ligne MAJLastCell en deuxie me
position

Merci infiniment à un excellentissime Excelien

Andrew


"Michel Gaboly" a écrit dans le message de news:
OR4$
Rebonjour,

Voici comment j'ai testé :


J'ai créé un nouveau classeur. Dans la feuille active, j'ai entré quelque
chose dans la une cellule quelconque.

J'ai vérifié avec Edition, Atteindre, bouton Cellules, Dernière c ellule que
la cellule renseignée était bien considérée
comme la dernière cellule.

J'ai ensuite effeacé la cellule, puis inséré un module, entré l a Sub que je
t'ai indiquée. Après exécution, la dernière
cellule est bien en A1.


Bonjour Michel

J'ai testé le code que tu as écrit, mais je n'ai toujours pas le b on
résultat. J'utilise Excel 2003

Bonne journée

Andrew

"Michel Gaboly" a écrit dans le message de news:
ejPs$
Bonsoir,

Cette simple procédure réinitialise correctement la position de la
dernière cellule, sans qu'un enregistrement soit
nécessaire :

Sub MAJLastCell()
ActiveSheet.UsedRange
End Sub


Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujou rs
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky










--
Cordialement,

Michel Gaboly
www.gaboly.com



Avatar
AV
.........ça marche parfaitement


Hum...hum....
SpecialCells(xlCellTypeLastCell) et UsedRange se préoccupent, non seulement des
contenus, mais aussi des formats.
Une cellule vide mais formatée différemment de l'ensemble de la feuille est
considérée comme "LastCell" !

L'instruction "ActiveSheet.UsedRange" n'est pas totalement opérante pour
"réinitialiser" la feuille
Test à faire :
1* Dans une feuille vierge (jamais servi) dont le format de cellule par défaut
est Arial 10, simplement formater la cellule B5 en taille 12
2* Lancer > Edition > Atteindre .....Dernière cellule --> XL sélectionne B5
3* Ensuite reformater (quelle que soit la méthode) cette cellule dans le format
d'origine (Taille 10)
4* Exécuter l'instruction : ActiveSheet.UsedRange
5* Relancer l'étape 2* et constater ...que l'instruction précédente a été
inefficace !

Moralité :
Pour trouver la dernère cellule renseignée, voir les réponses de mes petits
camarades utilisant la méthode "Find"

AV



Range("a1").Select
MAJLastCell '(sous routine)
Selection.SpecialCells(xlCellTypeLastCell).Activate

Dans mon précédent test, j'avais mis la ligne MAJLastCell en deuxieme position

Merci infiniment à un excellentissime Excelien

Andrew


"Michel Gaboly" a écrit dans le message de news:
OR4$
Rebonjour,

Voici comment j'ai testé :


J'ai créé un nouveau classeur. Dans la feuille active, j'ai entré quelque
chose dans la une cellule quelconque.

J'ai vérifié avec Edition, Atteindre, bouton Cellules, Dernière cellule que la
cellule renseignée était bien considérée
comme la dernière cellule.

J'ai ensuite effeacé la cellule, puis inséré un module, entré la Sub que je
t'ai indiquée. Après exécution, la dernière
cellule est bien en A1.


Bonjour Michel

J'ai testé le code que tu as écrit, mais je n'ai toujours pas le bon
résultat. J'utilise Excel 2003

Bonne journée

Andrew

"Michel Gaboly" a écrit dans le message de news:
ejPs$
Bonsoir,

Cette simple procédure réinitialise correctement la position de la dernière
cellule, sans qu'un enregistrement soit
nécessaire :

Sub MAJLastCell()
ActiveSheet.UsedRange
End Sub


Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujours
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky








--
Cordialement,

Michel Gaboly
www.gaboly.com





Avatar
Michel Gaboly
"3* Ensuite reformater (quelle que soit la méthode) cette cellule dans le format d'origine (Taille 10)"



"quelle que soit la méthode", c'est faux : un Copier:Collage special fo rmat (avec le pinceau) à partir d'une cellule
vide pour rétablir le format antérieur en B5 fait l'affaire :

1 - Feuille vierge, application d'un format spécifique en B5 : encadrem ent + couleur de fond + changement de taille de
police.

2 - On constate (avec F5, cellules) que la dernière cellule est en B5

3 - Utilisation du pinceau pour appliquer en B5 le format d'une autre cel lule.

4 - Exécuter l'instruction : ActiveSheet.UsedRange

5 - La dernière cellule est bien en A1


.........ça marche parfaitement


Hum...hum....
SpecialCells(xlCellTypeLastCell) et UsedRange se préoccupent, non seu lement des
contenus, mais aussi des formats.
Une cellule vide mais formatée différemment de l'ensemble de la feu ille est
considérée comme "LastCell" !

L'instruction "ActiveSheet.UsedRange" n'est pas totalement opérante p our
"réinitialiser" la feuille
Test à faire :
1* Dans une feuille vierge (jamais servi) dont le format de cellule par défaut
est Arial 10, simplement formater la cellule B5 en taille 12
2* Lancer > Edition > Atteindre .....Dernière cellule --> XL sélect ionne B5
3* Ensuite reformater (quelle que soit la méthode) cette cellule dans le format
d'origine (Taille 10)
4* Exécuter l'instruction : ActiveSheet.UsedRange
5* Relancer l'étape 2* et constater ...que l'instruction précéden te a été
inefficace !

Moralité :
Pour trouver la dernère cellule renseignée, voir les réponses de mes petits
camarades utilisant la méthode "Find"

AV


Range("a1").Select
MAJLastCell '(sous routine)
Selection.SpecialCells(xlCellTypeLastCell).Activate

Dans mon précédent test, j'avais mis la ligne MAJLastCell en deuxi eme position

Merci infiniment à un excellentissime Excelien

Andrew


"Michel Gaboly" a écrit dans le message de news:
OR4$
Rebonjour,

Voici comment j'ai testé :


J'ai créé un nouveau classeur. Dans la feuille active, j'ai entré quelque
chose dans la une cellule quelconque.

J'ai vérifié avec Edition, Atteindre, bouton Cellules, Dernière cellule que la
cellule renseignée était bien considérée
comme la dernière cellule.

J'ai ensuite effeacé la cellule, puis inséré un module, entré la Sub que je
t'ai indiquée. Après exécution, la dernière
cellule est bien en A1.


Bonjour Michel

J'ai testé le code que tu as écrit, mais je n'ai toujours pas le bon
résultat. J'utilise Excel 2003

Bonne journée

Andrew

"Michel Gaboly" a écrit dans le message d e news:
ejPs$
Bonsoir,

Cette simple procédure réinitialise correctement la position de l a dernière
cellule, sans qu'un enregistrement soit
nécessaire :

Sub MAJLastCell()
ActiveSheet.UsedRange
End Sub


Bonsoir FxM,
merci mais maintenant le DEBOGEUR me dit:
"L'indice n'appartient pas à la sélection"
et met en jaune la ligne :
cx = activesheet.Cells.Find("*", , 1, , 2, 2).Column

Or je souhaite seulement que le code de la macro sélectionne toujo urs
la cellule la plus à droite et la plus en bas, donc pas d'effet de
mémoire comme LASTCELL ?

Je suis peut-être trop nulle ou novice... ?!
Cucky






--
Cordialement,

Michel Gaboly
www.gaboly.com







--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
AV
"quelle que soit la méthode", c'est faux


Alors je suis pas tétu, j'enlève ce morceau d'affirmation !
...et je continue
* à fortement conseiller la recherche de la dernière cellule renseignée par la
méthode find
* et à fortement déconseiller UsedRange ou LastCell

AV

1 2