NICOPOF a écrit :
Tu as l'air caller je bloc la
aa = Application.WorksheetFunction.CountBlank(Sheets("feuil1").Range("A2:A65536"))
bb = Application.WorksheetFunction.CountA(Sheets("feuil3").Range("A2:A65536"))
If aa > bb Then
Sheets(3).Range("A1:A65000").Copy Sheets("Feuil1").Range("A2")
Application.DisplayAlerts = False
Sheets(3).Delete
En gros j'ai sur ma feuille 1 des un certain nombre de ligne vide
sur ma feuille 3 j'ai une certain nombre de ligne plein
si aa> bb je veux copier les ligne pleine de la feuille 3 pour les copier a la suite dans la feuille 1 puis supprimer la feuille 3
je pense qu'il dois y avoir des xl up ou end quelque part mais je seche la
tu aurai une idée
Bonjour,
alors :
Sheets(3).Range("A1:A65000").Copy Sheets("Feuil1").Range("A2")
Alors ce n'est pas comme une copie en DOS, il faut faire la copie, sélectionner la plage de destination puis "coller" ce que l'on a copié (tu trouveras ton bonheur avec l'enregistreur de macro).
Ensuite oui, il y a une histoire de end(xlup), car la en gros, tu colles ta feuille 3 entière sur ta feuille 1 (du coup tu supprimes ce qui était déjà présent sur ta feuille 1).
Il faut aller repérer la dernier ligne pleine de ta feuille 1, et venir faire ton collage en dessous.
Idem pour ce que tu copies, il faut que tu ne sélectionnes que la plage contenant des informations dans ta feuille 3.
Pour trouver la dernière ligne non-vide d'une plage :
Worksheets("Feuil3").Cells(Rows.Count, 1).End(xlUp).Row
rows.count est mieux que de dire "65536" car suivant la version d'Excel, le nombre de ligne d'un onglet change (65536 c'était jusqu'à la version 2007).
Le "1" correspond à la colonne a tester (en gros celle ayant le plus de chance de toujours avoir un renseignement à l'intérieur).
Cordialement,