IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Perte de performance d'une macro VBA qui fonctionnait correctement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2023
    Messages : 5
    Par défaut Perte de performance d'une macro VBA qui fonctionnait correctement
    Bonjour,

    Le titre n'est pas aguicheur, mais difficile d'expliquer mon problème...

    contexte =
    je réalise des inspections vidéos de conduits, et je fais énormément de photos.
    ces photos je les insère (rais...) dans un excel pour réaliser mes annexes.

    Mon programme =
    sur base de déclaration des chemins dans un onglet paramètre.
    lecture des noms de fichier et liste dans un onglet = fonctionne
    suppression des videos = fonctionne
    injection des photos dans une planche contact avec positionnement en 2 colonnes. = problème.

    mon incompréhension vient du fait que la perf s'est dégradé.
    au début tout tournait parfaitement
    puis quelques messages au cours des procédures "la methode paste de la classe worksheet a échoué" par exemple
    et maintenant ca bloque sur 1 photo sur 2 en paste ou en cut...

    j'ai essayé de faire tourner le code sur un autre pc ca fonctionne... mais pas sur que ca tienne.

    ca donne l'impression d'une instabilité ou d'un "réceptacle" qui ne se viderait pas et m'empecherait d'avancer... est ce possible?

    les photos sont apparemment stockées sous forme de lien (est ce normal?)

    je poste le code en txt car je sais que personne n'aime exécuter un xlsm

    je vous remercie du temps que vous m'accorderez, je suis très embêté et si on pouvait comprendre d'ou ca vient...

    Pour info à ce jour :
    pilotes à jour
    bios a jour
    antivirus passé et repassé
    ccleaner passé...

    grand merci
    gaetanmacro gaetan.docx

  2. #2
    Membre très actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 382
    Par défaut
    Bonjour,

    Il vous reste combien d'octets sur le disque dur ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2023
    Messages : 5
    Par défaut
    bonjour
    il me reste 300 Go je pense que c'est suffisant...

  4. #4
    Membre très actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 382
    Par défaut
    Votre code est plein d'Activate qui pourraient être évités en instanciant des variables Worksheet. Une fois la variable instanciée, vous utilisez la variable sans Activate et sans Select.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim ShParametres As Worksheet, ShPlanche As Worksheet
     
            Set ShParametres = Sheets("paramètres")
            Set ShPlanche = Sheets.Add
            With ShPlanche
                 .Name = "planche contact"
                 With .Cells
                      .ColumnWidth = 66
                      .RowHeight = 235
                 End With
                 .Columns("A:A").ColumnWidth = 16
                 .Range("A1") = "Conduit"
            End With
    Sinon, mettez ces lignes dans en début et en fin de vos procédures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        With Application
             .ScreenUpdating = False
             .Calculation = xlCalculationManual
        End With
     
        ' Suite du code
     
        With Application
             .ScreenUpdating = True
             .Calculation = xlCalculationAutomatic
        End With

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Ne serait-il pas judicieux de virer les fonctionnalités cosmétiques (qui n'ont pas l'air dynamique), et préformater les feuilles de calcul ?
    Voir passer, autant que possible, par les fonctionalités natives d'Excel (formules, thèmes, formattage conditionnel ect ...) avant d'avoir recours a VBA.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2023
    Messages : 5
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Salut,

    Ne serait-il pas judicieux de virer les fonctionnalités cosmétiques (qui n'ont pas l'air dynamique), et préformater les feuilles de calcul ?
    Voir passer, autant que possible, par les fonctionalités natives d'Excel (formules, thèmes, formattage conditionnel ect ...) avant d'avoir recours a VBA.
    bonjour,
    vous parlez du formatage des colonnes, bordures et autres?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2023
    Messages : 5
    Par défaut
    rebonjour et merci de t'occuper de mon cas !

    j'ai essayé la première partie mais j'ai un message qui dit propriété ou méthode non gérée par cet objet.
    j'ai pourtant remplacé tous mes sheets("paramètres").activate par le sh parametres... ai je bien compris?
    copie d'écran jointe
    Nom : Capture d'écran 2023-12-21 101006.png
Affichages : 97
Taille : 49,8 Ko

  8. #8
    Membre très actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 382
    Par défaut
    Si vous testez cette partie de code, vous verrez bien qu'il fonctionne correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sub Injectionimages2()
     
    Dim ShParametres As Worksheet, ShPlanche As Worksheet
     
            Set ShParametres = Sheets("paramètres")
            Set ShPlanche = Sheets.Add
            With ShPlanche
                 .Name = "planche contact"
                 With .Cells
                      .ColumnWidth = 66
                      .RowHeight = 235
                 End With
                 .Columns("A:A").ColumnWidth = 16
                 .Range("A1") = "Conduit"
            End With
     
            Set ShParametres = Nothing
            Set ShPlanche = Nothing
     
    End Sub
    A quel endroit cela beugue ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/05/2020, 18h03
  2. [XL-2007] Créer une Macro VBA qui me permet de faire une recherche multicritères
    Par loulah dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/05/2019, 05h00
  3. Réponses: 2
    Dernier message: 22/08/2014, 20h08
  4. Appliquer une macro VBA à un fichier qui se regenere
    Par kirareuel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2012, 23h28
  5. [VBA-E]Une macro VBA qui les controlerait toutes..
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/10/2008, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo