XL 2016 Derniere ligne d'une colonne Excel

neo220783

XLDnaute Nouveau
Bonjour a toutes et tous,

je souhaiterai savoir comment remplacer :

Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C7000")
Range("C2:C7000").Select

par :
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:derniere cellule non vide")
Range("C2:derniere cellule non vide").Select

actuellement ma macro va jusqu'a la ligne 7000 et je supprime manuellement les lignes vides.
Auriez vous une solution à me proposer ??

Je vous remercie par avance pour votre aide precieuse.
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Neo, Claudy, bonsoir le forum,

La règle d'or en VBA c'est d'éviter autant que tu le peux les Select inutiles qui ne font que ralentir l'exécution du code et sont source de plantages.
Essaie comme ça :

VB:
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
DL = Cells(Application.Rows.Count, "C").End(xlUp).Row 'définit la dernière ligne éditée de la colonne C
Range("C2").AutoFill Destination:=Range("C2:C" & DL)
 

neo220783

XLDnaute Nouveau
Merci pour ta réponse claudy
je m excuse mais je pense ne pas avoir été assez précis

je sépare les noms et prénoms de ma colonne A dans la colonne B et C


Range("C2").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],SEARCH("" "",RC[-2])-1)"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C7000")
Range("C2:C7000").Select

Range("B2").Select
ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],LEN(RC[-1])-SEARCH("" "",RC[-1],1))"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B7000")
Range("B2:B7000").Select

Je n'ai pas besoin de savoir ce qu'il y a d'inscrit dans la derniere cellule je veux juste que la macro s'arrete quand il n y a plus d'info dans la derniere cellule.

encore merci pour votre aide
 

Staple1600

XLDnaute Barbatruc
Re

SI vraiment tu veux passer par les formules
VB:
Sub Extraitre_par_Formule()
Dim dl&, f
dl = Cells(Rows.Count, 1).End(3).Row
f = Array("=MID(RC[-1],1,SEARCH("" "",RC[-1]))", "=MID(RC[-2],SEARCH("" "",RC[-2])+1,9^9)")
[B2:C2].Formula = f: Range("B2:C" & dl).FillDown
End Sub
 

neo220783

XLDnaute Nouveau
Bonjour a toutes et tous
Est ce que quelqu'un pourrait m expliquer un peu en détail comment ça fonctionne ?

Sub Extraitre_par_Formule()
Dim dl&, f
dl = Cells(Rows.Count, 1).End(3).Row
f = Array("=MID(RC[-1],1,SEARCH("" "",RC[-1]))", "=MID(RC[-2],SEARCH("" "",RC[-2])+1,9^9)")
[B2:C2].Formula = f: Range("B2:C" & dl).FillDown
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

neo220783
Je suppose que le quelqu'un c'est moi, non ? ;)
La même avec mes commentaires
VB:
Sub Extraire_par_Formule()
'Déclarations des variables
Dim dl&, f
dl = Cells(Rows.Count, 1).End(3).Row '-< numéro de ligne dela dernière cellule non vide (colonne A)
f = Array("=MID(RC[-1],1,SEARCH("" "",RC[-1]))", "=MID(RC[-2],SEARCH("" "",RC[-2])+1,9^9)")
'f est un tableau (ou Array) contenant les formules
'Dans les cellules B2 et C2, j'inscris le contenu de f
[B2:C2].Formula = f: Range("B2:C" & dl).FillDown
'et je recopie vers le bas ces formules
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 094
Messages
2 085 231
Membres
102 828
dernier inscrit
cdupire