Rapidité d'exécution
Bonjour à tous,
Je suis en train de me faire un classeur avec mon stock de pièces Lego.
J'ai commencé a bidouiller quelque chose qui me convient, mais je trouve que l'exécution est lente.
Quelqu'un peut-il jeter un œil et voir si il est possible d’accélérer l'exécution.
D'avance merci
Bonjour,
Un essai ...
Un ajout et une ligne de trop mise en commentaire ... déjà l'on sent la différence
Sub LinkToImage()
Application.ScreenUpdating = False ' << un ajout
der = Range("B" & Rows.Count).End(xlUp).Row
Range("A2:A" & der).ClearContents
For Each cel In Range("K2:K" & der)
''' cel.Offset(0, -10).Select ' << un changement
cel.Offset(0, -10).RowHeight = 50
cel.Offset(0, -10).ColumnWidth = 20
If IsFile(cel.Value) = 0 Then
cel.Offset(0, -10).Value = "Photo non dispo"
Else
Set Image = ActiveSheet.Pictures.Insert(cel.Value)
With Image
.ShapeRange.LockAspectRatio = msoTrue
.Width = cel.Offset(0, -10).Width - 5
.Height = cel.Offset(0, -10).Height - 5
.Left = cel.Offset(0, -10).Left
.Top = cel.Offset(0, -10).Top + 3
With Image.ShapeRange.Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorText1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
End With
End With
End If
Next cel
last = Range("B" & Rows.Count).End(xlUp).Row
With Range("B2:I" & last)
.HorizontalAlignment = xlHAlignCenter
.VerticalAlignment = xlVAlignCenter
End With
End Subric
Bonjour,
on peut également sortir ceci
cel.Offset(0, -10).RowHeight = 50
cel.Offset(0, -10).ColumnWidth = 20de la boucle vu qu'il n'y a pas de "variations et appliquer ce changement de taille à la zone entière une bonne fois pour toute :
Range("A2:A" & der).RowHeight = 20
Range("A2:A" & der).ColumnWidth = 50ou un truc comme cela, si j'ai bien compris, en VBA tout ce qui est mise en forme prend du temps...
C'est le même principe que vous avez fait à la fin du code pour les colonne B à K.
@ bientôt
LouReeD
Merci pour vos réponses et est ce que quelqu'un peut m'aider sur le fait que j'aimerais centrer les images dans la cellule?
Merci
Bonjour,
Un essai ...
Un ajout et une ligne de trop mise en commentaire ... déjà l'on sent la différence
Sub LinkToImage() Application.ScreenUpdating = False ' << un ajout der = Range("B" & Rows.Count).End(xlUp).Row Range("A2:A" & der).ClearContents For Each cel In Range("K2:K" & der) ''' cel.Offset(0, -10).Select ' << un changement cel.Offset(0, -10).RowHeight = 50 cel.Offset(0, -10).ColumnWidth = 20 If IsFile(cel.Value) = 0 Then cel.Offset(0, -10).Value = "Photo non dispo" Else Set Image = ActiveSheet.Pictures.Insert(cel.Value) With Image .ShapeRange.LockAspectRatio = msoTrue .Width = cel.Offset(0, -10).Width - 5 .Height = cel.Offset(0, -10).Height - 5 .Left = cel.Offset(0, -10).Left .Top = cel.Offset(0, -10).Top + 3 With Image.ShapeRange.Line .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorText1 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0 .Transparency = 0 End With End With End If Next cel last = Range("B" & Rows.Count).End(xlUp).Row With Range("B2:I" & last) .HorizontalAlignment = xlHAlignCenter .VerticalAlignment = xlVAlignCenter End With End Subric
Merci, effectivement cela va déjà bcp plus vite