> Tous les forums > Forum Bureautique
 macroSujet résolu
Ajouter un message à la discussion
Pages : Début ... 4 5 [6] 7 8 ... Fin
[Début] Page 6 sur 9 [Fin]
maheln
 Posté le 14/11/2019 à 10:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

oui c'est bien cela, pour les q,r,s,t,u,v,w,x et chacun des des groupe de la feuille CA

merci de votre patience et de votre compréhension

Debrief
 Posté le 14/11/2019 à 14:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Essaie cette formule en ligne 8 des 8 derniers chiffres qui doit marcher et confirme si c'est ce que tu veux:

=SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$D3;1;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$E3;2;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$F3;3;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$G3;4;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$H3;5;
SI(INDIRECT(ADRESSE(LIGNE() -1 ;COLONNE())) >= 0;-1;INDIRECT(ADRESSE(LIGNE() -1 ;COLONNE())) -1))))))

Edit: un exemple...



Modifié par Debrief le 14/11/2019 16:15
Debrief
 Posté le 14/11/2019 à 14:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

PopUpMessage() est une fonction qui affiche un message pendant un certain nombre de secondes.
Malheureusement il affiche un <OK> qui l'utilisateur est tenté de cliquer mais ça ne sert à rien.

Il y a d'autres possibilités plus élaborées pour afficher un message temporaire soit avec un UserForm soit avec un une Shape Rectange ou autre.
Dans ce cas l'effacement est soit directement programmé au moment où on veut dans le code, soit déclenché par une fonction programmée pour s'exécuter après un certain temps.

maheln
 Posté le 14/11/2019 à 20:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

merci pour ces explication claire

pour la formule c'est exactement ça ,aussi bien en formule que pour le codage

est il possible de remplacer celle qui ce trouve dans la macro par celle-ci ?

pourriez vous me détailler le fonctionnement de la dernière ligne de la formule svp

énorme merci pour cela

merci de votre patience et de votre compréhension



Modifié par maheln le 14/11/2019 20:47
Debrief
 Posté le 14/11/2019 à 21:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir,

SI(INDIRECT(ADRESSE(LIGNE() -1 ;COLONNE())) >= 0;-1;INDIRECT(ADRESSE(LIGNE() -1 ;COLONNE())) -1))))))

INDIRECT(ADRESSE(LIGNE() ;COLONNE())) représente la cellule sur laquelle on se trouve, pour information, non utilisé dans cette formule.

INDIRECT(ADRESSE(LIGNE() -1 ;COLONNE())) représente la cellule au dessus de celle sur laquelle on se trouve.

Si cette cellule est >= 0 alors on met -1 dans la cellule sur laquelle on se trouve.
Sinon on prend la valeur de cette cellule et on y ajoute -1 (ex. -2 si la cette cellule vaut -1, -3
si la cette cellule vaut -2, etc...)

Debrief
 Posté le 14/11/2019 à 21:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai déjà remplacé la formule dans le code que j'ai aussi adapté aux feuilles CA multiples, et suis en train de coder le report dans toutes les feuilles CA des changements de noms dans la feuille NDP.

Je me suis rendu compte que la feuille RES est fortement dépendante de la feuille CA puisque les colonnes de chiffres sont relatives à des noms, qui lors d'une modification des noms de NDP ne sont plus les mêmes.

Que faut-il faire pour les feuilles RES qui après une modification de la liste des noms dans NDP reportés dans les feuilles CA et qui ne sont plus synchronisées avec les feuilles CA ?

Faut-il aussi reconstruire les feilles RES pour s'adapter à la nouvelle liste des noms ?

maheln
 Posté le 14/11/2019 à 22:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonsoir,

en feuille RES on copie toujours la dernière ligne en feuille CA ,à chaque nouvel ligne en CA le contenue de la feuille RES change

je fait confiance à votre compétence en la matière ,de mon point de vue , peu être suis je dans l'erreur mais ,à chaque fois que la dernière ligne de feuille CA et copier en Feuille RES c'est juste transitoire puisque chaque jour son contenue change

