Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Convertion de formule en VBA

  • Initiateur de la discussion Initiateur de la discussion GADENSEB
  • 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 !

GADENSEB

XLDnaute Impliqué
Bonjour,
Je cherche à convertir 3 Formules en vba pour éviter des erreurs de saisie ou d’écrasement de formule.


A chaque fois je pars de la ligne 2 et la formule doit se recopier jusqu'a la derniére ligne remplis
Onglet "COMPTES"

Pour précision, l'insertion des données dans cet se fait via un usf.

Code:
Colonne G
=SI(F2="";"";GAUCHE($F2;CHERCHE(" - ";$F2)-1))

Colonne H

=SI(F2="";"";SI(ESTERREUR(CHERCHE(" - ";F2;CHERCHE(" - ";F2)+1));DROITE(F2;NBCAR(F2)-CHERCHE(" - ";F2)-2);DROITE(F2;NBCAR(F2)-CHERCHE(" - ";F2;CHERCHE(" - ";F2)+1)-2)))

Colonne K
=SI($B2>$S$1;"X";"")


Je verrais bien un
Code:
workbook_change ()
 With Sheets("COMPTE)
 Dim I, j As Integer

j = .Range("A1").End(xlDown).Row
For I = 2 To j
.Cells(I, "G") = XXXXXXXXXXXXXXXXXXXXX
.Cells(I, "H") = XXXXXXXXXXXXXXXXXXXXX
.Cells(I, "K") = XXXXXXXXXXXXXXXXXXXXX
Next
End with
end sub

Là c'est la premiére fois que je tente le truc.

Quelqu'un aurait une piste ?

Bonne aprem
Seb
 

Pièces jointes

Dernière édition:
Re : Convertion de formule en VBA

Hello,
Merci de ta réponse,
Je rentre de vacances et je me replonge dans cette question
j'essaye avec la colonne K ... et l'enregistreur de macro,

Code:
Colonne K
=SI($B2>$S$1;"X";"")

cela donne

Code:
Sub Macro1()
    ActiveCell.FormulaR1C1 = "=IF(R[1]C2>R1C19,""X"","""")"
End Sub


et du coup, est-ce que cela est correct ?
Code:
 PRIVATE SUB Formules ()
 With Sheets("COMPTE)
 Dim I, j As Integer

j = .Range("A1").End(xlDown).Row

For I = 2 To j
.Cells(I, "K").FormulaR1C1 = "=IF(R[1]C2>R1C19,""X"","""")"
Next
End with

end sub

Merki !!!

Bonne journée
 
Re : Convertion de formule en VBA

Bonjour,

et du coup, est-ce que cela est correct ?

le meilleur moyen de le savoir est de tester...

on pourrait optimiser ainsi :
Code:
Option Explicit
Sub test()
With Sheets("COMPTE")
    .Range("K1:K" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=IF(R[1]C2>R1C19,""X"","""")"
End With
End Sub

bonne journée
@+
 
Re : Convertion de formule en VBA

.... EFFECTIVEMENT....lol

Bon cela marche nikel ! merci

petite question :
Comme je remplie cet onglet via un usf comme faire pour que cette action de création de formule dans la colonne K (ou autre) s’exécute.

je me dis que cela serait bien de lancer la macro à la validation des données l'usf mais existe-t-il une manière plus efficace ?

Merci

seb
 
Re : Convertion de formule en VBA

Ok je me réexplique,
Je voudrais que cette macro (formules) intervienne au moment de la validation des données (sans cliquer sur un bouton)
--> du coup , appeler la macro (formules) juste avant que l'usf ne se ferme !

ou tout autre solution si elle est optimale

Suis-je plus clair ?
 
Re : Convertion de formule en VBA

Re,

mets le code dans cette procédure, ce dans le module de l'userform :

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'ton code
End Sub
 
Re : Convertion de formule en VBA

nikel,
par contre ce que je ne comprends pas c qu'il prend les lignes en décaler.
Je m'explique
dans la ligne 3 J'aurais du avoir "X" en K3 car B3 > S1 et là il me met un "X" en K2 ..... je vois pas ou est l'erreur dans

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
With Sheets("COMPTES")
    .Range("K1:K" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=IF(R[1]C2>R1C19,""X"","""")"
End With
End Sub

à moi de commencer en
Code:
k2:k&....

ya un truc que je pige pas ...
tu vois toi ??
 

Pièces jointes

Re : Convertion de formule en VBA

Re,

utilise l'nregistreur de macro et applique ensuite la même formule à la plage concernée... vois pas ta formule dans le fichier et pas trop le temps de chercher...
 
Re : Convertion de formule en VBA

effectivement cela a marché, merci

Le bon code est :
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
With Sheets("COMPTES")
    .Range("K2:K" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=IF(RC2>R1C19,""X"","""")"
End With
End Sub

allez je me lance pour les autres formules

bonne am

Seb
 
Re : Convertion de formule en VBA

Tout fonctionne avec ta méthode d'analyse mais j'ai une erreur sur :
Code:
    .Range("H2:H" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=IF(RC6]="""","""",IF(ISERROR(SEARCH("" - "",RC6,SEARCH("" - "",RC6)+1)),RIGHT(RC6,LEN(RC6)-SEARCH("" - "",RC6)-2),RIGHT(RC6,LEN(RC6)-SEARCH("" - "",RC6,SEARCH("" - "",RC6)+1)-2)))"

sachant que la formule originelle est :
Code:
=SI(F2="";"";SI(ESTERREUR(CHERCHE(" - ";F2;CHERCHE(" - ";F2)+1));DROITE(F2;NBCAR(F2)-CHERCHE(" - ";F2)-2);DROITE(F2;NBCAR(F2)-CHERCHE(" - ";F2;CHERCHE(" - ";F2)+1)-2)))


Ta une idée ?

Merci de ton aide ;-)

Bonne am
Seb
 
Dernière édition:
- 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
3
Affichages
147
Réponses
5
Affichages
675
Réponses
4
Affichages
528
Réponses
8
Affichages
634
Réponses
7
Affichages
288
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…