• Initiateur de la discussion Initiateur de la discussion mathieu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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+
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
904
Réponses
15
Affichages
771
Réponses
4
Affichages
728
Réponses
10
Affichages
658
Réponses
2
Affichages
524
Réponses
5
Affichages
572
Réponses
8
Affichages
775
Réponses
5
Affichages
416
Retour