|
Trouver une ressource
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)
Informations & options pour cette discussion
|
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
|
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
|
|
lundi 16 octobre 2006 à 20:02:11 |
Re : Détection de la dernière ligne:Problème

mortalino
|
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>
|
|
|
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|