Macros qui bug, simple copier/coller

Yoy00

XLDnaute Nouveau
Bonjour à tous,
J'ai créer une macros afin d'insérer des formule de calcul, sur un tableau déjà existant mais la macros bug. Il n'ya pourtant rien de compliqué 2 formule que j'insère et que je recopies une dizaine de fois par copier/coller durant l'enregistrement du macro.

Est-ce que quelqu'un peut me venir en aide? Merci.
 

Yoy00

XLDnaute Nouveau
Re : Macros qui bug, simple copier/coller

Merci, je ne sais pas par contre de quoi vous avez besoin, j'ai donc copier la partie que m'affiche MVB lors du débogage.

"=((SUM(R[-26]C:R[-8]C)-(SUM(R[-26]C[-1]:R[-8]C[-1]))/RC[-2]))"
Range("E74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-30]C[-1]:R[-28]C[-1])))/RC[-2]"
Range("E74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-30]C[-1]:R[-28]C[-1])))/RC[-2]"
Range("E74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-30]C[-1]:R[-28]C[-1])))/RC[-2]"
Range("E75").Select
ActiveSheet.Paste
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C))-(SUM(R[-31]C[-1]:R[-29]C[-1])))/R[-1]C[-2]"
Range("E75").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C))-(SUM(R[-26]C[-1]:R[-8]C[-1])))/R[-1]C[-2]"
Range("E75").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C))-(SUM(R[-26]C[-1]:R[-8]C[-1])))/RC[-2]"
Range("E72").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-61]C:R[-59]C,R[-55]C:R[-37]C))-(SUM(R[-61]C[-1]:R[-59]C[-1],R[-55]C[-1]:R[-37]C[-1])))/RC[-2]"

Voila, merci d'avance.
Et si au passage vous pouvez m'expliquer la raison du bug je ne serais pas contre, si aufutur je peux régler le problème moi même.
 

porcinet82

XLDnaute Barbatruc
Re : Macros qui bug, simple copier/coller

Re, salut Pierrejean :),

Je pense qu'avec tout le code, ce serait un peu plus pratique, parce que la on ne va pas pouvoir en tirer grand chose, à part te dire que la référence faite dans tes formules peut poser problème selon l'endroit ou tu les mets...

@+
 

Yoy00

XLDnaute Nouveau
Re : Macros qui bug, simple copier/coller

Sub macros21()
'
' macros21 Macro
' Macro enregistrée le 21/01/2008 par 6809610A
'
' Touche de raccourci du clavier: Ctrl+x
'
ActiveWindow.SmallScroll Down:=33
Range("E70").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-59]C:R[-57]C))-(SUM(R[-59]C[-1]:R[-57]C[-1])))/RC[-2]"
Range("E71").Select
ActiveWindow.Zoom = 40
ActiveWindow.Zoom = 25
ActiveWindow.Zoom = 10
ActiveWindow.Zoom = 25
ActiveWindow.Zoom = 40
ActiveWindow.SmallScroll Down:=-27
Range("E70").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-59]C:R[-57]C))-(SUM(R[-59]C[-1]:R[-57]C[-1])))/RC[-2]"
Range("E71").Select
Sheets("semaine VA (35)").Select
Range("E71").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-54]C:R[-36]C))-(SUM(R[-54]C[-1]:R[-36]C[-1])))/RC[-2]"
Range("E72").Select
Sheets("semaine AB (35)").Select
Range("E71").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-54]C:R[-36]C))-(SUM(R[-54]C[-1]:R[-36]C[-1])))/RC[-2]"
Range("E72").Select
ActiveWindow.SmallScroll Down:=9
Range("E70").Select
Selection.Copy
Range("E74").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-59]C:R[-57]C))-(SUM(R[-59]C[-1]:R[-57]C[-1])))/RC[-2]"
Range("E70").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-59]C:R[-57]C))-(SUM(R[-59]C[-1]:R[-57]C[-1])))/RC[-2]"
Range("E71").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-54]C:R[-36]C))-(SUM(R[-54]C[-1]:R[-36]C[-1])))/RC[-2]"
Range("E74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-59]C[-1]:R[-57]C[-1])))/RC[-2]"
Range("E75").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C)-(SUM(R[-26]C[-1]:R[-8]C[-1]))/RC[-2]))"
Range("E74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-30]C[-1]:R[-28]C[-1])))/RC[-2]"
Range("E74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-30]C[-1]:R[-28]C[-1])))/RC[-2]"
Range("E74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-30]C[-1]:R[-28]C[-1])))/RC[-2]"
Range("E75").Select
ActiveSheet.Paste
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C))-(SUM(R[-31]C[-1]:R[-29]C[-1])))/R[-1]C[-2]"
Range("E75").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C))-(SUM(R[-26]C[-1]:R[-8]C[-1])))/R[-1]C[-2]"
Range("E75").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C))-(SUM(R[-26]C[-1]:R[-8]C[-1])))/RC[-2]"
Range("E72").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-61]C:R[-59]C,R[-55]C:R[-37]C))-(SUM(R[-61]C[-1]:R[-59]C[-1],R[-55]C[-1]:R[-37]C[-1])))/RC[-2]"
Range("E76").Select
ActiveSheet.Paste
Range("E76").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-32]C:R[-30]C,R[-32]C[-1]:R[-30]C[-1]))-(SUM(R[-65]C[-1]:R[-63]C[-1],R[-59]C[-1]:R[-41]C[-1])))/R[-4]C[-2]"
Range("E72").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-61]C:R[-59]C,R[-55]C:R[-37]C))-(SUM(R[-61]C[-1]:R[-59]C[-1],R[-55]C[-1]:R[-37]C[-1])))/RC[-2]"
Range("E76").Select
ActiveSheet.Paste
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-32]C:R[-30]C,R[-27]C:R[-9]C))-(SUM(R[-32]C[-1]:R[-30]C[-1],R[-27]C[-1]:R[-9]C[-1])))/RC[-2]"
Range("E76").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-32]C:R[-30]C,R[-27]C:R[-9]C))-(SUM(R[-32]C[-1]:R[-30]C[-1],R[-27]C[-1]:R[-9]C[-1])))/RC[-2]"
Range("E76").Select
Selection.Copy
Range("I76").Select
ActiveSheet.Paste
Range("M76").Select
ActiveSheet.Paste
Range("Q76").Select
ActiveSheet.Paste
Range("U76").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-32]C:R[-30]C,R[-27]C:R[-9]C))-(SUM(R[-32]C[-1]:R[-30]C[-1],R[-27]C[-1]:R[-9]C[-1])))/RC[-2]"
Range("E75").Select
Selection.Copy
ActiveSheet.Paste
Application.CutCopyMode = False
Range("E75").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-26]C:R[-8]C))-(SUM(R[-26]C[-1]:R[-8]C[-1])))/RC[-2]"
Range("E75").Select
Selection.Copy
Range("I75").Select
ActiveSheet.Paste
Range("M75").Select
ActiveSheet.Paste
Range("Q75").Select
ActiveSheet.Paste
Range("U75").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
Range("E74").Select
Selection.Copy
Range("I74").Select
ActiveSheet.Paste
Range("M74").Select
ActiveSheet.Paste
Range("Q74").Select
ActiveSheet.Paste
Range("U74").Select
ActiveSheet.Paste
Range("T74").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("U74").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-30]C:R[-28]C))-(SUM(R[-30]C[-1]:R[-28]C[-1])))/RC[-2]"
Range("E72").Select
Selection.Copy
Range("I72").Select
ActiveSheet.Paste
Range("M72").Select
ActiveSheet.Paste
Selection.End(xlToRight).Select
Range("Q72").Select
ActiveSheet.Paste
Range("U72").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-61]C:R[-59]C,R[-55]C:R[-37]C))-(SUM(R[-61]C[-1]:R[-59]C[-1],R[-55]C[-1]:R[-37]C[-1])))/RC[-2]"
Range("E71").Select
Selection.Copy
Range("I71").Select
ActiveSheet.Paste
Range("M71").Select
ActiveSheet.Paste
Range("Q71").Select
ActiveSheet.Paste
Range("U71").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
Range("E70").Select
Selection.Copy
Range("I70").Select
ActiveSheet.Paste
Range("M70").Select
ActiveSheet.Paste
Range("Q70").Select
ActiveSheet.Paste
Range("U70").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
Range("M71").Select
ActiveCell.FormulaR1C1 = _
"=((SUM(R[-54]C:R[-36]C))-(SUM(R[-54]C[-1]:R[-36]C[-1])))/RC[-2]"
Range("M72").Select
End Sub


Voilà!
 

porcinet82

XLDnaute Barbatruc
Re : Macros qui bug, simple copier/coller

re,

Je suppose que c'est une macro faire via l'enregistreur de macro. Donc je viens de jeter un oeil et le soucis c'est que pour une meme cellule, tu lui affectes plusieurs formules, et tu fais plein de traitement qui font que le code n'est pas compréhensible.
Est-ce que tu aurais possibilité de nous faire un classeur exemple sans données confidentielles avec ce que tu as et ce que tu souhaires afin que l'on puisse voir, parce que je ne saisie pas la finalité des copier/coller alors que tu mets directement les formules dans les cellules.

@+
 

Yoy00

XLDnaute Nouveau
Re : Macros qui bug, simple copier/coller

OUi c'est exact il est fait par l'enregistreur de macro, je ne maitrise pas du tout ce language.
Dans le fichier les formule que je ve insérer son dans les cellules rouges en bas, sachant que des feuille comme celle là j'en ais des centaines.
 

Pièces jointes

  • exemple.xls
    27 KB · Affichages: 60
  • exemple.xls
    27 KB · Affichages: 60
  • exemple.xls
    27 KB · Affichages: 62

porcinet82

XLDnaute Barbatruc
Re : Macros qui bug, simple copier/coller

re,

Ok, mais tu veux les insérer ou ces cellules ?
Et tu dis avoir des centaines de feuilles, sont elles toutes identiques ? Est-ce que ton classeur ne contient que ce genre de feuille ?
Parce qu'il est possible d'exécuter le meme code sur plusieurs feuilles si cela t'interesse.
Tiens nous au courant.

@+
 

Yoy00

XLDnaute Nouveau
Re : Macros qui bug, simple copier/coller

En faite ce que je cherche c'est une macros qui insérerai dans chacunes des cellules rouges les formule de calcul, comme ça par la suite je pourrai a l'aide de la touche racourcie du macro, les insérer tte ensemble en une seule fois sur chaque tableaux. Mais si il existe une manière d'executer ce macro sur tte les feuille en même temps oui je serais intéressé.

Et oui tout mes tableaux sont identique( toute les feuilles sont identiques) et l n'y que ces feuille dans mon classeur.

Merci.

PS: on dit un macro ou une macro?
 

porcinet82

XLDnaute Barbatruc
Re : Macros qui bug, simple copier/coller

re,

