Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Sélection de ligne ..

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JONEY76

XLDnaute Occasionnel
Bonjour à tous,

Voilà mon soucis..

J'importe des lignes d'un fichier txt dans une feuille excel,
Le nombre de ligne varie,
Disons de j'ai à peu près 3000 lignes

Je souhaite en garder un certain nombre en partant de la fin
Ce nombre est défini par une valeur dans ma textbox



Private Sub CommandButton1_Click()
Dim MaLigne As Variant
Dim Ligne As Variant
Dim nb As Variant
nb = TextBox1.Value


MaLigne = Range("A1").End(xlDown).Address
MaLigne = Range(MaLigne).Row
Range("A" + CStr(MaLigne)).Select
If TextBox1 = "" Then

Else

'là ça plante
ActiveCell.Cells(2 - nb, 5).EntireRow.Copy
'ActiveCell.Cells(2 - nb, 5).EntireRow.End(xlDown).Copy

End If

End Sub


Import des données vers excel, c'est OK
Trouver la dernière ligne du fichier excel : c'est tout bon
Remonter du nombre de ligne défini dans la textbox, ça marche


Là où ça bloque...C'est que je n'arrive pas à lui dire de me copier les lignes
à partir du nombre que j'ai entré dans la textbox

1)j'importe
2)je trouve la dernière ligne
3) je remonte du nombre de ligne de ma textbox
4) Ca copie de la ligne trouvée jusqu'à la dernière ligne


J'espère que j'explique bien, car c'est pas évident
 
Re : Sélection de ligne ..

Bonsoir JONEY76,

Une fois tes lignes copiées, tu en fais quoi?

Sinon pour répondre à ta question :
-> je trouve la dernière ligne
-> je remonte du nombre de ligne de ma textbox
-> Ca copie de la ligne trouvée jusqu'à la dernière ligne

Code:
Private Sub CommandButton1_Click()
Dim MaLigne As Long, Nb As Long

Nb = TextBox1.Value

MaLigne = Range("A1").End(xlDown).Row

  If TextBox1 = "" Then
       Exit Sub
  Else
       Rows(MaLigne[B][COLOR="Red"] - Nb[/COLOR][/B] & ":" & MaLigne).Copy
       [COLOR="Green"]' ...[/COLOR]
  End If

End Sub

Ca va mieux?

Bonne fin de soirée

PS. : si comme moi tu es avares en nombre de caractères, tu peux remplacer :
-> MaLigne = Range("A1").End(xlDown).Row
par le code ci-dessous :
-> MaLigne = [A1].End(xlDown).Row
 
Dernière édition:
Re : Sélection de ligne ..

Bonsoir,

Attention, j'ai édité mon message après que tu es répondu!

J'avais lu trop vite ta question. J'ai corrigé mon code dans mon précédent mail.
(en rouge la partie rajoutée)

Bonne fin de soirée
 
Re : Sélection de ligne ..

Bonsoir JONEY76,

Dans ta macro, tu cherchais la dernière ligne de ton tableau.

Que l'on parte du haut :
[A1].End(xlDown).Row

Ou du bas :
[A65536].End(xlUp).Row

