faire tourner une macro en arrière plan

  • Initiateur de la discussion Initiateur de la discussion pasquetp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pasquetp

XLDnaute Occasionnel
bonjour à tous,

je vous contacte pour une question sur les macros

j'ai crée une macro genre usine à gaz (j'avais pas trop le choix) et donc elle tient sur 5 pages

je vois donc la macro tourner et ca me fait un ecran gris

y a t'il moyen qu'elle tourne en arrière plan et que je puisse bosser sur le fichier sur excel?

voici une photo d'écran

si vous avez des idées je suis preneur
 

Pièces jointes

  • preuve.jpg
    preuve.jpg
    21.3 KB · Affichages: 112
  • preuve.jpg
    preuve.jpg
    21.3 KB · Affichages: 112
  • preuve.jpg
    preuve.jpg
    21.3 KB · Affichages: 107
Re : faire tourner une macro en arrière plan

Bonjour.
Vous pouvez toujours essayer de parsemer le code d'instructions DoEvents.
Mais ça n'empêche pas d'étudier comment cette macro pourrait être rendue plus rapide, notamment en la faisant travailler avec plein de tableaux en mémoire et avec moins d'appels possible aux méthodes Range et Cells.
 
Re : faire tourner une macro en arrière plan

Bonjour

Peut être en lançant deux excels???
je ne sais pas si cela fonctionnera dans ton cas.
Mais, j'ai déjà utilisé cette méthodes pour comparer deux fichiers (un par écran)

sinon il y a peut être de déggazzzzzer tes macros

j'ai remarqué sur la version 2003 que l'utilisation des collections pouvaient nuire à la rapidité de la macro.
 
Dernière édition:
Re : faire tourner une macro en arrière plan

Bonjour,

je vous remercie de votre réponse

Vous serez il possible de visionner le code et si vous auriez des idées pour rendre la macro plus lisible ou /et plus rapide?

c'est une véritable usine

si vous avez des questions, n'hésitez pas une seconde
 

Pièces jointes

Re : faire tourner une macro en arrière plan

Je viens d'ouvrir le vba editor... j'ai l'impression d'être dans un autre monde

Fais le ménage dans ta presentation:
les sauts de ligne en trop
essaye de décaler

exemple
VB:
  fin = Sheets(2).Range("C65536").End(xlUp).Row
  For a99005 = 6 To fin
    Sheets(1).Range("a1").Select
    If Sheets(2).Cells(a99005, 3) = "99005" Then
      Set SKU = Sheets(1).Columns(1).Find(Sheets(2).Cells(a99005, 2), LookIn:=xlValues, LookAt:=xlWhole)
      '-------------battery_type = null
      If Sheets(2).Cells(a99005, 5).Value Like "*battery_type = null*" Then
        Sheets(2).Cells(a99005, 3).Interior.Color = 10025880  'vert
        Set Column = Sheets(1).Rows(2).Find("battery_type", LookIn:=xlValues, LookAt:=xlWhole)
        If Not Column Is Nothing Then
          Sheets(1).Cells(SKU.Row, Column.Column).Interior.Color = 52428
        End If
      Else
        'if key words canot be found in page 2
        Sheets(2).Cells(a99005, 3).Interior.Color = 255
      End If
      '-------------ShippingWeightUnitOfMeasure
      If Sheets(2).Cells(a99005, 5).Value Like "*ShippingWeightUnitOfMeasure = null*" Or Sheets(2).Cells(a99005, 5).Value Like "*Unité de mesure du poids du paquet = null*" Then
        Sheets(2).Cells(a99005, 3).Interior.Color = 10025880  'vert
        Set Column = Sheets(1).Rows(2).Find("ShippingWeightUnitOfMeasure", LookIn:=xlValues, LookAt:=xlWhole)
        If Not Column Is Nothing Then
          Sheets(1).Cells(SKU.Row, Column.Column).Interior.Color = 52428
        End If
      End If
      Set Column = Sheets(1).Rows(2).Find("Unité de mesure du poids du paquet", LookIn:=xlValues, LookAt:=xlWhole)
      If Not Column Is Nothing Then
        Sheets(1).Cells(SKU.Row, Column.Column).Interior.Color = 52428
        If Not Sheets(1).Cells(SKU.Row, Column.Column).Comment Is Nothing Then
          Sheets(1).Cells(SKU.Row, Column.Column).Comment.Text Text:="Unité de mesure du poids du paquet has to be populated"
        Else
          Sheets(1).Cells(SKU.Row, Column.Column).AddComment
          Sheets(1).Cells(SKU.Row, Column.Column).Comment.Visible = True
          Sheets(1).Cells(SKU.Row, Column.Column).Comment.Text Text:="Unité de mesure du poids du paquet has to be populated"
        End If
      End If
    Else
      If Sheets(2).Cells(a99005, 3).Interior.Color = 10025880 Then
      Else
        Sheets(2).Cells(a99005, 3).Interior.Color = 255
      End If
    End If
    End If
  Next
 
Re : faire tourner une macro en arrière plan

Non, là franchement je n'ai pas d'idée. À part tout recommencer à zéro, mettre Option Explicit en tête des modules, typer convenablement toutes les variables. Et quand même travailler un max avec des tableaux.
 
Re : faire tourner une macro en arrière plan

A faire avant tout
1) faire le ménage dans la presentation
2) trier les variables
Comme l'écrit Dranreb ecrire option explicit à la premiere des modules et déclarer toutes les variables

Après on pourra essayer de comprendre quoi faire.....seulement après
 
Re : faire tourner une macro en arrière plan

Bonsoir à toutes et tous,


@Pasquetp

J'ai fais un peu de ménage dans la présentation de la macro,
Il reste beaucoup de modif du code à faire.
Je pense que quelques Sub allégeraient le code !
J'ai trouvé beaucoup de Else qui ne servent à rien ?
Je n'ai pas beaucoup de temps pour faire ces modif , mais je pense que tu arriveras à les réaliser.

A+

René
 

Pièces jointes

Re : faire tourner une macro en arrière plan

Bonjour le Forum



Au sujet de la longueur,des sub, fonctions, modules de classes seraient beaucoup plus rapide et plus pratique pour la lecture du code, sans compter la suppression de certains "Else" qui dans ce code non pas d'utilité.
Suppression de pas mal de lignes du style:
fin = Sheets(2).Range("C65536").End(xlUp).Row , répété plus de 30 fois ?

Et j'en passe....

@ Tbft,

Pour le nettoyage, on me surnomme aussi "Léon" ( Humour...) .

A+

René
 
Re : faire tourner une macro en arrière plan

Malgré ton renéttoyage... le code reste toujours aussi inbuvable.....

Il faudrait (je pense encore et toujours) que le créateur utilise des sous sub ou des sous functions....
Il pourrait ainsi avoir une macro qui décrit le fonction général et les sous trucs qui réalise le travail....
 
Re : faire tourner une macro en arrière plan

Bonsoir le Forum,

@Tbft

Déja , je pense que le concepteur de cette macro devrait nous expliquer que fait cette macro ?
Et de plus ont attends toujours les réponses de pasquetp aux différents messages ?


A+

René
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour