|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : novembre 2011 Messages : 22 ![]() |
Bonjour à toutes et à tous !
Tout d'abord, meilleurs voeux à tous pour cette nouvelle année 2012 Voici mon soucis: J'aimerai créer une macro me permettant de mettre à jour (recalculer) toutes les cellules d'une colonne. Mes cellules sont associées à des formules mais ne se modifies pas, je suis obligé de les sélectionner une par une et d'appuyer sur "entrée" pour les mettre à jour... ![]() Voici la macro que j'ai créé mais cependant, j'aimerai passer par une boucle, ce qui serait beaucoup plus pratique : Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Normalement, il suffit que tu te mettes en mode Calcul Automatique dans les options ou que tu appuies sur F9.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2011 Messages : 22 ![]() |
Lorsque je me mets en calcul automatique ou que j'appuies sur F9, il m'indique une référence circulaire et me renvois à l'aide d'Excel...
J'aimerai donc passer par une macro pour n'actualiser que la colonne "D", et non pas toute la feuille. Cela est-ce possible ? Je ne maitrise pas trop les boucles donc si vous pouvez m'aider... ![]() Merci ! |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Marcel GALANODéveloppeur informatique Inscription : juillet 2009 Messages : 644 ![]() |
Bonjour le Forum,
Bonjour chpierro, bienvenu et meilleurs voeux en retour. Ouf! Tout ce qu'il ne faut pas faire! Preuve qu'un recul par rapport à l'enregistreur est toujours nécessaire. Tout d'abord, ces p... de Select sont à proscrire! Cette méthode n'ajoute rien, alourdit le code et le rend illisible. D'autre part, il faut savoir que la formulation peut s'appliquer à un objet Range de plusieurs cellules. C'est un avis personnel. Les boucles sur cellules uniques ne sont qu'un dernier recours. Exemple, pour une même formule : Code :
Range("A1:C300").FormulaR1C1 = "=R[2]C[6]+R[3]C-RC[1]" C'est alors la formulation qu'il faut revoir. Essaie d'épurer ton code avec ce processus et reviens si nécessaire. Bonne journée.
__________________
Bien Cordialement. Marcel Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.![]()
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
S'il y a une référence circulaire, c'est qu'il y a un problème de conception quelque part, c'est peut-être ça qu'il faut résoudre en premier...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2011 Messages : 22 ![]() |
Non mais j'aimerai simplement passer par une simple boucle, pouvez vous m'aider à formuler cela ?
Mon fichier pèse plus de 8mo donc au niveau des références circulaires, je ne vais pas m'amuser à toutes les chercher... ![]() Et petite question: concernant cette formule , que signifie les chiffres entre crochets ? Exemple: que signifie R[2]C[6] ? Danke schön ! |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Marcel GALANODéveloppeur informatique Inscription : juillet 2009 Messages : 644 ![]() |
chpierro,
Lis ce qui précède! Personnelement, je me refuserai à utiliser une boucle alors que l'action sur l'ensemble des cellules souhaitées est possible. Les "crochets" indiquent le décalage en lign(e)(R) et colonne(s)(C). Un conseil. Documente-toi en étudiant les tutoriels présents sur ce Forum.
__________________
Bien Cordialement. Marcel Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.![]()
|
|
|
00
|
|
|
#8 | ||||
|
Expert Confirmé
![]() Inscription : décembre 2007 Messages : 1 911 ![]() |
Bon, je suis d'accord avec mes collègues, c'est horrible.
Mais quand même, quelques pistes pour aérér tout celà : (1)supprimer les smallscroll. Ils ne servent qu'à bouffer du temps. Déplacer l'écran de 3 lignes, quand on calcule, ça ne sert rigoureusement à rien. Et le select qui précéde est tout aussi inutile. il faut donc supprimer tous les blocs du type Code :
Code :
Code :
Range("D251").FormulaR1C1 = "=SUM(RC5:R[1]C16384)" Alors les boucles. Ben, les boucles, elles font toujours la même chose(c'est pourquoi beaucoup ici les évitent comme la peste). Moi j'aime bien, mais ça demande généralement du paramétrage pour faire des choses un poil évoluées. Paraméquoi? Paramétrage. Kézako? Eh bien, ta formule "=SUM(RC5:R[3]C16384)" revient souvent, par exemple. Mais à intervalles irréguliers. Pas de pot. Tu dois définir quelque part l'ensemble des cases ou cette formule doit être appliqués. Ca peut être "en dur" dans le code, mais c'est moche et presque aussi long. Ou ça peut être sur une autre feuille, mais c'est compliqué(pour un débutant). Ou ça peut être défini sur la même feuille, mais alors ça signifie que tu as sur ta feuille des titres qui te permettent de savoir quelle est la formule à appliquer. Si à chaque fois que tu as "montant"(ou n'importe quel label) dans la case en colonne D tu dois appliquer la même formule, alors une boucle simple et efficace est pensable. Mais pour ça, il faut en savoir plus sur ton classeur. Si chaque case est différente fonctionellement, alors une "boucle" ne reglera pas ton problème.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten : 1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception 2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences 3)le temps de comprendre toutes les exigences, le projet est terminé 4)le temps de terminer le projet, les exigences ont changé Et le serment de non-allégiance : Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée. |
||||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
La méthode Calculate s'applique aussi à un Range, tu peux très bien faire un tableau avec les cellules que tu veux actualiser et boucler dessus en faisant un Calculate (vu que les cellules ne sont pas contigües, c'est plus compliqué de tout faire en une seule fois).
Par contre, je ne te donnerais pas plus de détails car il faut bien que tu fasses un petit effort quand même... J'avoue que je trouve ça un peu fort de dire en gros : "j'ai un gros fichier qui ne marche pas, mais j'ai la flemme de me plonger dedans, alors j'aimerais bien que quelqu'un me fournisse une rustine toute faite pour calculer les 30 valeurs dont j'ai besoin". Surtout que ça risque d'être faux s'il y a des problèmes ailleurs dans ta feuille.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2011 Messages : 22 ![]() |
Merci pour vos réponses
Mais cependant, j'ai juste besoin d'une boucle me permettant d'activer la cellule du dessous, de double cliquer à l'intérieur et de faire "ENTRER", n'est-ce pas possible simplement en VBA ? J'ai inséré une pièce-jointe pour plus de compréhension. Merci beaucoup ! Ps: Cela fais une semaine que je cherche à faire cette foutu boucle, mais sans succès |
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Allez, on va être sympa, un truc dans ce style devrait marcher
Code :
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
||
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2011 Messages : 22 ![]() |
ça ne fonctionne pas, erreur à "rg.Calculate"
|
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Il y a des références circulaires dans la colonne D ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2011 Messages : 22 ![]() |
Aucune erreur trouvée dans la colonne D...
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
La détection que tu as fait ne détecte pas les références circulaires (parce que ce n'est pas une erreur, on pourrait faire exprès d'en faire).
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Cathy MVP Excel Développeur et Formateur bureautique Inscription : décembre 2011 Messages : 1 ![]() |
Je pense que vous n’avez pas su écouter les réponses qui vous ont été proposées. Si le problème source est l’affichage de référence circulaire, c’est qu’il y a une mauvaise conception de votre classeur. Donc inutile et très très très mauvais de contourner le problème en ne voulant calculer que quelques cellules. De toute façon, vous aurez beau faire, si vous entrez des formules dans les cellules en VBA, elles ne seront calculées qu’après un calcul de la feuille ou du classeur. Nous en revenons donc au problème de référence circulaire.
La recherche de ces références circulaires, n’est pas difficile avec Excel 2007 et Excel 2010. Il vous suffit d’aller sur Références circulaires dans Vérification des erreurs sur l’onglet Formules |
|
|
10
|
|
|
#17 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2011 Messages : 22 ![]() |
Merci pour toutes vos réponses, j'ai réussi à corriger le soucis de référence circulaire et tout est ok.
Merci à tous !
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com