Calcul automatique

Résolu
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   -  
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

En fait, pour vous expliquer, dans la feuil1 de mon classeur, j'ai un tableau de 3000 lignes de A à AN.
Vous comprendrez donc que lorsque je met le calcul automatique ça rame pas mal à chaque ouverture.

J'ai des formules dans les colonnes AB à AN.

Je voudrais savoir si c'est possible qu'à chaque ouverture de mon fichier excel , il y ait un calcul automatique des formules dans ces colonnes; et une fois le calcul fait, le calcul automatique soit déconnecté.

Merci de votre aide

43 réponses

tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
Donc résultat des courses, tu es un as :)

j'ai essayé sur ma feuille qui a 5000 lignes a l'heure actuelle et ça va nickel, sauf la colonne AJ qui ne fonctionne pas est-ce normal ?

Et juste une question, etant donné que j'ai 5000 lignes dans mon tableau, je te laisse imaginer le nombre de formules a recalculer a chaque enregistrement. J'ai donc voulu effacer toutes les formules et faire pour que la macro fasse les calculs des lignes déjà entrées, mais ça ne fonctionne pas, ou c'est peut etre moi qui m'y prend mal.

Merci encore pour tout
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
effectivement il y avait un pb sur AI (dont dépend AJ), je continuais à le coller en AA, j'ai corrigé (pour rien, je l'ai mis en commentaires, voir suite).
Et comme AA est identique AI, maintenant je fais référence à AA pour AJ et je ne calcule plus AI (masquée), ça toujours ça de calculs inutiles en moins.

Si tu veux que la macro recalcule les lignes il faut penser à effacer les x sur les lignes concernées, je pense que c'est ça qui manquait.
Pour que tu y penses j'ai ajouté une message box 'calcul partiel ?' sur le ctrl+r, si tu réponds 'oui' (choix par défaut) ça ne calcule que les lignes non marquées (mais vu que le calcul se fait automatiquement sur une modif de date il ne devrait pas y en avoir bcp), si tu réponds 'non' ça efface tous les 'x' pour forcer un recalcul complet.

Comme apparement il n'y a pas trop d'erreur je traite maintenant également la ligne 2, si tu veux préserver tes formules qcq part penses-y...
http://www.cijoint.fr/cjlink.php?file=cj200810/cijrWWp671.xls

eric
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Donc j’ai essayé ce matin au travail, quand j’entre directement sur la feuille la date dans F, ça fonctionne, par contre, quand je passe par ma macro (voir fichier joint) ça plante et me met se message d’erreur :

Erreur d’exécution ‘13’ :
Incompabilité de type

Sinon a part ça , ton programme est parfait.


http://www.cijoint.fr/cjlink.php?file=cj200810/cij1r85TKe.xls
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

Effectivement, c'est la fonction jours.ouvrés en vba qui retourne une erreur si les 2 dates sont égales.
remplacer:
    If Cells(i, 38) = 1 Then
        r = Application.Run("ATPVBAEN.XLA!networkdays", DateEnt, Date)
    Else
        r = ""
    End If
    Cells(i, 39) = r
par:
    If Cells(i, 38) = 1 Then
        If DateEnt = Date Then
            r = 1
        Else
            r = Application.Run("ATPVBAEN.XLA!networkdays", DateEnt, Date)
        End If
    Else
        r = ""
    End If    
    Cells(i, 39) = r

et pareil pour les autres....

Je force la valeur à 1 à moins que tu ne préfères vraiment que l'on teste le jour pour mettre 0 si la date entrée est un samedi ou un dimanche, du coup il y Z qui se rempli, je ne sais pas si c'est normal pour toi.
http://www.cijoint.fr/cjlink.php?file=cj200810/cijZ3T05Ht.xls

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
je ne comprend pas trop ce que tu veux dire;

En fait il n'y aura pas de lignes rentrées le w.e , seulement du lundi au vendredi. Mais il se peut qu'une ou deux lignes soit entrées le samedi.

En fait si la date d'entrée et égale a la date de livraison et que jours.ouvrés =1 ça faussera mes tableau de stats.

j'essais 2-3 choses...
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
re,

Je me suis basé excel (hors vba), fonction nb.jours.ouvrés(), qui retourne déjà 1 si les 2 dates sont égales en jour de semaine, et 0 pour un jour de we. Mathématiquement il a raison, mais un jour de semaine compte plus qu'un jour de we... Entré et livré le même jour un samedi excel te disait 0, un lundi il te disait 1.
Pour les stats est-ce meilleur ?
La différence là c'est que c'est 1, semaine et we pour faire plus simple, mais dès une différence de 1 jour la fonction reprend le dessus. Je n'ai pas controlé mais théoriquement pour une livraison le samedi tu auras 1 le samedi, ensuite 0 le dimanche, puis 1 le lundi etc.
Je ne connais pas tes jours de livraison et traitement possibles, si ça a une importance pour toi on peut calculer le jour pour mettre 0 ou 1 selon we ou semaine, toi seul sait ce qui est mieux.
eric
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
PS: j'ai jeté un oeil à tes macros.
Tu cherches à accelerer le traitement mais tu as une tempo qui te fais perdre 2s à chaque enregistrement. Juste pour pouvoir voir la barre de progression se remplir...
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
Je vois ce que tu veux dire.

Je viens de faire le test avec le fichier initial, formule , et par exemple si dans date d'entrée 10.10.08 et dans date de livraison 13.10.08 , dans temps de passage il y a 1.
Par contre effectivement avec la macro maintenant au lieu de 1, j'ai 2 jours.

Il n'y aurais vraiment pas possibilité de réussir pour qu'il n'y ait qu'un ? car je ne pense pas que ça aille pour mes stats lorsque je les présente a ma direction... MErci encore...
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
oui, dans la dernière correction j'ai fait un copier/coller du code et le -1 avait sauté.
Mais ça n'enlève rien au fait que je compte tjs 1 pour un coli traité le même jour un samedi et qu'excel comptait 0 avant.
Correction de la correction ;-) :
http://www.cijoint.fr/cjlink.php?file=cj200810/cijZpDt5Qa.xls
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
ben écoute là ça m'a vraiment l'air bien.
Je regarde tout ça demain au travail et je te redonne des nouvelles.

Bonne soirée a toi et merci beaucoup!
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour, alors j’ai bien regarder ta macro en faisant varier les dates, rien à redire, c’est parfait.

Par contre en la mettant sur mon programme complet, ça m’ennuie, il y a encore un bug.
En fait comme tu peux voir sur le fichier joint, quand tu cliques sur « Entrer un nouveau lot », il y a le Userform2 qui s’affiche comme dans l’ancien fichier, et lorsque la personne a terminé sont lot, elle va ensuite cliquer sur « Enregistrer un lot », là il y a le Userform8 qui s’affiche et s’est avec ce USF que la date de livraison s’enregistre. Mais lorsque je clique sur valider, il y a de nouveau le message d’erreur qui s’affiche.

En fait hier avant que tu fasses les modifications, le USF8 marchait bien et le USF2 plantait, maintenant c’est l’inverse. J’ai essayé 2-3 choses mais sans succès.

Une fois ce petit problème réglé, tout sera parfait et je te remercie vraiment de ton aide…

http://www.cijoint.fr/cjlink.php?file=cj200810/cij5GVqxc5.xls
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Tu m'as fait chercher avant de comprendre le pourquoi, faut tout faire en pas à pas pour avoir le message d'erreur...
Tu mets DateLiv en chaine de caractère et ce doit être une date pour Application.Run("ATPVBAEN.XLA!networkdays", DateEnt, DateLiv) - 1
Utilise cdate avant de l'inscrire (mais en te mefiant que souvent il forme une date au format anglais (mm/jj/aa) )
eric
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
Excuse moi de répondre seulement maintenant, je rentre seulement du travail.

En fait dans le fichier que je t'avais mis en pièce jointe, je n'ai pas changé le code que tu avais mis, donc je ne vois pas trop ce que tu veux me dire... désolé...
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

ce que je veux te dire c'est que l'erreur est dans TON code, lorsque tu inscris la dateliv dans une cellule.
Tu ecris un texte "18/08/08" et non pas une date 18/10/08.
Il faut mettre ....=cdate(ta_variable)

eric
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
je pense que tu penses au code dans le Userfor8? mais le valeur est celle du calendar, et je ne sais pas comment le paramétrer différemment...
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

Dans le usf4 il fallait mettre :
Application.Worksheets("produits").Cells(ligne, 11) = CDate(TextBox11.Value)

De plus j'ai remplacé les dateent="" et les dateliv="" par =Null car la fonction ATPVBAEN.XLA!networkdays me générait des incompatibilités de type.
Et maintenant qu'il n'y a plus bcp de formules je pense que tu peux remettre le calcul automatique pour éviter les mauvaises surprises car je n'ai trouvé aucun .calculate dans ton projet.
http://www.cijoint.fr/cjlink.php?file=cj200810/cijKwWcYGS.xls

Bonne journée
eric
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Donc j’ai essayé au travail, effectivement lorsque je valide les 2 USF, les lignes s’insèrent correctement.

Par contre maintenant, les colonnes Z, AA, AL, AM,,AJ. Encore désolé de te déranger, c’est vraiment gentil tout ce que tu as fait pour moi !
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Par contre maintenant, les colonnes Z, AA, AL, AM,,AJ
et ?
Sois le plus précis possible, colonne par colonne
0
tchulio Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   1
 
en fait quand j'entre une date dans F, avant modif; normalement il y a une valeur qui s'inscrit dans Z, AB, AD, AE, AK, AL et AM ; et quand j'entrait une date dans K il y avait une valeur qui s'inscrivait dans AA, AC, AF, AG, AH, AJ.

Or maintenant lorsque j'entre une date en F il y a juste une valeur dans AB, AC, AD, AE, AK puis quand une met une date dans K il y a juste une valeur dans AC, AF, AG, AH...
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Oufff, ça y est, c'était encore cette $%!?ç0!* de fonction ATPVBAEN.XLA!networkdays qui retournait une erreur en interprétant les dates comme américaines (dd/jj/yy).
Bon là c'est je pense réglé pour elle, reste quand même qu'elle cachait peut-être d'autres erreurs (une autre est apparue ensuite...) Contrôle tous les calculs dans différents cas de figure.

Je t'ai mis en commentaire 'Sheets("Menu").Select car la feuille n'existe pas et ça générait une erreur.
Et j'ai modifié un peu tes couleurs pour m'y retrouver...
http://www.cijoint.fr/cjlink.php?file=cj200810/cijpsaa36Z.xls

eric
0