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

15stock-lego.xlsm (160.76 Ko)

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 Sub

ric

Bonjour,

on peut également sortir ceci

        cel.Offset(0, -10).RowHeight = 50
        cel.Offset(0, -10).ColumnWidth = 20

de 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 = 50

ou 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 Sub

ric

Merci, effectivement cela va déjà bcp plus vite

Rechercher des sujets similaires à "rapidite execution"