donc non je ne pense pas que ce soit nécessaire ,en revanche si est possible d'ajouter un message de rappel dans le code ...

la feuille RES reprenant le positionnement de la feuille CA ,si les nom en NDP change ,CA change ,donc la feuille RES change ,et les résulta de feuille RES parte dans un tableaux manuellement (pour le moment feuille RST)

voila comment c'est traiter actuellement

merci de votre patience et de votre compréhension



Modifié par maheln le 14/11/2019 22:04
Debrief
 Posté le 15/11/2019 à 09:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

en feuille RES on copie toujours la dernière ligne en feuille CA ,à chaque nouvel ligne en CA le contenue de la feuille RES change

Est-ce que c'est systématique ? Auquel cas il faudrait inclure cette copie dans la Macro qui copie Feuill2 sur CA.

la feuille RES reprenant le positionnement de la feuille CA ,si les nom en NDP change ,CA change ,donc la feuille RES change ,et les résulta de feuille RES parte dans un tableaux manuellement (pour le moment feuille RST)

La feuille RES étant "mariée" à la feuille CA, la sauvegarde manuelle de la seule feuille RES ne sert pas à grand chose si la feuille CA correspondante n'est pas conservée.

Il aurait fallu d'abord expliquer la logique de ce classeur et ce qu'il représente pour mettre en place quelque chose de plus cohérent. Plutôt que de répondre à des demandes ponctuelles sans vision globale.
Je suis persuadé que cette usine à gaz peut être simplifiée et mieux organisée. Mais bon ...

Je vais tenter d'adapter les feuilles RES quand il y a des modifications de noms dans NDP.

Publicité
Debrief
 Posté le 15/11/2019 à 11:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Lors de la modification de la liste des noms dans NDP, pour la feuille RES il y a 2 solutions: une simple et une plus complexe

La solution simple consiste à faire une report automatique de CA dans RES après la modification de la feuille CA pour correspondre à la nouvelle liste de noms dans la feuille CA

La solution compliquée consiste à adapter la feuille RES pour correspondre à la nouvelle liste de noms dans la feuille CA, sans report.

Je pense que la 1ère solution est plus sage.

maheln
 Posté le 15/11/2019 à 12:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour ,

oui c'est systématique la dernière ligne de CA en feuille RES

NDP : contient la liste des nom,nom de lieu d'activité,chiffres attendue

CA : contenant les activité tout lieu confondue, chaque ligne de CA représente 1 jour d’activité ,donc 1 tableau de feuille stock

RES reprenant CA dans dans tout les lieu confondue

CA +nom du lieu :le regroupement des jours d’activité du lieu et RES+nom du lieu la dernière ligne de CA+nom du lieu

la feuille 2 pour diriger la copie du tableau choisie feuille stock dans la destination voulue

copie CA en feuille RES pour servir à traiter systématiquement la dernière ligne de CA (ou quand du retard est prie en choisissant la date de ligne et le lieu ou copier (RESrtd))

la feuille RST les résultats reportai manuellement dans un tableau

merci de votre patience ,de votre compréhension

Debrief
 Posté le 15/11/2019 à 13:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

oui c'est systématique la dernière ligne de CA en feuille RES

Dans ce cas pourquoi ne pas automatiquement reporter la dernière ligne de CA en RES lorsqu'on reporte Feuil2 en CA ?

maheln
 Posté le 15/11/2019 à 14:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

oui, évidement plus simple ,

copie CA en feuille RES pour servir à traiter systématiquement la dernière ligne de CA (ou quand du retard est prie en choisissant la date de ligne et le lieu ou copier (RESrtd)) RESrtd qui reste indépendante ne servant qu'à traiter les ligne en retard

merci de votre patience ,de votre compréhension

Debrief
 Posté le 16/11/2019 à 11:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour info je continue à travailler sur ce classeur. C'est un gros boulot, patience...

maheln
 Posté le 16/11/2019 à 18:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

je comprend ..

merci de votre patience ,de votre compréhension

Debrief
 Posté le 16/11/2019 à 20:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai pratiquement fini une révision du code pour accélérer les traitements.

Lorsqu'on travaille sur un grand nombre de plages, copier, coller etc... il est plus rapide d'affecter ces plages dans des tableaux, de travailler sur les tableaux puis de réaffecter les tableaux aux plages.
C'est ce que j'ai fait... Bien utile pour la répercussion des modifs des noms de NDP dans toutes les feuilles CA.

J'ai remarqué que la formule:

=SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$D3;1;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$E3;2;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$F3;3;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$G3;4;
SI(INDIRECT(ADRESSE(LIGNE();COLONNE()-8))=NDP!$H3;5;
SI(INDIRECT(ADRESSE(LIGNE() -1;COLONNE())) >= 0;-1;INDIRECT(ADRESSE(LIGNE() -1;COLONNE())) -1))))))

ne s'adapte pas automatiquement si on supprime manuellement des lignes de report. Excel ne change pas le numéro de ligne de NDP!$Dx, NDP!$Ex, etc...

Par exemple si on supprime la 1ère ligne, la 2ème ligne va remonter en 1ère ligne et on va trouver dans les formules NDP!$D4, NDP!$E4, etc... qui sont les formules de la 2ème ligne inchangées.
Je ne comprends pas pourquoi Excel ne les ajuste pas. Sans doute parce que ce n'est pas sur la feuille courante.

Donc pour plus de souplesse il faut modifier:
-> NDP!$D3 doit devenir INDIRECT("NDP!$D" & LIGNE() - 5),
-> NDP!$E3 doit devenir INDIRECT("NDP!$E" & LIGNE() - 5),

LIGNE() - 5 c'est 8 (ligne des formules 1ère ligne de report en CA ) - 5 = 3
LIGNE() - 5 c'est 9 (ligne des formules 2ème ligne de report en CA) - 5 = 4

De cette manière on peut manipuler les lignes de reports manuellement et les formules restent toujours valides.

Par contre il faut garder un écart de 5 lignes entre la 1ède ligne de NDP!$Dx et la 1ère lignes des formules de CA. Ou si cela change il faut adapter les formules et régénérer les feuilles CA comme si il y avait eu un changement de noms en NDP (car cette procédure reformate les feuilles CA).

maheln
 Posté le 16/11/2019 à 20:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

votre connaissances quand aux formules et aux codages sont bien supérieur aux miennes ,j'ai confiance en la qualité de votre expertise face aux difficulté rencontre et aux solution mise en place pour résoudre les problèmes;

si cela est possible me laisser un pence bête intégré que je comprennent bien à l'utilisation les changement ,si vous pence cela nécessaire évidement ; bien que je comprennent le décalage de ligne .

merci de votre patience ,de votre compréhension

Publicité
Debrief
 Posté le 16/11/2019 à 21:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Fichier -> https://cjoint.com/c/IKqukCIpMhB

A chaque report dans une feuille CA, la feuille correspondante RES est mise à jour.
De même lorsque les feuilles CA sont reconstruites suite à une modification de la liste des noms dans NDP (ou pas), les feuilles RES correspondantes aux feuille CA sont mises à jour.

J'ai testé les macros mais je te recommande de vérifier que cela fonctionne comme tu veux en faisant de nombreux essais suivis de vérifications.

Edit: je vais essayer d'améliorer les Popup messages trop aléatoires avec le système actuel.



Modifié par Debrief le 16/11/2019 21:23
maheln
 Posté le 16/11/2019 à 22:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonsoir,

oui ,je vais procéder au essaie et reviendrai ensuite ...

c'est effectivement un énorme travaille,et qui plus est ,soignée ..en cela l'affection de l'outils

merci de votre patience et de votre compréhension



Modifié par maheln le 16/11/2019 22:29
Debrief
 Posté le 17/11/2019 à 19:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

