Longueur maximal dans un Range("...") [Résolu]

Longueur maximal dans un Range("...") [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 14-06-2011 à 16:39:13    

Bonjour,
 
J'aimerai savoir s'il existe une limitation pour Range et s'il est possible de la contourner.
En effet, j'ai l'impression qu'une telle limite existe.
 
Le code suivant s'execute parfaitement.
ActiveWorkbook.Sheets(1).Range("78:78,306:306,806:806,808:808,810:810,811:811,812:812,815:815,817:817,1220:1220" ).EntireRow.Delete
 
Mais le code suivant me renvoi l'erreur suivante: "Erreur d'execution '1004' : Erreur définie par l'application ou par l'objet.
 
ActiveWorkbook.Sheets(1).Range("78:78,306:306,806:806,808:808,810:810,811:811,812:812,815:815,817:817,1220:1220,1331:1331,2269:2269,2645:2645,7817:7817,7895:7895,7896:7896,7905:7905,8238:8238,8239:8239,8242:8242,8284:8284,8285:8285,8287:8287,8288:8288,8291:8291,8292:8292,8294:8294,8295:8295,8299:8299,11116:11116,11117:11117,12481:12481,13467:13467,13722:13722,13731:13731,13735:13735,13736:13736,13760:13760,14025:14025,14205:14205,15547:15547,15556:15556,15557:15557,15639:15639,15704:15704,15705:15705,15707:15707,15708:15708,17242:17242,17261:17261,17456:17456,17459:17459,17463:17463,17464:17464,18386:18386,18394:18394,18398:18398,18400:18400,18899:18899,18917:18917,19193:19193,19197:19197,19199:19199,19676:19676,19817:19817,19996:19996,20125:20125,20252:20252,20538:20538,20654:20654,20789:20789,20850:20850,20988:20988,21841:21841,22863:22863,22864:22864,22865:22865,22921:22921,23900:23900,23924:23924,24213:24213,26010:26010,26054:26054,26331:26331,26352:26352" _
& ",26486:26486,26599:26599,26977:26977" ).EntireRow.Delete
 
Veuillez noter qu'initialement, "78:78,306:306,806:806, (...)" est une chaine de caractere contenu dans une variable de type String. Le code réelle est donc ActiveWorkbook.Sheets(1).Range(RowsADelete).EntireRow.Delete
 
 
Merci


Message édité par smilm le 15-06-2011 à 10:12:13
Reply

Marsh Posté le 14-06-2011 à 16:39:13   

Reply

Marsh Posté le 14-06-2011 à 17:52:26    

Oui, une limite a sans doute été dépassée.
Une solution consisterait à faire des Delete pour chaque plage :


ActiveWorkbook.Sheets(1).Range("26977:26977" ).EntireRow.Delete
ActiveWorkbook.Sheets(1).Range("26599:2659" ).EntireRow.Delete
...
ActiveWorkbook.Sheets(1).Range("306:306" ).EntireRow.Delete
ActiveWorkbook.Sheets(1).Range("78:78" ).EntireRow.Delete

De plus, il me semble qu'il faudrait faire attention à supprimer à partir de la fin, car sinon, lorsqu'une ligne est supprimée, cela fait remonter toutes les suivantes, et les indices, qui suivent, sont décalés.

Reply

Marsh Posté le 14-06-2011 à 18:52:11    

Yes! C'est surtout ta dernière remarque qui m'aide car je rencontrais effectivement ce problème puisque je partais du haut... Merci!

Reply

Marsh Posté le 15-06-2011 à 07:36:19    

Salut,il semblerait que la chaine passée dans un Range ne puisse excéder 255 caractères, et cela d'Excel 97 à 2007


---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed