Bonjour,
On m'a toujours dit qu'il ne fallait jamais mettre .select dans nos vba mais comment simplifier ces différents code...
Code:
1
2
3
4 Sheets("bidule").Select Columns("A:A").Select Range("B2").Select
Version imprimable
Bonjour,
On m'a toujours dit qu'il ne fallait jamais mettre .select dans nos vba mais comment simplifier ces différents code...
Code:
1
2
3
4 Sheets("bidule").Select Columns("A:A").Select Range("B2").Select
Comme ton code ne fait rien, je te propose :
Soit plus explicite !Code:
1
2
3 Sub macro1 () 'rien End sub
Si tu veux changer la valeur de la Cellule [B2] de la feuille nommée "bidule" par exemple tu peux faire : Sheets("bidule").[B2].Value = 36 sans Select
Bonjour à toi,
En fait, le plus simple est simplement de ne pas marquer le .Select... C'est tout !
Par exemple :
équivaut exactement à :Code:
1
2 Range("A2").Select Selection.Interior.Color = vbBlue
à la différence près que la cellule ne sera pas sélectionnée et donc pas forcément affichée, ce qui va largement limiter les scrollings fous qui détruisent les yeux, et accélérer la macro :)Code:Range("A2").Interior.Color = vbBlue
Idem à tous niveaux :
Code:
1
2
3
4 Sheets(1).Select ActiveSheet.Cells.Clear '=' Sheets(1).Cells.Clear
Cordialement,
Quentin
Bonjour,
voir aussi les exemples dans cette discussion et dans celle-là …
_____________________________________________________________________________________________________
Merci de cliquer sur :plusser: pour chaque message ayant aidé puis sur :resolu: pour clore cette discussion …
_____________________________________________________________________________________________________
Je suis Charlie - Je suis Bardo
Pour le coté épileptique d’une macro avec plein de select je t’invite à tester ces deux codes :
Code:
1
2
3
4
5
6
7
8 Sub test() Rows("1:38").Delete Dim i&, j& For i = 1 To 38: For j = 1 To 15 ActiveSheet.Cells(i, j) = i * j ActiveSheet.Cells(i, j).Interior.Color = i * j Next: Next End Sub
Application.ScreenUpdating = False bloque le rafraichissement de l'affichage et Application.ScreenUpdating = True fait l'inverse.Code:
1
2
3
4
5
6
7
8
9
10 Sub test2() Application.ScreenUpdating = False Rows("1:38").Delete Dim i&, j& For i = 1 To 38: For j = 1 To 15 ActiveSheet.Cells(i, j) = i * j ActiveSheet.Cells(i, j).Interior.Color = i * j Next: Next Application.ScreenUpdating = True End Sub