Calcul dans une cellule VBA [excel]

Résolu
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 =)

9 réponses

  1. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. ça doit faire ce que tu dit. Mais ça fait H11-I11 de "Essai" et pas le D27-I27 de "Buffet"
              0
              1. 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
                1. 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
              2. 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
                1. 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
                2. Ah si le calcul se fait mais en I1 de "Buffet"
                  Très étrange
                  0
                3. tu avais oublié de sélectionner la bonne feuille
                  0
                4. 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
                5. Selection.Offset(0, 4).Select
                  Selection.ClearContents

                  ça me sert à sélectionner la cellule où je souhaite y placer la formule dans "essai".
                  0
              3. 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
                1. merci
                  0