Fonction de recherche de la dernière ligne
Fermé
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
-
21 mars 2016 à 15:30
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 mars 2016 à 17:07
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 mars 2016 à 17:07
A voir également:
- Fonction de recherche de la dernière ligne
- Fonction si et - Guide
- Aller à la ligne excel - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
5 réponses
wakafa
Messages postés
39
Date d'inscription
mercredi 22 juillet 2015
Statut
Membre
Dernière intervention
7 décembre 2020
Modifié par wakafa le 21/03/2016 à 16:36
Modifié par wakafa le 21/03/2016 à 16:36
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
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
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
21 mars 2016 à 16:55
21 mars 2016 à 16:55
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.
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.
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
Modifié par f894009 le 22/03/2016 à 09:17
Modifié par f894009 le 22/03/2016 à 09:17
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 pas
et s'il marchait ca donnerait la premiere cellule vide, pas la derniere non vide
celui-ci oui:
mimoz2:
j'entre me renvoie dans la variable une valeur égale à 0.
Impossible, c'est au mini 1
wakafa:
ce code ne marche pas
fin_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
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 10:19
22 mars 2016 à 10:19
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.
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.
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 10:29
22 mars 2016 à 10:29
De plus, la valeur renvoyée par range("A65536").End(xlUp).Row est 1 et fin_col = 0.
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
>
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 11:31
22 mars 2016 à 11:31
Re,
Sheets("data_Temp")existe au moins ????
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 11:33
22 mars 2016 à 11:33
Bien sur, je l'ai déclaré de la manière suivante
Dim ShTemp As Worksheet
Set ShTemp = Workbooks("Outil_V1.xlsm").Sheets("dataTemp")
fin_col = ShTemp.range("A" & range("A65536").End(xlUp).Row).Row
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 11:50
22 mars 2016 à 11:50
J'ai réussi à faire fonctionner la formule, mais cette dernière renvoie toujours 1 pour ma variable fin_col
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
>
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 12:22
22 mars 2016 à 12:22
Re,
fin_col = ShTemp.Range("A" & ShTemp.Range("A65536").End(xlUp).Row).Row
fin_col = ShTemp.Range("A" & ShTemp.Range("A65536").End(xlUp).Row).Row
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
22 mars 2016 à 15:30
22 mars 2016 à 15:30
une maquette -démo
http://www.cjoint.com/c/FCwoDeAR86F
le code
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
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 15:38
22 mars 2016 à 15:38
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 :
car un message d'erreur apparait au niveau de la ligne soulignée.
Merci encore et désolée de t'ennuyer.
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.
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
22 mars 2016 à 15:49
22 mars 2016 à 15:49
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 ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
>
mimoz2
Messages postés
16
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
22 mars 2016
Modifié par michel_m le 22/03/2016 à 17:09
Modifié par michel_m le 22/03/2016 à 17:09
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
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