Problème dépassement de capacité  Sujet résolu

Pour toutes vos questions à propos d'Excel ...

Problème dépassement de capacité  Sujet résolu

Messagepar vba-new » 20 Mai 2009, 22:53

Salut le forum!

J'ai un mini souci. Dans le fichier suivant: Fichier
En lançant la macro "toutesmacro" sur la feuille "Mediation" je me retrouve avec l'erreur "Dépassement de capacité".
Alors qu'en lançant la même macro dans la première feuille, cela marche parfaitement!!

Quelqu'un peut-il m'expliquer?
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar felix » 20 Mai 2009, 23:57

Bonsoir,

met au moins une valeur, dans la colonne D (quantité)

sinon, division par zéro.....

d'où dépassement de capacité...

Bonne soirée
Dernière édition par felix le 21 Mai 2009, 00:05, édité 1 fois.
Notre seule récompense est un "Merci".........
felix
Membre impliqué
 
Messages: 1549
Inscription: 11 Août 2007, 20:01
Localisation: Landerneau, Finistère
Version Excel: 2003 Fr (PC); 2007 Fr (PC)

Messagepar Mytå » 20 Mai 2009, 23:58

Salut le forum

Vba-New, tu exécutes une division par zéro
    Cells(j, 9) = Cells(j, 7) / Application.WorksheetFunction.Sum(Columns(7)) + Cells(j - 1, 9)
ou remplace par
    Cells(j, 9) = 0

Il faut au moins mettre une valeur à 1 dans les quantité.

Mytå
Mytå
 

Messagepar vba-new » 21 Mai 2009, 12:18

Salut Mytå et felix,

Merci pour vos réponses. J'avais pas pensé que c'était à cause d'une division par zéro.

Vous préconisez de mettre une valeur dans la colonne Quantité mais en fait cette colonne quantité représente le nombre de fournitures commandées par tel ou tel service.
Si la colonne quantité est vide (comme pour la feuille 'Mediation') cela signifie que ce service n'a rien commandé au cours de l'année.
Je ne peux donc pas mettre de quantité!

Mytå, tu me dis de mettre à la place Cells(j, 9) = 0, mais cela change toute ma formule!!

Existe-t-il une autre solution?
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar felix » 21 Mai 2009, 12:31

Bonjour,

dans ta sub calcCumulPourcent()

en tout début, tu mets :

Code: Tout sélectionner
If Application.Sum(Range("D8:D" & [A65000].End(xlUp).Row)) > 0 Then


et en toute fin :

Code: Tout sélectionner
End If


Bonne journée
Notre seule récompense est un "Merci".........
felix
Membre impliqué
 
Messages: 1549
Inscription: 11 Août 2007, 20:01
Localisation: Landerneau, Finistère
Version Excel: 2003 Fr (PC); 2007 Fr (PC)

Messagepar vba-new » 21 Mai 2009, 13:23

Ok ça marche nickel! Merci beaucoup!

Je voudrais savoir s'il est possible de réduire le temps d'exécution de ma macro.

Cela prend trop de temps à mon goût. Je pense que cela vient de la macro 'SupprLign'. Pensez-vous qu'il est possible d'optimiser cette macro?

Merci d'avance pour vos réponses!
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar felix » 21 Mai 2009, 14:35

re-,

regarde le fichier joint

j'ai enlevé tous les .Select
modifié quelques codes

je te laisse tester (en gros, 2 fois plus rapide)

http://www.excel-pratique.com/~files/do ... ice_v1.zip
Notre seule récompense est un "Merci".........
felix
Membre impliqué
 
Messages: 1549
Inscription: 11 Août 2007, 20:01
Localisation: Landerneau, Finistère
Version Excel: 2003 Fr (PC); 2007 Fr (PC)

Messagepar vba-new » 21 Mai 2009, 15:07

Merci beaucoup (voilà ta récompense felix)! Je remercie encore également Mytå pour sa participation.

Ca m'en apprend beaucoup plus sur le VBA!

Une dernière question, à quoi sert ce code?
Code: Tout sélectionner
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic


Edit: Existe-t-il une solution pour que la macro 'toutesmacro' s'exécute sur toutes les feuilles excepté la dernière?
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar felix » 21 Mai 2009, 15:39

Re-,

je passe le mode de calcul en manuel, et je le remets en automatique à la fin de toutes les macros, pour un gain de temps..

Pour ne pas que la macro puisse se dérouler sur la dernière, tu fais un test du style :

en tout début de code (avant Application.....)

Code: Tout sélectionner
If ActiveSheet.Name <> "Suivi magasin " Then


attention à l'espace à la fin de magasin, dans ton fichier, il y a un espace à la fin du nom de l'onglet..

et en toute fin de code :


Code: Tout sélectionner
End If
Notre seule récompense est un "Merci".........
felix
Membre impliqué
 
Messages: 1549
Inscription: 11 Août 2007, 20:01
Localisation: Landerneau, Finistère
Version Excel: 2003 Fr (PC); 2007 Fr (PC)

Messagepar vba-new » 21 Mai 2009, 15:47

Merci felix. J'avais pas vu que le nom de la feuille comportait un espace!!

Et si je veux pas que la macro s'exécute sur plusieurs feuilles je fais ça?
Code: Tout sélectionner
If ActiveSheet.Name <> "Suivi magasin " OR ActiveSheet.Name <> "nom_feuille1" OR ActiveSheet.Name <> "nom_feuille2" Then


Edit: Une autre ptite question : quelqu'un sait pourquoi la barre de défilement verticale n'est pas adaptée à la taille du tableau? Par exemple pour la feuille 'Médiation' en glissant la barre de défilement, je peux descendre jusqu'à la 1193è ligne alors qu'à partir de la 211è elles sont vides!
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Suivante

Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google [Bot], Google Adsense [Bot] et 8 invités