[Excel] Ecrire à la suite

cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 6 sept. 2006 à 17:36
yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010 - 21 sept. 2006 à 14:29
Bonjour,

J'écrit dynamiquement dans un fichier excel et j'aimerais ajouter du texte à celui déjà existant s'il y en a.

Comment obtenir la première celule vide d'une colone ?

J'ai fait ça:
while VarToStr(MaFeuille.Cells.Item[index,1].Value)<>'' do
index := index+1;

Mais ça devient très lent s'il y a beaucoup de données déjà.

6 réponses

yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010
18 sept. 2006 à 23:41
Essaie de jouer avec Fin + flèche, et d'enregistrer ça dans une macro.

De mémoire (parce que si je teste sous OpenOffice ça ne va pas beaucoup
t'aider), en étant situé dans une cellule non vide, Fin + flèche bas
t'amène sur la cellule au-dessus de la prochaine cellule vide.
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
19 sept. 2006 à 09:07
Bonjour yopai_v
Non, fin+bas emmène juste avant la PREMIERE cellule vide rencontrée, s'il y a un trou dans les données, cela ne fonctionne pas.

En fait, si on fait: ctrl+bas et origin+haut, ça doit être plus fidèle à ce que je recherche...
Sais tu comment simuler l'appui de ces touches sur un classeur qui n'est pas forcement visibe ?
0
yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010
19 sept. 2006 à 22:49
tu as essayé d'enregistrer ces séquences de touches dans une macro ?
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
20 sept. 2006 à 09:36
Non, je ne peux pas car je n'ai pas main mise sur le fichier excel, il peut être différent à chaque fois.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010
21 sept. 2006 à 14:26
Je me suis mal exprimé :

dans un classeur quelconque, tu fais "Enregistrer macro"

tu enregistres la séquence de touches que tu veux

et tu arrêtes

> la macro contient le code que tu cherches

C'est une méthode à retenir pour savoir comment "simuler" certaines choses.


En l'occurrence, je te conseille la séquence suivante :

   Ctrl+Fin, Origine, puis bas


Ce qui donne :

      ActiveCell.SpecialCells(xlLastCell).Select    ' Ctrl + Fin

      Cells(ActiveCell.Row,
1).Select                  
' Origine

      ActiveCell.Offset(1,
0).Select                     
' Bas

     
Selection.End(xlUp).Select                         
' Fin / haut

      ActiveCell.Offset(1,
0).Select                     
' Bas


Explications :

Ctrl+Fin t'amène sur la dernière cellule du "UsedRange", cad la plage utilisée de ta feuille de calcul.

Origine revient sur la première cellule

Là, j'ai ajouté (bas, puis fin/haut), car le "UsedRange" peut contenir
des lignes vides (lorsque tu supprimes des lignes, la limite basse du
"UsedRange" n'est pas remontée). Donc je fais bas + Fin/haut pour être
sûr de me retrouver sur la première ligne non vide en partant de la fin.

Et donc, je descend d'un cran pour être sur la ligne qui suit.
0
yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010
21 sept. 2006 à 14:29
bien sûr, si classeur n'est pas visible, il faut remplacer les .Select par des affectations, ce qui donne quelque chose comme :

     set cell = Cells(0,0).SpecialCells(xlLastCell)    ' Ctrl + Fin

      set cell = Cells(cell.Row,
1)            
' Origine

      set cell = Offset(1,
0)                     
' Bas

      set cell =
cell.End(xlUp)                 
' Fin / haut

      set cell = cell.Offset(1,
0)               
' Bas
0
Rejoignez-nous