Syntaxe sur formule VBA

j'aimerais additionner le contenu d'une cellule (ici R[-1]C13) avec le nbre de cellule non vide qu'il y a a cote. Il semblerait que ma syntaxe n'est pas bonne.

Merci d'avance

Range("M2:M" & Z).Formula = "=R[-1]C13+COUNTA(R[-1]C14:R[-1]C17)"

Salut le forum

Tu ne peux pas additionner une cellule avec sa propre valeur, cela génère une référence circulaire.

Mytå

Bonjour

Désolé mais je vois pas de référence circulaire avec ta formule

Dans excel cela donne (Formule en M2)

=$M1+NBVAL($N1:$Q1)

Tu récupères la valeur au dessus plus de nombre de cellules situées à côté de la valeur récupérée

Ou alors j'ai raté un épisode

Salut Banzai, tu as bien saisi ce que je veux! Mais lorsque je veux appliquer ca en VBA, il semble que j'ai un erreur de syntaxe. Si j'ai bien compris, en VBA je dois mettre COUNTA au lieu de NBVAL.

Range("M2:M" & Z).Formula = "=R[-1]C13+COUNTA(R[-1]C14:R[-1]C17)"

Bonjour

J'ai essayé ta formule et pas de soucis particulier

COUNTA remplace bien NBVAL

En VBA les formules sont en anglais

j'ai isole ma formule de la macro et ca fonctionne. J'ai remarque que les cellules qui contiennent la formule sont en mode texte, alors je suppose qu'il faudrait rajouter une ligne VBA juste avant la ligne de la formule pour remettre ces cellules dans le mode standart., Quel serait le code a rajouter.

 Sub Macro3()
  Z = Range("T65536").End(xlUp).Row

    'application d'un filtre automatic pour mettre "loc" en ordre numerique.
    Selection.AutoFilter
    Range("L2:U" & Z).Select
     Selection.Sort Key1:=Range("L2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Selection.AutoFilter

    'Range("M2:M" & Z).Formula = "=REPT(0,4-LEN(Dec2Hex(COUNTA(R2C14:R[-1]C17))))&Dec2Hex(COUNTA(R2C14:R[-1]C17))"
  'En francais: Range("U2").Formula = "=REPT(0;4-NBCAR(Dec2Hex(NBVAL(L2C23:L(-1)C26))))&Dec2Hex(NBVAL(L2C23:L(-1)C26))"

Range("M2:M" & Z).Formula = "= COUNTA(R[-1]C14:R[-1]C17)"

    Application.CutCopyMode = False

End Sub

oups, il y avait une formule mis en commentaire, je te renvoi la nouvelle macro

Sub Macro3()
  Z = Range("T65536").End(xlUp).Row

    'application d'un filtre automatic pour mettre "loc" en ordre numerique.
   Selection.AutoFilter
    Range("L2:U" & Z).Select
     Selection.Sort Key1:=Range("L2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Selection.AutoFilter

    Range("M2:M" & Z).Formula = "=REPT(0,4-LEN(Dec2Hex(COUNTA(R2C14:R[-1]C17))))&Dec2Hex(COUNTA(R2C14:R[-1]C17))"

Range("M2:M" & Z).Formula = "= COUNTA(R[-1]C14:R[-1]C17)"

    Application.CutCopyMode = False

End Sub

Bonjour

Avec le fichier cela serait plus facile (pour moi) à comprendre le problème

Actuellement je pratique la nage coulée

A te lire

la nage coulee... lol!

Je sais que ca ne doit pas toujours etre evident d'aider. Lorsque tu m'as dit que la formule etait bonne, ca m'a mis sur une piste: mes cellules se remettait dans le format texte juste avant d'appliquer la formule. J'ai donc rajouter une ligne VBA qui met ces lignes en format general.

merci et passe de belles fetes!

Rechercher des sujets similaires à "syntaxe formule vba"