On obtiendra le même résultat (sauf si dans ton tableau, colonne A, il y a des cellules vide au milieu de ta colonne.

Voila ce qui me vient à l'esprit en te lisant. Mais en te re-lisant, j'ai l'impression de louper quelquechose dans ta question!

Que veux-tu dire exactement?

Tu ne peux pas mettre un exemple? En indiquant la valeur contenu dans TextBox1 et colorier les lignes à copier dans ce cas de figure?

A te lire

Cordialement

PS. : à moins que le problème vienne d'ailleurs, que tu n'es pas tenu de la modification que j'ai apporté à mon code tout à l'heure?
Pour mémoire, j'ai remplacé :

Code:
Rows(Nb & ":" & MaLigne).Copy

par :
Code:
Rows(MaLigne - Nb & ":" & MaLigne).Copy
 
Dernière édition:
Re : Sélection de ligne ..

Re-bonsoir,

C'est donc bien ce qu'il me semblait!
Nous avons 3000 ligne et je veux copier les 50 dernières

Donc je suppose que l'utilisateur saisie dans la TextBox1 le chiffre 50?

Si oui, c'est bien ça, le code ci-dessous ferra l'affaire :
Code:
Private Sub CommandButton1_Click()
Dim MaLigne As Long, Nb As Long

Nb = TextBox1.Value

MaLigne = Range("A1").End(xlDown).Row

  If TextBox1 = "" Then
       Exit Sub
  Else
       Rows(MaLigne - Nb & ":" & MaLigne).Copy
       ' ...
  End If

End Sub

Bonne fin de soirée
 
Re : Sélection de ligne ..

Ca y est ca fonctionne avec

Rows(MaLigne - Nb & ":" & MaLigne).Copy

lorsque je place cette ligne dans mon code juste apres else

Je mets fichier excel à jour



Merci beaucoup pour ton aide !!
 

Pièces jointes

Re : Sélection de ligne ..

Bonsoir,

Autant pour moi!!! L'habitude d'écrire au kilomètre, poster et seulement après corriger les fautes d'orthographes (du moins celles que je trouve), et éventuellement vérifier que je ne suis pas allé trop vite en besogne!!!

Résultat des courses, nos questions/réponses se sont croisées!

Mais bon, l'essentiel est que tu as enfin ta réponse!

Encore désolé, bonne fin de soirée
 
Re : Sélection de ligne ..

Re-bonsoir,

Par curiosité, j'ai regardé ton fichier, je ne comprend pas pourquoi tu as laissé :
Code:
MaLigne = Range("A65000").End(xlUp).Address
MaLigne = Range(MaLigne).Row
Range("A" + CStr(MaLigne)).Select

Cela n'apporte rien à notre problème!!!! Et ne sert à rien!

La macro que je t'ai transmise était à mettre à la place (entièrement, et pas seulement la ligne : Rows(MaLigne - Nb & ":" & MaLigne).Copy

Regarde le fichier ci-joint.

Pour information : si ta cellule A1 est vide, au lieu d'écrire
Code:
Range("A1").End(xlDown).Row

Il faut écrire :
Code:
Range("A[COLOR="Blue"][B]2[/B][/COLOR]").End(xl[COLOR="Blue"][B]Down[/B][/COLOR]).Row
ou :
Code:
Range("A[COLOR="Blue"][B]65536[/B][/COLOR]").End(xl[COLOR="Blue"][B]Up[/B][/COLOR]).Row

A te lire

Cordialement
 

Pièces jointes

Re : Sélection de ligne ..

Petit rajout

(mais cette fois ci j'ouvre un nouveau post pour que cela soit plus clair)

Code:
[COLOR="Green"]' tu vas sur la cellule A65000 (qui normalement est vide) et tu remonte jusqu'à
' la première cellule pleine trouvé. Puis tu prend l'adresse de cette cellule : le nom de la
' colonne ET le numéro de la ligne[/COLOR]
MaLigne = Range("A65000").End(xlUp).[COLOR="Red"][B]Address[/B][/COLOR]
[COLOR="Green"]' Puis tu prend le résultat ci-dessus et tu demande le numéro de la ligne[/COLOR]
MaLigne = Range(MaLigne).Row

Dans le code ci-dessous :
MaLigne = Range("A65536").End(xlUp).Row

Cela fait exactement la même chose que tes DEUX lignes réunis!

On part de la cellule A65536 (et non pas A65000!)

Car il s'agit de la dernière ligne (du moins dans la version Excel 2003)
Car les versions les plus anciennes ont des feuilles comportant nettement moins de lignes.
Et la version Excel 2007 en comporte énormément plus

Donc à adapter suivant la version d'Excel que tu as.

Reprenons : Excel se met sur la cellule A65536, puis remonte jusqu'à la première cellule pleine rencontrée et il prend le numéro de la ligne (directement), et non pas l'adresse

Voili, voilou!!!!

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
512
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…