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 -
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
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
A voir également:
- Calcul automatique
- Réponse automatique thunderbird - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
43 réponses
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
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
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
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
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
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
Bonsoir,
Effectivement, c'est la fonction jours.ouvrés en vba qui retourne une erreur si les 2 dates sont égales.
remplacer:
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
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) = rpar:
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
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...
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
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
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...
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...
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...
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...
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
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
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!
Je regarde tout ça demain au travail et je te redonne des nouvelles.
Bonne soirée a toi et merci beaucoup!
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
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
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
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
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é...
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é...
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
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
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...
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
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
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 !
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 !
Par contre maintenant, les colonnes Z, AA, AL, AM,,AJ
et ?
Sois le plus précis possible, colonne par colonne
et ?
Sois le plus précis possible, colonne par colonne
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...
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...
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
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