Insertion formule variable

Bonjour à tous,

Je fais une nouvelle fois appel à votre aide.

Le problème est simple, je dois insérer dans une cellule une formule.

J'ai fait quelques tests et je sais déjà qu'il y a une bidouille avec .FormulaLocal ou .Formula suivant la langue de ma formule à insérer mais déjà à ce niveau je bloque...

    DernLigne = Range("C" & Rows.Count).End(xlUp).Row
    Range("M85").FormulaR1C1 = "=SOMME(SI(FREQUENCE(EQUIV(D9:D&DernLigne;D9:D&DernLigne;0);EQUIV(D9:D&DernLigne;D9:D&DernLigne;0))>0;1))"

De plus, comme vous le voyez sur ce code, ma formule est variable en fonction de la dernière ligne de la colonne C.

Je ne pense pas que ce problème est très difficile pour vous mais j'ai déjà fait pas mal de recherche sur internet et je n'ai pas trouvé mon bonheur...

En vous remerciant d'avance pour l'aide que vous pourrez m'apporter.

Cordialement,

Julien.

Bonjour

Pour avoir la bonne syntaxe, tu devrais enregistrer ta formule

* tu cliques sur une cellule de ta feuille de calcul où elle se trouve et fonctionne bien

* tu déclenches l'enregistrement des macros

* tu cliques dans la barre des formules, sur ta feuille de calcul

* tu valides

* tu arrêtes l'enregistrement

* tu vas voir ce que tu as enregistré sur la feuille VBA et tu adaptes en introduisant tes variables.

Bye !

Bonjour gmb,

Merci pour ta réponse rapide.

J'ai fait comme tu m'as demandé et j'obtiens ceci :

ActiveCell.FormulaR1C1 = _
        "=SUM(IF(FREQUENCY(MATCH(R[-16]C[-9]:R[-1]C[-9],R[-16]C[-9]:R[-1]C[-9],0),MATCH(R[-16]C[-9]:R[-1]C[-9],R[-16]C[-9]:R[-1]C[-9],0))>0,1))"

Par contre, pour l'adapter je ne vois pas du tout comment faire... Mais alors pas du tout

En espérant qu'il est possible de m'aide...

Cordialement,

Julien.

Quelle était la cellule dans laquelle tu as enregistré ta formule ?

Il s'agissait de la cellule M33.

J'ai bien compris comment fonctionnait les formules, mais je ne sais pas comment insérer ma variable DernLigne...

Dans l'idéal, ma formule, j'en aurais besoin en M85, et la première cellule du range serait D9.

Donc pour le début, j'aurais un truc du genre :

"=SUM(IF(FREQUENCY(MATCH(R[-76]C[-9]

et c'est là que je bloque pour insérer ma variable...

Merci encore de ton aide.

Un essai.

Tu peux tester en faisant varier derLn puis

• Tu lances la macro

• Tu sélectionnes la cellule M86

• Tu cliques sur la barre de formules

Et la plage prise en compte apparaît.

Cela te convient-il ?

Bye !

15classeur1-v1.xlsm (15.14 Ko)

J'ai essayé ta macro gmb, c'est tout à fait ce qu'il me faut mais pas moyen d'arriver à la mettre dans mon code...

J'ai aucune erreur, mais rien ne se passe...

Sub macro1()
    Sheets("Réalisation serrurerie").Activate
    derLn = Range("D" & Rows.Count).End(xlUp).Row
    Range("M89") = "=SUM(IF(FREQUENCY(MATCH(R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],0),MATCH(R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],0))>0,1))"
End Sub

Pourrais-tu m'aider s'il te plait...

Cordialement,

Julien.

Julien_DBS a écrit :

Pourrais-tu m'aider

J'essaierais volontiers mais il me faudrait ton fichier pour aller plus loin;

Modifie les données sensibles s'il y en a et joins-le...

Bye !

bonjour

et ,si simplement tu nommais ta plage en dynamique avec qque chose du genre decaler(d$6;;;nbval(d:d)) ou alors decaler (d$6;;;equiv(9^9;D:D) ;enfin tout procédé permettant de cibler une plage (meme si ily a des trous)

ensuite tu reprends le nom dans la formule ou autre

cordialement

Bonjour Tulipe

Ouh la la ! Je sens que tu vas nous sortir un petit bijou de formule dont tu as le secret !

Je suis impatient de la suite !

Bye !

Merci Tulipe,merci gmb,

Je teste ça demain au boulot, et si jamais ce n'est pas fructueux je joindrais mon fichier

Cordialement,

Julien.

Bonjour Messieurs,

Merci une nouvelle fois de l'aide que vous me donnez.

J'ai testé en nommant la plage mais cela n'allait pas fonctionner car je viens coller des données après avoir besoin de cette formule.

Je suis donc reparti de l'idée de gmb et j'ai trouvé la solution.

Je mets le code au cas où quelqu'un aurait un problème similaire.

Dim derLn As Long
Sheets("Réalisation serrurerie").Activate
    derLn = ActiveSheet.Range("D65535").End(xlUp).Row
    ActiveSheet.Range("M89") = "=SUM(IF(FREQUENCY(MATCH(R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],0),MATCH(R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],R[-80]C[-9]:R[" & derLn - 89 & "]C[-9],0))>0,1))"
    

Merci à vous deux pour votre aide, et merci à ceux qui ont peut être essayé mais ne sont pas manifestés ici.

Cordialement,

Julien.

Rechercher des sujets similaires à "insertion formule variable"