J'ai remplacé le système de Popup message actuel basé sur mshta.exe assez aléatoire (timer, sensible à Application.ScrennUpdating) par un UserForm dont l'affichage et l'effacement sont contrôlés et donc en synchronisation avec les étapes du traitement annoncées.

J'ai donc créé un module pour ce type d'affichage "Popup" avec UserForm et aussi un autre module (pas dans ton fichier) qui permet de faire des Popup temporisés avec ce même UserForm (si quelqu'un est intéressé je peux le mettre à disposition).

Le fichier avec ces nouveaux Popup UserFrom -> https://cjoint.com/c/IKrspwnffCB

D.

maheln
 Posté le 18/11/2019 à 02:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

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

j'ai ce message qui s'affiche !

je bosse avec office 2013 pro et Windows 10

je doit partir au boulot ,votre programmation correspond au projet ,pas d'erreur pour le moment ,juste la copie des tableaux stock en feuille 2 qui met entre 6 et 8 mn parfois sans doute due au 1018 ligne de chaque tableaux

merci de votre patience et de votre compréhension

Debrief
 Posté le 18/11/2019 à 10:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Pour le problème de PtrSafe je vais remplacer:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

par:
#If VBA7 Then
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Pour la copie du tableau, je vais aussi passer sur des tables internes pour accélérer le traitement. Je ne savais pas qu'il y en avait autant.



Modifié par Debrief le 18/11/2019 10:20
Debrief
 Posté le 18/11/2019 à 11:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

La copie de stock en Feuil2 devrait aller plus vite -> https://cjoint.com/c/IKskW1veL0B

maheln
 Posté le 18/11/2019 à 12:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

https://www.cjoint.com/data3/IKslKQ4wGnF_capture-papillion-9.PNG

merci de votre patience et de votre compréhension

Debrief
 Posté le 18/11/2019 à 13:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ok même problème que précédemment pour le PtrSafe.

J'ai supprimé le paramètre Nombre_Max_De_Noms et dorénavant c'est le nombre de noms en NDP qui conditionne le formatage de CA.

=> Quelques vérifications sont nécessaires ->https://cjoint.com/c/IKsm2pf3jvB

maheln
 Posté le 19/11/2019 à 02:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour,

pour le test ,je lance la construction des groupe en convenance de mes besoins

je charge le 1ier tableau feuille 2 ,rapide ,puis la copie en feuille CA+nom de feuille choisie ,j'attend un peu ,la copie ,la création ce passe bien ,je charge les tableaux du 23/09/2019 au 05/10/2019 dans 4 CA+nom de feuille choisie et quand je lance copie du tableau du 06/10/2019 ,blocage ! , userform 1 (ne répond pas) je patiente 10,15,20,mn ,rien à faire,ctrl alt sup ,je stop excel !

pour ce qui est des copies c'est propre pas d'erreurs vue pour le moment ,durant la copie des tableaux, cela était vraiment correct niveau rapidité contrairement à avant la modification que vous avez faite .

après blocage ,j'ai nettoyé mon ordinateur,ensuite redémarre papillon,supprimer les feuilles crées,enregistre le classeur ,ferme le classeur ,nettoyer,redémarre, relancer papillon,j'ai essayer un nouveau test ,crée les groupe ,ça c'est bien passé ,charger feuille 2,sans soucis ,lancer la copie en feuille CA+nom choisie ,les nouvelles feuilles CA et RES ce son crées,en au moment ou la copie ce mes en fonction de nouveau la fenêtre userform 1 clignote pendant quelques second et affiche (userform 1 ne répond pas)

j'ai attendue 20 mn, j'ai tous arrêter;et vous envoie ce message ....

je tenterai demain après le boulot un nouvel essaie ..

merci de votre patience et de votre compréhension

Publicité
Pages : Début ... 4 5 [6] 7 8 ... Fin
[Début] Page 6 sur 9 [Fin]

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Aucun sujet pertinent lié trouvé
 > Tous les forums > Forum Bureautique