Appel macro

Bonsoir,

j'ai un souci avec l'appel de macros. Dans le fichier ci-joint j'ai des macros executables grace à des boutons.

Elles fonctionnent toutes parfaitement. Afin de de pas cliquer sur 50 boutons j'ai crée 4 boutons sur la 1er feuille qui executes des différentes macros de mes feuilles. Et là j'ai des macros qui ne font pas leur travail.

Par exemple: normalement sur la 3eme feuille j'ai une macro qui supprimer les lignes si le n° de cde est <16000

Quelqu'un sait comment résoudre ce problème?

bonjour,

Déjà tu pourrais commencer par restructurer tes macros comme dans le fichier ci-joint.

(ça ne change strictement rien, mais au moins on n'est pas obligé de jouer aux 12 coins quand on cherche une macro...

Et quels sont les boutons dont la macro ne fonctionne pas ?

(Hum... à priori ils fonctionnent tous ! mais qu'est-ce qui te fait dire que tel bouton ne fonctionne pas ?

Pour l'instant on va se limiter au 1 er bouton et à la première macro qui ne fonctionne pas :

Description du bouton + Quel est le résultat attendu et que tu ne vois pas ?

Quand on aura résolu le premier problème on y verra peut-être déjà plus clair !

A+

Bonjour galopin01,

j'ai regardé ta version de mon fichier et en effet on a une meilleur vision des macros. Je ne savais pas qu'on pouvait les regrouper comme ça. J'ai toujours cru qu'il fallait écrire une macro par module surtout si la macro est associé à un bouton.

Ensuite pour ce qui est de ce qui ne fonctionne pas:

par exemple le bouton "extraction" de la feuille IMPRIMER doit extraire les données et les filtrer (supprimer les lignes si <16000 sauf 14780 et 15880 et supprimer si =serres .

Sub Général_Extraction_données()
Call Extraction_données_Toltech
Call Supprimer_lignes_mot
Call Supprimer_lignes_inf
End Sub

Dans ma feuille EXTRACTION DONNEES, si j'execute l'extraction puis le filtrage (supprimer ligne suivant la valeur ou le mot) tout fonctionne parfaitement. Par contre si j'execute les 3 macros via un meme bouton (voir macro si dessus) j'obtiens un résultat faux puisqu'il y a des n° de Cde <16000 qui ne sont pas supprimée. Or il s'agit des même macros.

bonsoir,

[EDIT] Pfff... 2ème échec !

Bon ben YAPUKUNE solution

ça veux dire que les macros se succèdent trop rapidement le proc à pas le temps d'attendre la fin de la première macro que la deuxième est déjà exécutée.

Quand tu procèdes manuellement même si tu vas très vite, la macro extraction à largement le temps de s'exécuter avant que tu ne cliques sur la seconde. Si tu les exécutes dans la même macro, la première n'a pas le temps de finir le boulot que les autres commence à la tanner...

Je vais essayer de réécrire la macro d'extraction d'une manière plus speed, parce que là avec Match, resize... c'est un peu bourrin...

A+

ça ne change rien, le résultat est toujours faux

Oui j'ai vu, revoir mon commentaire modifié plus haut...

Merci pour ton aide!

il n'existerait pas un moyen d'insérer entre les macros une tempo ou de dire de ne pas executer la macro suivante temps que la précédente n'a pas finie?

bonsoir,

En fait c'était pas ça : C'est le Delete.Row qui ne fonctionne pas à distance...

Il faut activer la feuille "Extraction" (ce qui se passe tout seul si tu appuies sur le bouton "Filtre"...)

Je te donne ma macro modifiée : elle doit pédaler un peu plus vite... (bien que je n'ai pas supprimé toutes les lourdeurs)

Sub Général_Extraction_données()
Call Extraction_données_Toltech
Call Supprimer_lignes_inf
Call Supprimer_lignes_mot
Worksheets("Imprimer").Activate
End Sub
Sub Extraction_données_Toltech()
     Dim a, Col%, Cols As Variant, Ctr As Byte, Cold%
     Dim WsC As Worksheet
     Application.ScreenUpdating = False
      Set WsC = Sheets("Extraction données")
     'Création de la matrice "Cols" des colonnes àprendre en compte
     Cols = Array("Nom client", "N° Commande", "Création", "Date prévue")
     'Tous les "ranges" commençant par un "." se réfèrent à la feuille "Source Toltech"
     With Sheets("Source Toltech")
         'boucle sur les entêtes de la matrice "Cols"
         For i = 0 To UBound(Cols)
             'détermination du numéro de colonne sur la feuille "Source Toltech"
             Col = Application.Match(Cols(i), .[1:1], 0)
             'détermination du numéro de colonne sur la feuille "Extraction données"
             Cold = Application.Match(Cols(i), Sheets("Extraction données").[4:4], 0)
             'définition de la plage à copier
             a = .Range(.Cells(2, Col), .Cells(.Rows.Count, Col).End(xlUp)).Value
             'copie de la plage
             WsC.Cells(5, Cold).Resize(UBound(a)) = a
         Next i
     End With
WsC.Activate
End Sub

A+

Je viens de tester la nouvelle version de ma macro est en effet ça fonctionne.

J'ai également remarqué que j'avais le même genre de problème avec mes macros copier-glisser lorsque j'utilise le bouton traitement général de la feuille imprimer

Sa macro:

Sub Général_Traitement_données()
Call Traitement_copie_extraction_filtrée
Call Calcul_délai_de_livraison
Call Copier_glisser_retard_préparation
End Sub

avec la macro qui posse problème:

Sub Copier_glisser_retard_préparation()
      With Sheets("Traitement")
         .[H9].Formula = "=IF(F9<$E$4,F9,"""")"
         .[I9].Formula = "=IF(F9<$E$4,E9,"""")"
         .[H9:I9].Resize(Application.CountA([B:B]) - 1).FillDown
         .[H:H].NumberFormat = "dd-mmm"
         .[I:I].NumberFormat = "General"

         .[K9].Formula = "=IF(AND($E$4<=F9,$E$4>=F9-7),"""",IF(F9<$E$4,"""",F9))"
         .[L9].Formula = "=IF(K9="""","""",E9)"
         .[K9:L9].Resize(Application.CountA([B:B]) - 1).FillDown
         .[K:K].NumberFormat = "dd-mmm"
         .[L:L].NumberFormat = "General"

         .[N9].Formula = "=IF(AND($E$4<=F9,$E$4>=F9-7),F9,"""")"
         .[O9].Formula = "=IF(N9="""","""",E9)"
         .[N9:O9].Resize(Application.CountA([B:B]) - 1).FillDown
         .[N:N].NumberFormat = "dd-mmm"
         .[O:O].NumberFormat = "General"
     End With
  End Sub

Une idée de réécriture?

Je ne vois pas différence si j'exécute l'une ou les boutons de la feuille.

Quel est le problème exacte ?

sur la feuille "traitement", en appuyant sur les 3 boutons l'un autre l'autre tout fonctionne.

Si l'utilise de bouton "traitement générale" de la feuille "imprimer" qui regroupe les 3 macros, les cellules des colonnes H à O ne sont pas toutes remplies. J'ai des lignes vides. Je pense qu'il y a le même problème que précédemment, à savoir, que ça va trop vide et du coup les macros n'ont pas de temps de s'executer correctement.

re...

Je n'ai pas ce problème : toutes cellules de ces colonnes sont remplies de la même manière que ce soit avec avec une méthode ou avec l'autre. Les cellules vides comportent néanmoins la formule donc elles sont vides uniquement par absence de condition remplie.

Mais encore une fois pas de différence pour moi entre les 2 processus.

A+

C'est bizarre car je n'obtiens pas le meme résultat en cliquant sur la macro générale ou en cliquant sur les 3 macros découpées.

Une idée d'où peu venir le problème?

Tu peux me joindre ton fichier pour essayer?

Ca peu être un problème d'ordinateur tu penses?


ci joint un fichier avec des captures d'écran

https://www.cjoint.com/c/FGguU46OPm2

bonsoir,

Bonsoir,

Nonnon... Pas un problème d'ordi. Une prog un peu flou...

J'en ai profité encore pour faire un peu de ménage...

A+

??

Merci pour ton aide précieuse.

Ca fonctionne parfaitement

Je suis désolé de ne pas avoir répondu plus tot, mais depuis 2j impossible d'accéder au site

Merci encore

Rechercher des sujets similaires à "appel macro"