Fonction de recherche de la dernière ligne
mimoz2
Messages postés
16
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à trouver et à stocker le numéro de la dernière ligne d'une de mes colonnes. Le problème est que le code que j'entre me renvoie dans la variable une valeur égale à 0. Auriez-vous une idée d'où cela pourrait venir ?
J'ai déclaré et initialisé ma variable de cette façon :
Dim fin_col As Integer
fin_col = range("A65536").End(xlUp).Row
Merci par avance,
Et bonne journée à tous.
Je cherche à trouver et à stocker le numéro de la dernière ligne d'une de mes colonnes. Le problème est que le code que j'entre me renvoie dans la variable une valeur égale à 0. Auriez-vous une idée d'où cela pourrait venir ?
J'ai déclaré et initialisé ma variable de cette façon :
Dim fin_col As Integer
fin_col = range("A65536").End(xlUp).Row
Merci par avance,
Et bonne journée à tous.
5 réponses
-
Bonjour,
Tu essaies la syntaxe suivante:
Dim fin_col As Integer
fin_col =Sheets("Feuilx"). range("A65536" & Rows.Count).End(xlUp).Row+1
Feuilx= la feuille dans laquelle vous travaillez
9a permet de trouver le numéro de la derniere ligne non vide. pour le stockage ça dépend ou tu veux stocker ta valeur -
Je souhaitais stocker cette valeur afin de m'en servir comme fin de boucle for. Et par la suite tracer automatiquement un graphe.
fin_col = Sheets("data_Temp").range("A65536" & Rows.Count).End(xlUp).Row
For i = 2 To fin_col
abscisse(i) = range("B" & i).Value
ordonnee(i) = range("A" & i).Value
Next
Une nouvelle erreur m'est renvoyée, cette dernière est du type "l'indice n'appartient pas à la sélection" et ma valeur de fin_col est toujours à zéro. J'ai du mal à comprendre pourquoi. -
Bonjour a vus deux,
mimoz2:
j'entre me renvoie dans la variable une valeur égale à 0.
Impossible, c'est au mini 1
wakafa:
ce code ne marche pasfin_col =Sheets("Feuilx"). range("A65536" & Rows.Count).End(xlUp).Row+1
et s'il marchait ca donnerait la premiere cellule vide, pas la derniere non vide
celui-ci oui:fin_col = Sheets("data_Temp").Range("A" & Range("A65536").End(xlUp).Row).Row -
Bonjour f894009,
L'erreur "l'indice n'appartient pas à la sélection" continue à apparaître au niveau de la ligne :
fin_col = Sheets("data_Temp").range("A" & range("A65536").End(xlUp).Row).Row
Sauriez-vous d'où cela peut venir ?
Merci pour votre aide. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
une maquette -démo
http://www.cjoint.com/c/FCwoDeAR86F
le code
Option Explicit
'-----------------------------------
Sub graf()
Dim Derlig As Long, Ordonnee, Abcisse
With ActiveSheet
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
Ordonnee = Application.Transpose(.Range("A2:A" & Derlig))
Abcisse = Application.Transpose(.Range("B2:B" & Derlig))
End With
'restitution pour vérifier
With Sheets(2)
.Range("B1") = "abcisse"
.Range("B2").Resize(UBound(Abcisse)) = Application.Transpose(Abcisse)
.Range("D1") = "ordonnée"
.Range("D2").Resize(UBound(Ordonnee)) = Application.Transpose(Ordonnee)
End With
End Sub
-
Merci beaucoup pour ton aide, mais je suis un peu débutante en VBA et je n'ai pas entièrement compris ce qui étais effectué grâce à ce code. Pourrais-tu m'en dire un peu plus ?
Par ailleurs, je pense que ce format n'est pas reconnu par la fonction :
With ActiveChart
.SeriesCollection.NewSeries
.SeriesCollection(1).ShTemp.XValues = abscisse 'Abscisses
.SeriesCollection(1).ShTemp.Values = ordonnee 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlLine
End With
car un message d'erreur apparait au niveau de la ligne soulignée.
Merci encore et désolée de t'ennuyer. -
En ajoutant un espion sur ordonne et abscisse, j'ai l'impression que cette routine remplit directement les deux variables, est-ce bien cela ? Comment est-ce possible sans aucune boucle ?
- Les variables tableaux recense les valeurs dans les cellules désignées par
tablo=range("A2:A100") et sont envoyées en mémoire RAM
lorsqu'on restitue par exemple en sheets(2) range(C2:A100)=tablo, on renvie les valeurs dans les cellules (quand tu veux copier une plage d'un endroit à un autre, c'est beaucoup + rapide et propre qu'un classique copy- paste)
pourquoi transpose ?
dans le cas d'une colonne de cellules, si tu écris
tablo=range(A2:100) le tableau est de la forme tablo(x,1) ce qui veut dire X données sur 1 dimension , ce dont se moque le processeur et la RAM qui ne s'intéressent qu'aux valeurs ...
Transpose permet d'avoir un tablo de la forme tablo(X) horizontal en RAM,ce qui simplifie le code
à la restitution il faut refaire un transpose pour restituer verticalement
-