Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/05/2008, 18h57   #1
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Par défaut Copier/coller une plage de cellules pleine de trous

Tout le monde connaît... Ceci dit, je n'ai rien trouvé d'aussi simple dans la FAQ, ni à Copie* ni à plage*, ni à dupliquer*
La seule réponse proche, donnée par Bidou, est "Comment dupliquer une plage sur plusieurs feuilles du classeur ?"
Pourtant cette simple question est journellement posée sur le forum VBA-Excel.
Aux autres solutions connues, j'ajoute donc celle-ci.

Le code suivant permet de copier une plage de données commençant à une adresse connue et se terminant sur les dernières ligne et colonne renseignées de la feuille.
Contrairement à "SpecialCells(xlCellTypeLastCell)" il évite d'avoir à enregistrer le fichier en cas de suppression de ligne.
Contrairement à "CurrentRegion", la plage peut comporter des colonnes ou des lignes entièrement vides.
Contrairement aux classiques Range("IV1").end(xlleft).column et Range("A65536").end(xlup).row, il évite d'avoir à faire une boucle sur les lignes et les colonnes...

L'exemple suivant réalise la copie d'une plage de feuil1 commençant en B2 et se terminant on ne sait où, et son collage dans feuil2 depuis la cellule A1.
(l'instanciation des feuilles n'étant là que pour raccourcir la ligne)
Code :
1
2
3
4
5
6
Dim FL1 As Worksheet
Dim FL2 As Worksheet
    Set FL1 = Worksheets("feuil1")
    Set FL2 = Worksheets("feuil2")
    FL1.Range("B2:" & Split(FL1.UsedRange.Address(0, 0), ":")(1)).Copy _
    FL2.Range("A1")
Ceci n'est bien sûr "qu'une" solution et donc, si vous connaissez d'autres méthodes, il serait bien de les mettre à la suite...
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h07.


 
 
 
 
Partenaires

Hébergement Web