Problème formule sous VBA

Bonjour,

J'ai cette formule qui fonctionne

=NB.SI.ENS(AJ10:ACL10;"P";$AJ$5:$ACL$5;"<=" & PARAMETRES!D5)

PARAMETRES!D5 = 31/12/2020

Quand j'essaie de la passer sous vba la valeur dans la cellule est "FAUX" plutot que la formule.

NumColonne = Sheets("PLANNING").Cells(5, 33).End(xlToRight).Column
DerDate = Sheets("PARAMETRES").Range("D5").Value
"=NB.SI.ENS(AJ10:" & NoCol & "10;""P"";$AJ$5:$" & NoCol & "$5;" <= "" & DerDate & ")"

Sauriez-vous pourquoi ?

Merci

Bonjour,

L'éditeur VBA est en anglais, il faut que tu utilises COUNTIFS qui est l'équivalent de NB.SI.ENS

Bon courage !

Bonjour Ergotamine,

Sheets("PLANNING").Range("AE10").FormulaLocal = "=NB.SI.ENS(AJ10:" & NoCol & "10;""P"";$AJ$5:$" & NoCol & "$5;" <= "" & DerDate & ")"

Avec .FormulaLocal , pas besoin.

Désolé de pas l'avoir dit plus tôt.

Cordialement,

Bonjour toutes et tous

un doute pas fortiche en formule mais en vba NB.SI pout COUNTIF et NB.SI.ENS pour COUNTIFS

=COUNTIFS....

Après aucune idée mettre FormulaLocal

Un truc mais fichtre, j'tente, j'n'sais pas

Sauvegarder avant !!!

Sheets("PLANNING").Range("AE10").FormulaLocal = "=COUNTIFS(AJ10:" & NoCol & "10;""P"";$AJ$5:$" & NoCol & "$5;" <= "" & DerDate & ")"

Edit: oupss pas vu merci Benoist et Ergotamine

crdlt,

André

Bonjour,

encore une fois, avec formulalocal c'est selon, donc ici en Français

Benoist a raison

Bonjour Andreé13,

Le problème est le même avec COUNTIFS.

Cordialement,

Pourquoi ne pas passer par l'enregistreur de macro

Cela donne ceci (en Anglais car fomulaR1C1)

    ActiveCell.FormulaR1C1 = _
        "=COUNTIFS(R[6]C[33]:R[6]C[763],""P"",R5C36:R5C766,""<="" & PARAMETRES!R[1]C[1])"

tout dépend quand même de la cellule cible

Merci Steelson mais y a t'il moyen de faire en formula normal ?

Cordialement,

Pas de soucis, mais tu parles de

  • parfois NumColonne et parfois de NoCol
  • et surtout il faut transformer NumColonne en ABC ... ou bien d'utiliser un DECALER dans lequel on pourra mettre une valeur numérique

Dans ta proposition tu y es presque, remplace NoCol par LettresColonne(NoCol)

Function LettresColonne(NoCol)
    LettresColonne = Split(Cells(1, NoCol).Address, "$")(1)
End Function

Tu as raison, désolé j'avais copié la mauvaise ligne.

Tablo = Cells(1, Cells(4, Rows(4).Cells.Count).End(xlToLeft).Column).Address
NoCol = Split(Tablo, "$")(1)

Il me semble qu'il te manque des guillemets aussi

;""<="""

C'est ce que je pensais mais si je rajoute des guillemets a ce niveau j'obtiens une erreur.

Je verrais plutôt ceci ...

.FormulaLocal = "=NB.SI.ENS(AJ10:" & NoCol & "10;""P"";$AJ$5:$" & NoCol & "$5;""<="" & " & DerDate & ")"

Il devait manquer aussi une esperluette !

Si je fais ceci cela fonctionne

Sub test()

NoCol = "ACL"
DerDate = Sheets("PARAMETRES").Range("D5").Value

ActiveCell.FormulaLocal = _
"=NB.SI.ENS(AJ10:" & NoCol & "10;""P"";$AJ$5:$" & NoCol & "$5;""<="" & " & 1*DerDate & ")"

End Sub

Autre version

Sub test()

NoCol = "ACL"
DerDate = Sheets("PARAMETRES").Range("D5").Value

ActiveCell.FormulaLocal = _
"=NB.SI.ENS(AJ10:" & NoCol & "10;""P"";$AJ$5:$" & NoCol & "$5;""<="" & PARAMETRES!D5)"

End Sub

Je pense qu'il faut que tu laisses la fin sans changement pour avoir les évolutions éventuelles de PARAMETRES!D5 dans la formule.

Un grand merci Steelson, ça fonctionne parfaitement .

Rechercher des sujets similaires à "probleme formule vba"