pb boucle infini

M

mathieu

Guest
bonjour a tous

je souhaiterai appliquer une macro seulement sur les cellules pleines de la colonne A. Pour cela j ai ecrit le code suivant :

Sub validationtotale()
scénario.Show
Dim L As Long, i As Long
Dim N As Long
With Sheets('Feuil1')
M = .Cells(9999, 1).Value
L = .Range('A65536').End(xlDown).Row
For i = 1 To L
.Cells(i + 10000, 1).Value = .Cells(i, 1).Value
.Cells(i, 1).Value = M & '\\' & Sheets('Feuil1').Cells(i + 10000, 1).Value
.Cells(i + 10000, 1).EntireRow.Delete
Next i
End With
Unload scénario
End Sub


Le probleme qui se pose a moi est que la valeur de L tend vers 65536 et donc ma boucle est bcp trop longue.

Pourriez vous me dire ou est mon erreur ou alors auriez vous une autre ligne de code qui ferait la meme chose.

Merci d avance

@+ Mathieu
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Mathieu, CbernardT, Hervé, le forum

d'aprés ton code, tu copie dans les cellules à partir de 10000 les valeurs A1 à A9999 en y ajoutant la valeur de A9999, tu copie ensuite la cellule résultante dans la cellule d'origine puis tu supprimes la ligne. Ton code peut donc être simplifié comme suit.
Code:
Sub validationtotale()
scénario.Show
Application.ScreenUpdating = False
Dim L As Long, i As Long
Dim N As Long
With Sheets('Feuil1')
M = .Cells(9999, 1).Value
L = .Range('A65536').End(xlUp).Row
For i = 1 To L
.Cells(i, 1).Value = M & .Cells(i, 1).Value
Next i
End With
Unload scénario
End Sub
on fait la copie directement sans cellule intermédiaire et sans suppression de ligne. En enlevant ce code inutile et en désactivant temporairement l'affichage, ton code devient assez rapide.
Par contre, pour ne pas modifier également A9999, il faudrait modifier la ligne
L = .Range('A65536').End(xlUp).Row-1

cordialement, A+

cordialement, A+
 
Y

Yeahou

Guest
Re:Trouver les cellules non vides

Re Bonjour

sinon un truc sympa
ActiveSheet.Columns('A').ColumnDifferences(Comparison:=ActiveSheet.Range('A65536'))
te renverra un objet range comprenant toutes les cellules non vides de la colonne pour peu que A65536 soit vide. Par contre les cellules renvoyant un '' par fonction ne seront pas comprises.

A+
 

Discussions similaires

Réponses
0
Affichages
177

Statistiques des forums

Discussions
312 518
Messages
2 089 260
Membres
104 081
dernier inscrit
Damel