Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Détection de la dernière ligne:Problème [ Langages dérivés / VBA ] (Papayaga)

lundi 16 octobre 2006 à 13:08:28 | Détection de la dernière ligne:Problème

Papayaga

 Bonjour,
J'ai lu que pour trouver la dernière cellule d'une plage utilisée, il fallait
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)
et donc, pour définir la dernière ligne:
l = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

Mais ceci donne la dernière cellule de la zone utilisée, même si cette cellule est vide (cas d'une dernière cellule dans laquelle ont a mis une valeur, avant de revenir dans cette cellule pour supprimer ladite valeur)

Le problème de l = Cells(Rows.Count, 1).End(xlUp).Row, est que cela détermine (très bien, au demeurant) la dernière cellule non vide de la première colonne, ou de la 2ème si Cells(Rows.Count, 1) est remplacé par Cells(Rows.Count, 2) etc... Mais faire la recherche colonne par colonne en comparant les différents l peut vite devenir lourd...

Quel programme simple peut définir à tout coup la dernière cellule non vide d'un grand tableau. Ce tableau a plusieurs colonnes (dont le nombre est connu et fixe), beaucoup de lignes, des cellules vides. Les lignes sont susceptibles de varier en nombre dans le temps, mais je cherche à déterminer la dernière ligne à un moment donné...

Merci d'avance


lundi 16 octobre 2006 à 13:32:37 | Re : Détection de la dernière ligne:Problème

Molenn

Au lieu d'utiliser SpecialCells(xlCellTypeLastCell), tu remplaces par 2 instructions successives :
Selection.End(xlDown).Select
Selection.End(xlToRight).Select
En positionnant ta cellule active sur la cellule (1,1) de ton tableau.

J'ai eu le même problème que toi avec LastCell, et depuis que j'ai mis ces 2 là, je n'ai plus aucun souci.

Molenn

lundi 16 octobre 2006 à 13:52:08 | Re : Détection de la dernière ligne:Problème

Papayaga

Merci de ta réponse,
 mais cela ne marche pas, car la recherche s'arrête à la première cellule vide, par exemple au niveau C4, car A4 est vide et D4 également...
Or A5 a une valeur... et bien d'autres cellules au dessous, dans la colonne A, ou B, ou C...

lundi 16 octobre 2006 à 14:09:44 | Re : Détection de la dernière ligne:Problème

Papayaga

Re
J'ai peut-être trouvé une solution avec ceci:
Sub Dernière_cellule()

Dim l, li as integer
Cells(1, 1).Select
l = 1

For i = 1 To 3
    li = Cells(Rows.Count, i).End(xlUp).Row

    If li > l Then
       l = li
    End If
   
Next
               ' et l est la dernière ligne
End Sub

Il faut que je teste cela ...


lundi 16 octobre 2006 à 14:36:33 | Re : Détection de la dernière ligne:Problème

Molenn

Une solution pourrait être, mais c'est de la bidouille hein ...
Dans un premier temps, tu testes la dernière ligne avec
Selection.End(xlDown).address, ce qui te remonte les coordonnées de ta dernière ligne non vide.
Tu enregistres cette valeur dans une variable.
Et tu relances un Selection.End(xlDown).address
Tu testes l'adresse, si elle est différente de $A$65536, c'est que la valeur dans ta variable n'était pas la dernière ligne, etc ...

En fait, il faut garder à l'esprit dans ton tableau que quand tu fais un ctrl+flèche bas (l'équivalent de Selection.End(xlDown).select), ça va jusqu'à la dernière cellule vide. Et quand tu l'as effectivement atteint, la prochaine fois que tu fais ctrl+flèche bas, tu vas tout en bas du fichier Excel, soit la ligne 65536.

Avec une boucle, tu reproduis ce schéma en gardant dans une variable l'adresse de la cellule avant de lancer le code.

Faire ensuite la même chose pour les colonnes.

Ce n'est sans doute pas optimum ni génial mais bon ^^


Autre option : Tu peux avoir des lignes entièrement vides, ou seulement certaines cellules ?
Si aucune ligne ne peut être vide, tu peux lancer le code
Selection.End(xlDown).address
à partir de la première ligne de chaque colonne, et tu conserves l'adresse de cellule qui a le n° de ligne le plus élevé ?

Molenn

lundi 16 octobre 2006 à 15:59:09 | Re : Détection de la dernière ligne:Problème

Papayaga

Re
En fait, il faut garder à l'esprit dans ton tableau que quand tu fais un ctrl+flèche bas (l'équivalent de Selection.End(xlDown).select), ça va jusqu'à la dernière cellule vide. Et quand tu l'as effectivement atteint, la prochaine fois que tu fais ctrl+flèche bas, tu vas tout en bas du fichier Excel, soit la ligne 65536.

Non: ctrl+flèche bas renvoie à la dernière cellule qui précède une cellule vide... et comme j'ai différents groupes de cellules pleines séparés par une ou des cellules vides => problème.
par contre je n'ai pas de ligne entière vide, Chaque ligne a quelquepart une cellule pleine. C'est ce qui détermine qu'elle fait partie du tableau.
Je recherche la ligne qui contient la dernière cellule contenant une valeur. Ce qui équivaut à dire que le tableau s'arrête à cette ligne, après il n'y a plus de cellule pleine.

