Ecrire une formule dans une cellule en VBA
Salut, bienvenue sur le forum
Alors sans les références aux colonnes et aux lignes, la seule chose qu'on peut te filer ces comment procéder pour que tu l'adapte à ton fichier.
Et donc, pour écrire une formule dans une cellule :
Cells(1, 1).FormulaR1C1 = "=maformule"Je te conseil te faire une boucle For pour procéder en une seule fois sur toute tes lignes
BONJOUR
MERCI POUR TON AIDE
CONCERNANT LES COLONNES ET LIGNES IL S'AGIT DE LA COLONNE A LIGNES DE A8 à A17 POUR LA FORMULE "+SI(ESTNA(RECHERCHEV(D8;Bases!$B$2:$F$370;5;0));"";RECHERCHEV(D8;Bases!$B$2:$F$370;5;0))"
ET LA COLONNE D POUR LES DONNÉES ÉGALEMENT DE D8 A D17.
JE PRECISE QUE LES LIGNES A8 à A17 DOIVENT ABSOLUMENT RESTER VIERGES S'IL N'Y A PAS DE DONNÉES DANS LA COLONNE D
ENCORE MERCI
Bonjour,
Ecrire une formule dans une cellule en vba
Parce que lorsqu'on place une formule c'est normalement une opération que l'on ne fait qu'une fois.
Parce que conditionner l'existence ou non de la formule à un test sur l'existence de valeur dans une cellule n'est rien d'autre qu'une condition qui peut fort bien être incluse dans la formule.
Parce qu'il nettement plus facile et plus rapide d'insérer une formule manuellement que d'utiliser VBA pour cela.
L'utilité de VBA en la matière est généralement d'opérer le calcul et affecter le résultat, lorsque l'on veut éviter de mettre une formule...
Je n'apporte donc en principe pas ma contribution sur ce genre de projet improductif...
On y voit seulement que tu ne formules guère avec beaucoup de brio !
Une formule débutant par un "+" : Excel va automatiquement transformer en "=+". Je ne sais très bien pourquoi mais les formules débutant ainsi ont le don de m'énerver...
La composition de la formule, doublonnée pour tester la valeur renvoyée, se concevait jusqu'à Excel 2003, mais depuis Excel 2007, la fonction SIERREUR permet de l'éviter.
Et une formule, telle :
=SIERREUR(SI(D8<>"";RECHERCHEV(D8;Bases!$B$2:$F$370;5;0);"");"")remplira les fonctions recherchées sans mobiliser inutilement VBA.
Cordialement.
edit : Ton dernier post confirme que tu devrais améliorer sensiblement ta dextérité au clavier, afin d'éviter de rester bloqué fort mal à propos en majuscules !
Au cas où tu l'ignorerais, écrire un texte en majuscules sur le Net signifie que tu le hurles ! Il serait bien de te calmer...
bonjour
ce n'était pas mon intention de hurler en écrivant en majuscule je l'ai fait sans arrière pensée comme tu le supposes et en aucun moment je ne t'ai demandé de me juger sur mon inexpérience
mon problème a été résolu et je te donne la solution au cas ou....
Sub test()
Dim C As Range
For Each C In [A8:A17]
If C.Offset(, 3) <> "" Then
C.FormulaLocal = "=SI(ESTNA(RECHERCHEV(D" & C.Row & ";Bases!B2:F370;5;0));"""";RECHERCHEV(D" & _
C.Row & ";Bases!B2:F370;5;0))"
End If
Next C
End Sub
merci quand même
Donc en plus tu multipostes !
Je n'ai nul besoin de solution en la matière mais je la trouverais plutôt mal écrite et peu performante, mais peu importe...
Je ne jugeais nullement ton inexpérience mais tentais de te faire comprendre quelques éléments du fonctionnement d'Excel et de VBA, pour le cas où tu voudrais ne pas t'y cantonner
