macro pour ecrire formule

  • Initiateur de la discussion Initiateur de la discussion tactic6
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tactic6

XLDnaute Impliqué
Bonjour le forum et tous les autres

Supposons que j'ai un tableau sur une feuille excel
dans ce tableau il y a quelques lignes écrites

je voudrais créer une macro qui
Recherche de la dernière ligne de l'onglet à la colonne C qui contient une donnée et qui écrive dans les autres cellules vides jusqu'à la dernière ligne (C 52) la formule
Code:
FormulaLocal = "=SI(NON(ESTVIDE(BX));RECHERCHEV(BX;'liste des articles'!$A$2:$D$12000;2;FAUX);"")"
Où X est le numéro de la ligne

Merci pour vos éclaircissements
 
Re : macro pour ecrire formule

Bonjour


Si j'ai bien compris


Code:
Sub formules()
Dim formule$, fin&, i&
fin = 52
For i = 1 To fin
formule = "=SI(NON(ESTVIDE(B" & i & "));RECHERCHEV(B" & i & ";'liste des articles'!$A$2:$D$12000;2;FAUX);"""")"
Range("C" & i).FormulaLocal = formule
Next
End Sub

ou alors
Code:
Sub formules2()
Dim formule$, fin&, i&
fin = Sheets(1).Range("C65536").End(xlUp).Row
For i = 1 To fin
formule = "=SI(NON(ESTVIDE(B" & i & "));RECHERCHEV(B" & i & ";'liste des articles'!$A$2:$D$12000;2;FAUX);"""")"
Range("A" & i).FormulaLocal = formule
Next
End Sub
 
Dernière édition:
Re : macro pour ecrire formule

RE


Tu peux aussi faire plus simple

Code:
Sub formule3()
Range("A1:A" & [C65536].End(xlUp).Row).FormulaR1C1 = _
        "=IF(NOT(ISBLANK(RC[1])),VLOOKUP(RC[1],'liste des articles'!R2C1:R12000C4,2,FALSE),"""")"
end sub

et ci-dessous une version plus agréable à lire
Code:
Sub MacroConfortable()
' Macro1 Macro
' Macro enregistrée le 21/05/2009 par VBACrumble
Dim formule$, plage As Range

formule = _
        "=IF(NOT(ISBLANK(RC[1])),VLOOKUP(RC[1],'liste des articles'!" _
        & "R2C1:R12000C4,2,FALSE),"""")"
        
Set plage = Range("A1:A" & [C65536].End(xlUp).Row)

plage.FormulaR1C1 = formule
        
Set plage = Nothing
End Sub
 
Dernière édition:
Re : macro pour ecrire formule

RE
mais il y a toujours un mais 🙂
je cherche la derniere cellule C remplie pour y coller les formules
j'y ai rajouté ce bout de code
Code:
Set f2 = Sheets("SAISIE")
Derli = f2.Columns("C").Find("*", , , , , xlPrevious).Row
mais ça ne marche pas ça efface tout . pourquoi ?
 
Re : macro pour ecrire formule

Re
je crois que joindre un fichier explicite va être quasiment impossible
par contre ta macro fonctionne parfaitement si des références correspondant aux désignations sont saisies sur la feuille dans la colonne B
vois sur mon exemple une idée de mon fichier
ça ne te permettra pas de comprendre exactement ce que je veux exprimer mais sait on jamais
les commentaires sur le fonctionnement sont dans le module1
merci
 

Pièces jointes

Re : macro pour ecrire formule

Re


Cette ligne de macro suffit et fonctionne non ?

Code:
Range("C12:C39").FormulaR1C1 = _
        "=IF(NOT(ISBLANK(RC[1])),VLOOKUP(RC[1],'liste des articles'!R2C1:R12000C4,2,FALSE),"""")"

PS: Ton fichier est lié à un fichier articles.xls qui ne figure pas dans ton zip ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
248
Réponses
8
Affichages
690
Retour