Erreur de macro

Bonjour et bonne année à vous.

Je rencontre un soucis lorsque je lance deux macro.

J'ai une liste de valeur en colonne A et je voudrais que lorsque je clique sur la colonne L et M, j'obtienne dans la première colonne le résultat de la formule en macro et dans la deuxième le terme "In progress" mais cela m'affiche une erreur.

Voici mes macro ainsi que mon fichier :

Sub Action()
Dim n%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("L2:L10").Resize(n - 1).Value = "=IF(RC[4]="""",""Remove"",IF(RC[5]="""",""Add"",IF(AND(RC[4]<>"""",RC[5]<>""""),""Update"")))"""
    End With
End Sub

Sub Result()
    Dim n%, Plg As Range
    With ActiveSheet
        n = .Cells(.Rows.Count, 2).End(xlUp).Row
        Set Plg = .Range("M2:M" & n)
        With .Range("M2:M")
            .Value = "In progress"
            .AutoFill Plg
        End With
    End With
End Sub

Merci d'avance.

Obeïda

2fichier-test.xlsm (19.02 Ko)

Bonjour et bonne année à toi

1) quand tu veux inscrire une formule, tu ne dois pas utiliser la propriété ".Value", mais ".Formula"

2) Ton Excel est en anglais ? Si ce n'est pas le cas, tu dois changer tes IF en SI

3) Tes conditions doivent être séparés par des point-virgules

4) Tu as 2 guillemets en trop à la fin de ta formule

.Range("L2:L10").Resize(n - 1).Formula = "=IF(RC[4]="""";""Remove"";IF(RC[5]="""";""Add"";IF(AND(RC[4]<>"""";RC[5]<>"""");""Update"")))"

A+

Merci pour ta réponse mais malgrè le changement apporté, j'ai encore le même message d'erreur.

Re,

Essaye peut-être avec

.Range("L2:L" & n - 1).FormulaR1C1

A+

Pareil

capture1

Re,

Ce que je te demandais au début, c'est si tu avais un Excel Anglais, apparemment non

Donc les RC dans ta formule ne sont pas bon.

Le plus simple est de recréer ta formule dans la cellule et de la copier/coller tel quel dans VBA en ajoutant les guillemets nécessaires

Il te faudra utiliser également "FormulaLocal" en propriété

A+

Merci, j'ai enregistré à nouveau la macro et cela remarche. Par contre j'ai une petite question :

- Ici ma macro fonctionne jusqu'à la ligne 10. Mais comment faire pour que la macro aille jusqu'à la fin et ce de manière automatique (que j'ai 10 ou 150 lignes) ?

Salut,

Tu as la solution dans ton premier code avec "n"

Salut merci de ta réponse.

Du coup ma macro est la suivante :

Sub Action()

    Range("L2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[4]="""",""Remove"",IF(RC[5]="""",""Add"",IF(AND(RC[4]<>"""",RC[5]<>""""),""Update"")))"

End Sub

La ligne :

n = .Cells(.Rows.Count, 1).End(xlUp).Row

doit-elle être ajouté à quel endroit ?

Merci

Salut Obeida,

Je viens de prendre le temps de regarder tout ça

Alors RESIZE() fonctionne si tu mets bien 2 valeurs (ligne,colonne) >0

Voici ton code de début modifié avec ta formule, j'ai également changé le nom de ta variable qu'il faut définir en long

Sub Action()
  Dim NbLig As Long
    With ActiveSheet
      NbLig = .Cells(.Rows.Count, 1).End(xlUp).Row
      .Range("L2").Resize(NbLig - 1, 1).Value = "=IF(RC[4]="""",""Remove"",IF(RC[5]="""",""Add"",IF(AND(RC[4]<>"""",RC[5]<>""""),""Update"")))"
    End With
End Sub

A+

Merci Bruno,

Je vais pouvoir appliquer ton bout de code à mes macro maintenant

Bonne journée

Rechercher des sujets similaires à "erreur macro"