Macro qui travaille en arrière plan

Bonjour à tous,

J'ai un problème sur un classeur Excel. Quand je change quelques choses dans une page, excel me met en attente (avec petite roue qui tourne) pour faire des calculs ou des changements.

Le problème est que je n'arrive pas à trouver quelle macro est appelée. J'ai plusieurs feuilles avec quelques macros, mais impossible de trouver la macro qui est en cause. Je sais qu'à un moment, j'avais essayé de faire des macros appelées automatiquement, mais j'ai finalement préféré utiliser des boutons qui appelles des macros.

Quelqu'un a une idée pour retouver la macro en cause?

Merci pour votre aide

Bonjour evolto, avec un fichier ce sera plus explicite

Merci ton aide...

Même lorsque j'ai fait "enregistrer sous", et ensuite lorsque j"ai fermé le fichier une fois "anonymé", excel était bloqué...

D'ailleurs le fichier fait 1,6mo alors qu'il contient peu de choses. (C'est la raison pour laquelle je le zippe, car cela ne passait pas ici (trop lourd))

Quand je dis bloqué, je veux dire que excel se fige.... (le reste de l'ordinateur fontionne). Puis au bout de quelques minutes, j'ai de nouveau la main sur le fichier.

Il y a un potentiel problème avec ce code. Si aucune correspondance n'est trouvée, la boucle

Do While

continuera indéfiniment, car la condition

Fin

ne deviendra jamais vraie. Vous devriez ajouter une condition pour sortir de la boucle si aucune correspondance n'est trouvée. Voici une version corrigée du code :

Function NumAnimation() 'renvoie le numéro de l'animation
    Dim j As Integer
    Dim Repere As Integer
    Dim Fin As Boolean

    Repere = 4
    Fin = False
    Do While Repere <= Sheets("tableau AP").Cells(6, Columns.Count).End(xlToLeft).Column ' Vérifiez jusqu'à la dernière colonne de "tableau AP"
        If Sheets("Emargement").Range("C5").Value = Sheets("tableau AP").Cells(6, Repere).Value Then
            NumAnimation = Repere
            Fin = True
            Exit Do ' Sortez de la boucle lorsque la correspondance est trouvée
        End If
        Repere = Repere + 1
    Loop

    If Not Fin Then
        ' Si aucune correspondance n'a été trouvée, vous pouvez renvoyer une valeur par défaut ou gérer l'absence de correspondance comme vous le souhaitez.
        NumAnimation = -1 ' Par exemple, -1 pour indiquer qu'aucune correspondance n'a été trouvée.
    End If
End Function

Dans ce code corrigé, j'ai ajouté une condition pour vérifier si la valeur de Repere dépasse la dernière colonne de la feuille "tableau AP". Si c'est le cas, la boucle se termine, et la fonction renvoie une valeur par défaut (-1 dans cet exemple) pour indiquer qu'aucune correspondance n'a été trouvée. Vous pouvez personnaliser cette valeur par défaut en fonction de vos besoins.

Je suis impressionné que vous ayez trouvé ce problème aussi rapidement...

J'ai un peu honte de la question... mais je ne retrouve pas la fonction "NumAnimation"... J'ai fait ce classeur l'année dernière, j'ai un peu oublié.

Quand je vais dans "Visual basic", je trouve: Creationfeuille,Colorer, et EcritureGroupe... mais pas autre chose. J'aurais bien voulu essayé.

D'autre part, je ne comprends pas quelque chose... je ne vois pas pourquoi la macro avec la boucle ,qui ne s'arrête jamais, se lance, sans que j'ai appelé.

Et si c'est une boucle "infinie", je ne comprends pas pourquoi elle s'arrête (au bout d'un certain temps, sans message d'erreur)

Merci encore pour vos éclaircissements...

Je crois que ton code (fonction) est dans module 1

Une macro VBA dans Excel ne devrait pas se lancer automatiquement sans une action explicite de la part de l'utilisateur ou sans qu'elle ne soit appelée depuis une autre macro, un événement de feuille ou un module. Si une macro se lance apparemment sans être appelée, il y a généralement quelques raisons possibles à cela :

  1. Événements de feuille: Une macro peut être déclenchée par un événement de feuille, comme un changement de valeur dans une cellule, l'activation d'une feuille, etc. Assures-toi qu'il n'y a pas d'événements de feuille qui appellent involontairement la macro.
  2. Auto_Open ou Workbook_Open: Si tu as des macros Auto_Open ou Workbook_Open dans ton classeur, elles se déclencheront automatiquement lorsque le classeur est ouvert.
  3. Appels implicites: Il peut y avoir des appels implicites à la macro dans d'autres parties de ton classeur, comme dans des cellules avec des formules personnalisées.
  4. Appels depuis d'autres macros: Vérifie si cette macro est appelée à partir d'une autre macro qui est exécutée.
  5. Add-ins ou compléments: Si tu as des add-ins ou compléments installés, ils peuvent potentiellement influencer le comportement de ton classeur.
  6. Erreurs de code ailleurs: Parfois, une macro peut être interrompue en raison d'une erreur de code ailleurs dans le classeur, ce qui peut donner l'impression qu'elle s'est arrêtée.
  7. Temps d'exécution: Si la macro entre dans une boucle infinie, elle finira par se terminer si elle atteint une limite de temps d'exécution. Excel peut interrompre l'exécution de la macro si elle tourne trop longtemps, ce qui peut sembler un arrêt soudain.

Si tu as du mal à comprendre pourquoi cette macro s'exécute sans appel explicite, je te recommande de passer en revue tous les points mentionnés ci-dessus, de vérifier si tu as des événements de feuille ou des déclencheurs ailleurs dans ton classeur, et de surveiller attentivement le comportement pour identifier toute action spécifique qui pourrait déclencher la macro.

Re,

Cependant la source de ton problème vient de la feuille "Organisation" a mon sens. Elle semble être en liaison avec ton classeur "AP - Tableau 2023-2024- V2 - Anonyme.xls" qui lui est identique a ton classeur "AP - Tableau 2023-2024- V2 - Anonyme.xlsm" !!! Comme je vois que dans ton ZIP il y a un dossier __MACOSX. En plus des formules matricielles en colonne G qui sont assez lourde ça aide pas, je pense que tu devrais prendre ton classeur .XLS qui est sain mettre ma modif du code dedans et l'enregistrer sous en .XLSM. Le code se trouve bien dans module 1 par contre il y est pas dans le .XLS

Merci Stéphane pour toutes ces infos précises.

Je n'ai pas de xls, mais juste de xlsm.. Surement un affichage différent sur mac...

Je viens d'essayer deux choses: "enregistrer sour xls" en partant du xlsm, cela a abouti à une erreur au bout de quelques minutes. ("Impossible d'enregistrer")

Ensuite, j'ai essayé de lancer le xlsm en choisissant de ne pas lancer les macros dans le choix du lancement. Et là, contre toute attente, le problème persiste: si je clique sur un onglet, puis l'autre, j'ai encore cette latence de 2/3 mintutes... Incroyable.

Je vaus essayer de supprimer la formule matricielle en colonne G...

Je vous tiens au courant.

bonjour,

recherche le numéro d'une ligne ou colonne peut se faire avec un "match" que vous avez déjà utilisé ailleurs et qui donne une réponse immédiate (on n'aura même pas besoin d'une function supplémentaire)

Function NumAnimation()                      'renvoie le numŽro de l'animation
     Dim j     As Integer
     Dim Repere As Integer
     Dim Fin   As Boolean

     Repere = 4
     Fin = False
     NumAnimation = -1
     Do While Fin = False And Repere < Columns.Count
          If Sheets("Emargement").Range("C5") = Sheets("tableau AP").Cells(6, Repere) Then
               NumAnimation = Repere
               Fin = True
          End If
          Repere = Repere + 1
     Loop

End Function

Function NumAnimation2()                     'renvoie le numŽro de l'animation
     i = Application.Match(Sheets("Emargement").Range("C5").Value, Sheets("tableau AP").Rows(6), 0)
     If IsNumeric(i) Then NumAnimation2 = i Else NumAnimation2 = -1
End Function

re,

cette macro met des couleurs dans votre colonne G de "organisation" (pas encore dans "tableau AP) et n'a pas besoin de la formule matricielle (qui a mon avis n'est pas la cause du lenteur). Elle crée une aide mémoire avec les couleurs de G113:G130

Merci beaucoup Bart... Je regarde ça.

Pour l'instant, j'ai enfin trouvé une solution... en enlevant la feuille "organisation", je n'ai plus aucun problème de lenteur.

Je vais donc recommencer en essayant de ne pas faire des macros trop lourdes en en faisant attention quand mpeme aux formules matricielles..

Je vais donc regarder ce que vous m'avez envoyé pour m'en inspirer.

Je précise que depuis que j'ai enlevé la feuille organisation, j'ai bien accès à toutes les macros que je ne voyais pas avant (dont NumAnimation, comme je le disais à Stéphane)... Cette feuille provoquait donc bien un méga bug d'excel...

re,

je ne pense pas que ce sont les macros mais la colonne F de "Organisation".

Il faut sauvegarder votre fichier comme ".xlsx", fermer et réouvrir. Comme çà, vous n'avez plus de macros. J'avais l'impression que le lenteur était le même. Puis vous commencer à supprimer des colonnes, par exemple F, puis G, etc. A partir de quelle colonne, le lenteur est disparu ?

Salut Bart,

Quand je sauve en xlsx, il n'y a plus de lenteur même sans toucher les colonnes de "Organisation"

Par contre, dans le xlsm, quand je veux regarder le basic,

capture d e cran 2023 09 23 a 17 19 18

Il y a 2 modules1, je ne sais pas si c'est normal.... et lorsque je clique sur celui qui à une croix avant le 1, cela bug, cela ouvre une fenêtre blanche bugguée (pas complète).

Désolé d'embêter tout le monde, mais j'aimerais avancer ce boulot pour la semaine prochaine et je suis complètement bloqué.

Bonjours à vous deux,

C'est normal en .XLSX tu n'as plus de macro le M dans .XLSM ça veut dire macro, ce que tu peux faire c'est supprimer la feuille Organisation dans le .XLSM ouvrir le .XLSX et créer un copie de la feuille Organisation de .XLSX vers .XLSM

Dans le message précèdent, je regardais bien les modules dans le xlsm.... et j'ai bien deux modules 1, dont un qui ne fonctionne pas... et certaines macros qui ne s'affichent pas...

Bon, je vais repartir d'un ancien fichier dans le quel il n'y a pas "organisation"... et je vais aller doucement pour rajouter mes macros/formules...

En me faisant aider ici.

En tous les cas, merci encore pour votre aide

Rechercher des sujets similaires à "macro qui travaille arriere plan"