Calcul dans une cellule VBA [excel]

Résolu/Fermé
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 - Modifié par olympiklyon le 8/06/2011 à 13:49
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 - 9 juin 2011 à 08:16
Bonjour,

j'ai fais une macro avec copie de cellule, tout marche sauf une formule de calcul.
Voici ma macro

Sub Macro4()
'
' Macro4 Macro
'
' Touche de raccourci du clavier: Ctrl+o

Ligne = ActiveCell.Row
L = Ligne


Selection.Copy
Workbooks.Open "C:\Documents and Settings\JeanMarie\Bureau\essai n1kjh"
Windows("essai n1kjh.xls").Activate
' Selectionne la première cellule du tableau
Range("B7").Select

' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop

ActiveSheet.Paste

MsgBox "Ligne " & ActiveCell.Row
Range("B7").Select

' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop

Windows("BUFFET4P Missi.xls").Activate
Range("I1").Select
Selection.Copy
Windows("essai n1kjh.xls").Activate
Selection.Offset(-1, -1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Offset(0, 4).Select
Selection.ClearContents

Num = "D" & L
Nyu = "I" & L
ActiveCell.formla(


Windows("essai n1kjh.xls").Activate
ActiveWorkbook.Save
Workbooks("essai n1kjh.xls").Close
Windows("BUFFET4P Missi.xls").Activate


Le problème est aux endroits souligné.
Au début je récupère de numéro de ligne et le réutilise pour ma formule en bas. je ne dois passavoir utiliser les variable.

Merci d'avance

A+
olympikyon =)
A voir également:

9 réponses

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 13:50
Bonjour,

tout dépend ou tu es positionné au moment ou tu lances ta macro :
es tu sur une plage de cellule, es-tu sur une cellule???
Si tu es sur une cellule, les codes suivants fonctionnent :
Ligne = ActiveCell.Row
L = Ligne
Num = "D" & L
Nyu = "I" & L

Par contre, il doit te manquer un bout de code car celui la ne fonctionne pas, c'est sur :
ActiveCell.formla(

que voulais-tu faire à ce moment la de ton code?
0
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 1
8 juin 2011 à 14:04
Au début, Je suis sur une plage de cellule dont je veux mémoriser le numéro de la ligne (par exemple 23).
Après ActiveCell.formla j'aimerais faire =D23 - I23. mais le 23 peut changer.
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 14:13
Bonjour,

si tu es sur une plage de cellule normalement
Ligne = ActiveCell.Row 'te récupères le numéro de ligne de ta première cellule de sélectionnée mais normalement ca marche.

maintenant remplace :
ActiveCell.formla(

par
ActiveCell.FormulaR1C1 = "=R" & l & "C8-R" & l & "C9"

Ca devrait marcher
0
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 1
8 juin 2011 à 14:22
Re,

ça ne sélectionne pas les colonnes du bon fichier. Je mets la formule dans "essai n1kjh.xls" et les cellules sélectionnées dans "BUFFET4P Missi.xls"

Merci
0

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

Posez votre question
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 14:39
Je n'ai pas tout suivi.

dis moi en français ce que cette macro est censée faire car pour moi techniquement, elle fonctionne.

Voici ce qu'elle fait :
tu sélectionnes une plage de cellule du classeur Buffet. (et tu enregistres le numéro de ligne de la première cellule par exemple 27)

Tu demandes de copier cette plage dans le fichier essai dès qu'une ligne est vide

Tu copies la cellule I1 pour la coller à un endroit de ton nouveau fichier (par exemple, sur la 11ème ligne)

en suite, tu lui demandes de faire dans le classeur essai d - i du numéro de lignes de ta plage copiée soit d27-i27.

Tu sauvegardes et tu fermes le fichier essai.

Dis moi ce qui ne vas pas??
0
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 1
8 juin 2011 à 14:46
ça doit faire ce que tu dit. Mais ça fait H11-I11 de "Essai" et pas le D27-I27 de "Buffet"
0
sirefalas Messages postés 219 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 12 février 2014 8
Modifié par sirefalas le 8/06/2011 à 14:48
question bête, il y a tout ton code dans ton message?
Et quel est le message d'erreur quand tu veux le lancer?
0
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 1
8 juin 2011 à 14:56
non mais après ActiveCell.formula faut rajouter R1C1 = "=R" & l & "C8-R" & l & "C9"

Il marche mais prend pas les bonnes cellules voir réponse précédente.
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 14:53
re,

donc je vois ou est le pb :

ub Macro4()
'
' Macro4 Macro
'
' Touche de raccourci du clavier: Ctrl+o

Ligne = ActiveCell.Row
L = Ligne

Selection.Copy
Workbooks.Open "C:\Documents and Settings\JeanMarie\Bureau\essai n1kjh"
Windows("essai n1kjh.xls").Activate
' Selectionne la première cellule du tableau
Range("B7").Select

' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop

ActiveSheet.Paste

MsgBox "Ligne " & ActiveCell.Row
Range("B7").Select

' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop

Windows("BUFFET4P Missi.xls").Activate
Range("I1").Select
Selection.Copy
Windows("essai n1kjh.xls").Activate
Selection.Offset(-1, -1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Offset(0, 4).Select
Selection.ClearContents

Windows("BUFFET4P Missi.xls").Activate
ActiveCell.FormulaR1C1 = "=R" & ligne & "C8-R" & ligne & "C9"
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 14:59
pardon, je me suis trompée, remplaces :
ActiveCell.FormulaR1C1 = "=R" & ligne & "C8-R" & ligne & "C9"

par :
ActiveCell.FormulaR1C1 = "=R" & ligne & "C4-R" & ligne & "C9"
0
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 1
8 juin 2011 à 15:07
Ah si le calcul se fait mais en I1 de "Buffet"
Très étrange
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 15:09
tu avais oublié de sélectionner la bonne feuille
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 15:10
Windows("BUFFET4P Missi.xls").Activate 'sélectionnes ta feuille
Selection.Offset(0, 4).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=R" & ligne & "C4-R" & ligne & "C9"
0
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 1
8 juin 2011 à 15:17
Selection.Offset(0, 4).Select
Selection.ClearContents

ça me sert à sélectionner la cellule où je souhaite y placer la formule dans "essai".
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 16:22
sub Macro4()
'
' Macro4 Macro
'
' Touche de raccourci du clavier: Ctrl+o

Ligne = ActiveCell.Row
L = Ligne

Selection.Copy
Workbooks.Open "C:\Documents and Settings\JeanMarie\Bureau\essai n1kjh"
Windows("essai n1kjh.xls").Activate
' Selectionne la première cellule du tableau
Range("B7").Select

' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop

ActiveSheet.Paste

MsgBox "Ligne " & ActiveCell.Row
Range("B7").Select

' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Loop

Windows("BUFFET4P Missi.xls").Activate
Range("I1").Select
Selection.Copy
Windows("essai n1kjh.xls").Activate
Selection.Offset(-1, -1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Offset(0, 4).Select
Selection.ClearContents

Windows("BUFFET4P Missi.xls").Activate
cells(ligne,5).select
ActiveCell.FormulaR1C1 = "=R" & ligne & "C8-R" & ligne & "C9"
0
olympiklyon Messages postés 63 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 8 octobre 2012 1
9 juin 2011 à 08:16
merci
0