XL 2016 Copier à partir de la dernière ligne renseignée.

Xender

XLDnaute Nouveau
Bonjour,

Je me permet de venir vers vous car j'ai un souci et ne trouve pas de solution.

J'ai actuellement un fichier qui me sert de base de donnée ou je vais copier ce dont j'ai besoin et les coller dans un fichierd'analyse.

J'ai actuellement cette macro VBA en place :

'Filtrage Epicéa G20
Sheets("CourantDataFile").Range("A3:N3").AutoFilter Field:=6, _
Criteria1:="Epicéa"
Sheets("CourantDataFile").Range("A3:N3").AutoFilter Field:=7, _
Criteria1:="G20"

'Copie Rupture
Sheets("CourantDataFile").Select
Range("H4:H104").Select
Selection.Copy
Windows("Final").Activate
'Conserver mise en forme copier coller
ActiveSheet.Range("E20").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Dans la partie Copie Rupture j'ai la Range qui est de 100 cellules à copier. (Range("H4:H104") )

Sauf que mon fichier incrémente des lignes à chaque essais que nous faisons, donc ma formule ne fonctionne pas.

A la place de : Range("H4:H104").Select, j'aurais souhaité savoir si il existe un code permettant de ne copier que les 100 dernière cellules, à partir de la dernière ligne renseignée dans le fichier de base de donnée.

Je reste à votre disposition.

Merci d'avance !!
 

job75

XLDnaute Barbatruc
Bonsoir,

Pour la 2ème partie de la macro vous pouvez utiliser :
VB:
Dim derlig&
With Sheets("CourantDataFile")
    derlig = .Cells(.Rows.Count, "H").End(xlUp).Row
    If derlig < 100 Then Exit Sub
    .Cells(derlig - 99, "H").Resize(100).Copy
End With
Windows("Final").Activate
With ActiveSheet
    .Range("E20").PasteSpecial xlPasteValuesAndNumberFormats
    Application.Goto .Range("A1"), True 'cadrage
End With
Application.CutCopyMode = 0
A+
 
Dernière édition:

Xender

XLDnaute Nouveau
Bonjour job75,

Merci d'avoir pris le temps de répondre à mon problème.

J'ai utilisé votre macro et cela fonctionne parfaitement. J'ai modifier chaque colonne à copier coller et tout fonctionne à merveille ^^

J'ai juste un souci avec la suite de ma programmation.

'Copie Observation

Windows("CourantDataFile").Activate
With Sheets("CourantDataFile")
derlig = .Cells(.Rows.Count, "L").End(xlUp).Row
If derlig < 100 Then Exit Sub
.Cells(derlig - 99, "L").Resize(100).Copy
End With
Windows("Final").Activate
With ActiveSheet
.Range("H20").PasteSpecial xlPasteValuesAndNumberFormats
Application.Goto .Range("A1"), True 'cadrage
End With
Application.CutCopyMode = 0


'inversion sens collage
Dim oRange As Range, DataRange As Range
Dim arrData() As Variant, arrInversed() As Variant
Dim r As Long, c As Long
' Identifiez la plage à partir de F19
Set oRange = ThisWorkbook.Worksheets("Feuil1").Range("F19").CurrentRegion
' Pour ne prendre que les données et exclure le titre
Set DataRange = oRange.Offset(1, 0).Resize(oRange.Rows.Count - 1)
' Charger la plage de données dans un tableau
arrData = DataRange.Value
ReDim arrInversed(1 To UBound(arrData, 1), 1 To UBound(arrData, 2))
' Inversez les lignes du tableau
For r = LBound(arrData, 1) To UBound(arrData, 1)
For c = LBound(arrData, 2) To UBound(arrData, 2)
arrInversed(UBound(arrData, 1) - r + 1, c) = arrData(r, c)
Next c
Next r
' Écrivez le tableau inversé dans la plage
DataRange.Value = arrInversed
' Libèrer la mémoire
Set oRange = Nothing: Set DataRange = Nothing


'suppression des filtres
ActiveSheet.AutoFilterMode = False

'Fermeture classeur
Windows("CourantDataFile.xlsm").Close

MsgBox "Les données ont bien été copier", 64
End If


La partie en vert s'exécute correctement, mais la partie suivante en rouge ne s'exécute plus je ne sais pas pourquoi. Une idée ?

Merci beaucoup.
 

Xender

XLDnaute Nouveau
Ce qui cloche c'est qu'avant cela fonctionner et depuis que j'ai mis votre macro ca ne fonctionne plus, la plage en rouge après la macro ne s'exécute pas. Je ne vous demande pas d'éplucher mon code car je sais qu'il fonctionne, avant cela était la cas, mais depuis que j'ai mis votre macro je ne comprend pas pourquoi ca s'arrête a votre macro et ca ne continue pas.
 

Xender

XLDnaute Nouveau
J'ai saisie d'où venez le problème, c'est que dans cette colonne j'ai des cases qui seront vide.
Dans le cas présent, la première case était vide donc le programme n'a rien effectué, du coup la suite du programme ne c'est pas exécuté, une idée pour palier cette situation pour cette colonne ?
 

Discussions similaires

Réponses
8
Affichages
387

Statistiques des forums

Discussions
314 716
Messages
2 112 162
Membres
111 447
dernier inscrit
jasontantane