Première cellule vide

  • Initiateur de la discussion Charles
  • Date de début
C

Charles

Guest
Bonjour,

J'ai lutté avant de finalement abdiquer et venir demander de l'aide. C'est pourtant pas compliqué mais j'ai des gros problèmes de syntaxe et les ActiveSheet et autres Select resteront pour moi éternellement un mystère dans VBA. Une fois ça marche, une fois ça ne marche plus.

Merci de m'éclairer sur le sujet suivant.

Dans la colonne A d'une feuille, je voudrais qu'il me place sur la première cellule vide à partir de la cellule A3. C'est tout.

Sheets("Historique modifications").Select
ActiveSheet.Range("A3").Select
ActiveCell.End(xlDown)(2).Select

Ca marchait, ça ne marche plus.

Avec tout mes remerciements pour une solution à ce problème,

Charles
 
J

Jon

Guest
bonjour

les méthodes avec Find sont à préférer si l'on veut travailler sur toute la feuille. Regardez là pour des exemples : <http://xlbysteph.free.fr/aideinformatique/actioncellule.htm#Selection_VBA_Speciales>



sinon on peut se contenter d'utiliser "End"

il faut préférer travailler à partir de la dernière cellule puis remonter
[A65536].end(xlup).offset(1).activate


bye
stephane
 
@

@+Thierry

Guest
Bonjour Zè, Jean-Marie, Pascal, Charles

Attention Jean-Marie, Zè, lorsque l'on parle de sélection, on ne peut sélectionner une cellule, si celle-ci ne se trouve pas sur la Feuille Active...

Je sais bien que c'est dans un soucis d'éviter un Select de plus, mais dans ce cas présent on Select, donc on Select à fond !! lol

Voici une autre alternative :

Sub PremiereCellVideEnPartantDuBas()
With Worksheets("Historique modifications")
.Activate
.Range("A65536").End(xlUp)(2).Select
End With
End Sub


Pour résumer pour Charles :

Sub PremiereCellVideEnPartantDuHaut() 'de Pascal et Jean-Marie
With Worksheets("Historique modifications")
.Activate
.Range("A3").End(xlDown)(2).Select
End With
End Sub


Sub PremiereCellVideDansLeTableau() 'de Zè
With Worksheets("Historique modifications")
.Activate
.Range("A3:A65536").Find("").Select
End With
End Sub

En fait ces deux dernières méthodes sont quasiment les même niveau résulat => Trouver la premiere cellule vide dans le Tableau (même au milieu de celui-ci)... Peut-être un poil plus rapide sur de grand tableau pour la "xlDown" qui est une fonction auto d'Excel, alors que le find va aller chercher pour de bon sur toutes les cellules...

Par contre la méthode "XlUp" trouvera la vraie première cellule vide en fin de tableau, même si le tableau contient des cellules vides dans son contenu...

Bon Appétit
@+Thierry
 
P

Pascal76

Guest
Salut Jon

Pour ce qui est de "préférer travailler à partir de la dernière cellule puis remonter" tout dépend de ce que tu veux faire.

Dans le cas présent Charles demandait : "Dans la colonne A d'une feuille, je voudrais qu'il me place sur la première cellule vide à partir de la cellule A3"

Mais sinon oui dans beaucoup de cas il vaut lieux partir du bas et remonter

Bonne journée

Pascal
 
@

@+Thierry

Guest
Bonjour Dan aussi, re tout le monde

Oui, en fait comme je disais tout dépend de ce que l'on veut trouver Pascal, c'est pour ceci que j'ai résumé les méthodes pour Charles, il a le choixc maintenant, manque plus que lui !

Sinon pour Dan, oui "of course" Offset(1,0) qui fait idem que (2) mais donc en fait alors comme dans mon warning... Il n'est même plus nécessaire de préciser la Sheet...

Vu qu'obligatoirement ce doit être la feuille active comme j'ai détaillé.

Sub Directos ()
Range("A3").End(xlDown).Offset(1, 0).Select
End Sub

Mais bon, je préfère préciser la feuille et l'activer ...

Bon App
@+Thierry
 
C

Charles

Guest
Merci à tous pour toutes ces propositions !! C'est très sympa.
Je dois avoir un problème de déclaration ou je ne sais quoi parcequ'il plante quand on arrive à
With Worksheets("Historique modifications")
.Activate
.Range("A3").End(xlDown)(2).Select
End With

ou

Sheets("Historique modifications").Range("A3").End(xlDown).Offset(1, 0).Select

ou avec les autres propositions. Il marque

"Erreur d'execution 1004
Erreur définie par l'application ou l'objet"


Charles
 
C

Charles

Guest
Un peu plus de précisions lors du débogage pas à pas :

With Worksheets("Historique modifications")
.Activate
.Range("A3").End(xlDown).Offset(1, 0).Select
End With

Lorsque je teste avec ça par exemple, il m'active bien la feuille mais plante à la ligne "Range ...", je ne comprends vraiment pas.

Merci

Charles
 
C

Charles

Guest
Un peu plus de précisions lors du débogage pas à pas :

With Worksheets("Historique modifications")
.Activate
.Range("A3").End(xlDown).Offset(1, 0).Select
End With

Lorsque je teste avec ça par exemple, il m'active bien la feuille mais plante à la ligne "Range ...", je ne comprends vraiment pas.

Merci

Charles
 
@

@+Thierry

Guest
Re Charles, le Fil, le Forum

Ben oui, ta colonne "A" est vide !!!, c'est le coup classique du XLDown... C'est pour ceci qu'on a proposé le XLup avec STéphane...

Bon sinon avec un xlDown on peut faire ceci :

Sub PremiereCellVideEnPartantDuHaut()
With Worksheets("Historique modifications")
If Range("A4") = "" Then Range("A4").Select: Exit Sub
.Activate
.Range("A3").End(xlDown)(2).Select
End With
End Sub

Bon Aprèm
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 590
Messages
2 090 040
Membres
104 354
dernier inscrit
Chass