Non, la solution Selection.End(xlDown) ne me paraît pas bonne.

Par contre Sub Dernière_cellule() que j'ai écrit plus haut me paraît correctement fonctionner. Mais il faut que je l'éprouve plus dans toutes les configurations...

lundi 16 octobre 2006 à 17:17:31 | Re : Détection de la dernière ligne:Problème

LUSTRUCRU

Membre Club

Bonsoir,
Essaye cela, tu selectionnes  bien ta derniere ligne

Dim LigneSuivante As Long
LigneSuivante = Application.WorksheetFunction.CountA(Range("A:A")) + 1
JF


lundi 16 octobre 2006 à 17:49:30 | Re : Détection de la dernière ligne:Problème

Papayaga

Re

LigneSuivante = Application.WorksheetFunction.CountA(Range("A:A")) + 1

Cela ne marche pas, la ligne trouvée se situant au niveau de la 2ème cellule vide de la première colonne. De plus cela n'explore que la colonne A:A.

lundi 16 octobre 2006 à 18:22:08 | Re : Détection de la dernière ligne:Problème

LUSTRUCRU

Membre Club

Modifie ta plage de recherche:

Dim LigneSuivante As Long
LigneSuivante = Application.WorksheetFunction.CountA(Range("A:X")) +1


Chez moi cela fonctionne sur un tableau de 6700 Lignes sur 35 Colonnes


lundi 16 octobre 2006 à 20:02:11 | Re : Détection de la dernière ligne:Problème

mortalino

Membre Club


Salut,

essai mes fonctions :

' dans un module :

     Dim MaCellule As Range 
' *** Variable à placer dans les déclarations
 
 Public Function PremiereLigneVide(CelluleDepart As Range, _
    MonOrdre As XlSearchOrder, MaDirection As XlSearchDirection) As Long 
     If MonOrdre = xlByRows Then 
        PremiereLigneVide = _ 
        Columns(MaCellule.Column).Find("", MaCellule, , , MonOrdre, MaDirection).Row 
    Else 
        PremiereLigneVide = _ 
        Columns(MaCellule.Column).Find("", MaCellule, , , MonOrdre, MaDirection).Column 
    End If 
End Function 
____________________________________________________________________________

 Private Sub ExempleUtilisation() 
Sheets(1).Select 
 Set MaCellule = [A65536] 
' *** Il vous suffit de modifier la cellule de départ, pour la recherche, entre []
 
 MsgBox PremiereLigneVide(MaCellule, xlByRows, xlPrevious) 
' *** Ici, le 2ème et 3ème argument ont 2 possibilités proposées
'     2ème : xlByRows ou xlByColumns
'     3ème : xlNext   ou xlPrevious
 End Sub
 


Coloration syntaxique automatique [mortalino]
       
@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>


1 2

Cette discussion est classé dans : problème, ligne, cellule, dernière, cells


Répondre à ce message

Sujets en rapport avec ce message

Problème de textarea [ par hightec ] Salut à tous !Voilà je suis en train de réaliser un chat en php, le dialogue est affiché dans une textarea (remplie par la base de données) qui est ra FORMULE UTILISANT UNE VARIABLE [ par tomsawyer_911 ] Bonjour à tous, j'espère que vous allez pouvoir m'aider sur ce problème..Je souhaite utiliser une macro qui puissent appliquer à un certains nombre de Problème de carré avant un retour à la ligne [ par Sp00ky ] Bonjour à tous et à toutes,J'ai un petit problème d'apparence sous Excel 2003, lorsque j'écris plus d'une ligne dans une cellule.Il y'a un petit carré Problème sur algorithme VBA [ par eastpeople ] Bonjour, Je reposte un message car j'ai de nouveau un problème sur un de mes codes.J'ai un textebox où on rentre des activités puis quand on valide el Problème avec du texte entrer dans un textbox et ensuite collé dans une cellule [ par mvba ] Bonjour,Mon problème est le suivant :J'entre du texte dans un textbox. Ensuite, je crée une page à imprimer avec le texte dans une feuille Excel. Mais Recuperer les coordonnées excel d'une cellule [ par Gweilo ] Bonjour,j'utilise visual studio 2008 et office 2003a partir d une requete SQL je creer un tableau dans excelle tableau commence en A1 et se termine a problème inscription dans cellule [ par mps76 ] vba-excel cellule variable [ par refaat ] Bonjour à tous,peut etre que je pose ma question dans le mauvais forum mais je ne sais pas comment faire!mon problème est le suivant: je veux récup VB.Net Problème avec une requête SQL [ par MagDix ] BonjourJ'ai un problème avec ma requête SQLCa me dit comme erreur:System.InvalidCastException was unhandled"La conversion du type 'DBNull' en type 'St somme avec conditions .. :) [ par jpkandani ] Bonjour,un petit probleme qui ne me semblait pas si complique ...mais je ne trouve pas ...un tableau dont la premiere ligne avec des cellules contenan


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.