Dysfonctionnement bouton pour appliquer une formule

Bonjour,

J'aimerais appliquer une formule en appuyant sur un bouton, mais j'ai quelques dysfonctionnements, pouvez-vous me dépanner ?

Ce que j'aimerais que la macro fasse :

  • Se mettre en K8
  • Ecrire cette formule =SIERREUR(SI(K$6<$I8;0;INDEX('ZMD47-1'!$B$3:$I$150;EQUIV(Besoins!$E8;'ZMD47-'!$A$3:$A$150;0);EQUIV(Besoins!K$5;'ZMD47-1'!$B$1:$I$1;0)));"Saisie")
  • L'étirer à droite jusque R8, et en bas jusque R75
  • Appliquer la mise en forme bordure intérieures et extérieures + grosses bordures pour l'extérieur

Du coup n'étant pas experte j'ai bidouillé avec les enregistrements auto et internet ce qui m'a donné le code :

(je ne sais plus trop comment je fais fais, mais il me semble avoir copier/coller ma formule à partir d'une cellule --> problème : quand la macro est appliquée, le contenu de cette dite cellule s'affiche... pas terrible)

Sub test()

    Application.CutCopyMode = False
    Range("B3").Select
    ActiveCell.FormulaR1C1 = _
        "'=SIERREUR(SI(K$6<$I8;0;INDEX('ZMD47-1'!$B$3:$I$150;EQUIV(Besoins!$E8;'ZMD47-1'!$A$3:$A$150;0);EQUIV(Besoins!K$5;'ZMD47-1'!$B$1:$I$1;0)));""Saisie"")"
    Range("K8").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(IF(R6C<RC9,0,INDEX('ZMD47-1'!R3C2:R150C9,MATCH(Besoins!RC5,'ZMD47-1'!R3C1:R150C1,0),MATCH(Besoins!R5C,'ZMD47-1'!R1C2:R1C9,0))),""Saisie"")"
    Range("K8").Select
    Selection.AutoFill Destination:=Range("K8:R8"), Type:=xlFillValue
    Range("K8:R8").Select
    Selection.AutoFill Destination:=Range("K8:R75"), Type:=xlFillValue
    Range("K8:R75").Select
    ActiveWindow.SmallScroll Down:=-51

     Range("K8:R75").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter

    End With

End Sub

Bonjour,

Lorsque vous écrivez dans la propriété .FormulaR1C1, il y a quelques contraintes à respecter :

  • Utiliser la syntaxe anglaise des formules
  • Séparer les arguments par une "," et non ";"
  • Faire références aux cellules et aux plages avec le numéro de ligne et de colonne. Ainsi, $A$1 s'écrit R1C1, et A1 (référence relative) s'écrit R[-1]C[-1] si l'on se trouve en B2.

Vous pouvez utiliser l'enregistreur de macro pour obtenir des exemples de syntaxe.

Il existe aussi d'autres propriétés telles que .Formula et .FormulaLocal

La 2ème formule a par exemple une syntaxe qui semble correcte, par contre la première non. D'autant plus que vous l'avez précédée d'une apostrophe qui la transformera au final en texte et non en formule.

Aide si besoin : https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.formular1c1

Autre point : dans la majorité des cas, .Select est inutile, exemple :

Range("K8:R8").Select
    Selection.AutoFill Destination:=Range("K8:R75"), Type:=xlFillValue
'Devient : 
Range("K8:R8").AutoFill Destination:=Range("K8:R75"), Type:=xlFillValue

Bonjour,

Merci pour la réponse. Par contre, il je ne comprends toujours pas pouquoi la partie

ActiveCell.FormulaR1C1 = _
        "=IFERROR(IF(R6C<RC9,0,INDEX('ZMD47-1'!R3C2:R150C9,MATCH(Besoins!RC5,'ZMD47-1'!R3C1:R150C1,0),MATCH(Besoins!R5C,'ZMD47-1'!R1C2:R1C9,0))),""Saisie"")"

ne fonctionne pas car c'est ce qui s'est écrit quand j'ai fait l'enregistrement automatique...

En gros j'ai :

Cliqué sur ma cellule B3 pour sélectionner la formule que j'avais écrite en français avant pour ne pas l'oublier et j'ai copié la formule

Après je l'ai collée en K8 puis étirée.

Rechercher des sujets similaires à "dysfonctionnement bouton appliquer formule"