On dis une macro.
Je t'ai fait le code assez simplement afin que si tu changes tes formules, tu puisses simplement aller les modifier dans le code :
Code:
Sub Insert_formule()
Dim k As Integer
For k = 1 To Sheets.Count
    With Sheets(k)
        .Range("G72").FormulaLocal = "=SOMME(G70:G71)"
        .Range("G76").FormulaLocal = "=SOMME(G74:G75)"
        .Range("I70").FormulaLocal = "=((SOMME(I11:I13))-(SOMME(H11:H13)))/G70"
        .Range("I71").FormulaLocal = "=((SOMME(I17:I35))-(SOMME(H17:H35)))/G71"
        .Range("I72").FormulaLocal = "=((SOMME(I11:I13;I17:I35))-(SOMME(H11:H13;H17:H35)))/G72"
        .Range("I74").FormulaLocal = "=((SOMME(I44:I46))-(SOMME(H44:H46)))/G74"
        .Range("I75").FormulaLocal = "=((SOMME(I49:I67))-(SOMME(H49:H67)))/G75"
        .Range("I76").FormulaLocal = "=((SOMME(I44:I46;I49:I67))-(SOMME(H44:H46;H49:H67)))/G76"
 
        .Range("K72").FormulaLocal = "=SOMME(K70:K71)"
        .Range("K76").FormulaLocal = "=SOMME(K74:K75)"
        .Range("M70").FormulaLocal = "=((SOMME(M11:M13))-(SOMME(L11:L13)))/K70"
        .Range("M71").FormulaLocal = "=((SOMME(M17:M35))-(SOMME(L17:L35)))/K71"
        .Range("M72").FormulaLocal = "=((SOMME(M11:M13;M17:M35))-(SOMME(L11:L13;L17:L35)))/K72"
        .Range("M74").FormulaLocal = "=((SOMME(M44:M46))-(SOMME(L44:L46)))/K74"
        .Range("M75").FormulaLocal = "=((SOMME(M49:M67))-(SOMME(L49:L67)))/K75"
        .Range("M76").FormulaLocal = "=((SOMME(M44:M46;M49:M67))-(SOMME(L44:L46;L49:L67)))/K76"
 
        .Range("O72").FormulaLocal = "=SOMME(O70:O71)"
        .Range("O76").FormulaLocal = "=SOMME(O74:O75)"
        .Range("Q70").FormulaLocal = "=((SOMME(Q11:Q13))-(SOMME(P11:P13)))/O70"
        .Range("Q71").FormulaLocal = "=((SOMME(Q17:Q35))-(SOMME(P17:P35)))/O71"
        .Range("Q72").FormulaLocal = "=((SOMME(Q11:Q13;Q17:Q35))-(SOMME(P11:P13;P17:P35)))/O72"
        .Range("Q74").FormulaLocal = "=((SOMME(Q44:Q46))-(SOMME(P44:P46)))/O74"
        .Range("Q75").FormulaLocal = "=((SOMME(Q49:Q67))-(SOMME(P49:P67)))/O75"
        .Range("Q76").FormulaLocal = "=((SOMME(Q44:Q46;Q49:Q67))-(SOMME(P44:P46;P49:P67)))/O76"
 
        .Range("S72").FormulaLocal = "=SOMME(S70:S71)"
        .Range("S76").FormulaLocal = "=SOMME(S74:S75)"
        .Range("U70").FormulaLocal = "=((SOMME(U11:U13))-(SOMME(T11:T13)))/S70"
        .Range("U71").FormulaLocal = "=((SOMME(U17:U35))-(SOMME(T17:T35)))/S71"
        .Range("U72").FormulaLocal = "=((SOMME(U11:U13;U17:U35))-(SOMME(T11:T13;T17:T35)))/S72"
        .Range("U74").FormulaLocal = "=((SOMME(U44:U46))-(SOMME(T44:T46)))/S74"
        .Range("U75").FormulaLocal = "=((SOMME(U49:U67))-(SOMME(T49:T67)))/S75"
        .Range("U76").FormulaLocal = "=((SOMME(U44:U46;U49:U67))-(SOMME(T44:T46;T49:T67)))/S76"
    End With
Next k
End Sub

Soit tu rajoutes un bouton sur par exemple la première feuille et tu appels la macro dans le code du bouton (Call Insert_formule), soit tu devras l'executer en allant directement dans le code et en faisant F5 ou alors en faisant Outils/Macro/Macros...

@+
 
Dernière édition:

Yoy00

XLDnaute Nouveau
Re : Macros qui bug, simple copier/coller

Merci beaucoup cela va grandemant me simplifier la vie.

Juste quelques petites questions:

Je trouve qu'elle met beaucoup plus de temps à s'éxécuter que les macros que j'ai déjà utiliser (qui était enregistrer à l'aide de l'assistant),est-ce normal?

Je suis aussi intéresser par la technique qui permet d'appliquer unne même macro sur plusieurs feuilles, pouvez vous me l'expliquer vite fait?

Et je voudrais savoir ce que veu dire :
"
Dim k As Integer
For k = 1 To Sheets.Count
With Sheets(k)
"
Et sinon connaissez vous un site ou serait indéxé tout les formule utilisé dans VBA.
Merci!
 

porcinet82

XLDnaute Barbatruc
Re : Macros qui bug, simple copier/coller

re,

Elle met plus longtemps certainement car elle s'execute deja sur toutes les feuilles de ton classeur !!! ;)

En fait, Dim k As Integer permet de déclarer la variable k en Interger, c'est a dire un entier compris entre -32 768 et 32 767

Le For k = 1 To Sheets.Count est une boucle qui permet de boucler de la première à la derniere feuille (Sheets.Count permet de compter le nombre de feuille du classeur)

Enfin With Sheets(k) permet de dire "Pour la feuille k"

Dernière chose, pour toutes les formules vba, je ne saias pas trop, mais en farfouillant sur internet, tu en trouveras ici et la...

Voili, voilou,

@+
 

Discussions similaires

Réponses
11
Affichages
650

Statistiques des forums

Discussions
312 084
Messages
2 085 193
Membres
102 810
dernier inscrit
mohammedaminelahbali