Copier les dernières lignes de toutes les feuilles

bonjour tt le monde,

je voulais ecrire un programme en VAB qui permet de :

  • copier uniquement les dernières lignes de toutes les feuilles existantes dans un document excel (sachant que les feuilles n'ont pas exactement le même nombre de lignes)
  • coller ces lignes une par une dans une autre feuille.

en fait j'ai le code suivant qui est efficace pour un tel problème:

Public Function lastRow(laFeuille As String, laColonne As String) As Integer
    lastRow = ThisWorkbook.Sheets(laFeuille).Range(laColonne & "65536").End(xlUp).Row
End Function

et suivi par ce bout de code:

Rows(lastRow("toto", "A")).EntireRow.Copy

mais j'ai un petit problème ici, c'est que les lignes contiennent des formules (tq des sommes) , lors de l'operation "copier coller" rien n'apparait dans la feuille de destination, ça a besoin d'une copier/coller speciale , mais je ne connais pas le syntaxe ,,

any help please?

Bonjour Platon,

Voilà une proposition :

For i=1 To Sheets.Count
Sheets(i).Rows(lastRow(i, "A")).EntireRow.Copy

Sheets("Feuil1").Cells(Rows.Count,1).End(xlUp).Offset(1,0).PasteSpecial Paste:=xlPasteValues,  _
     Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Next i

Si tu veux plus de détails sur Paste Special, F1 dans Visual Studio et va regarder dans l'aide!

Avec une petite suggestion pour rendre ta fonction plus sûre (Rows.Count prend la dernière ligne du fichier, et ça sera donc compatible peu importe la version d'Excel! ) et que tu puisse faire une boucle sur les feuilles!

Public Function lastRow(laFeuille As Integer, laColonne As String) As Integer
    lastRow = ThisWorkbook.Sheets(laFeuille).Range(laColonne & Cstr(Rows.Count)).End(xlUp).Row
End Function

Bon courage

merci infiniment Reuk,,

De nada

Pense juste à clôturer le sujet stp :

(en haut à droite du post qui contient la réponse!)

Rechercher des sujets similaires à "copier dernieres lignes toutes feuilles"