Taille de formule limitée en VBA?

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

Re : Taille de formule limitée en VBA?

Bonjour Olivm 🙂,
Quand tu veux écrire sur 2 lignes en VBA, il faut couper ta chaine et ajouter " _" à la fin de la première ligne 🙄...
Code:
    Selection.FormulaArray = "=SUM(IF(LEFT(TEXT(R5C2:R10000C2,""00000""),2)&R5C4:R10000C4=MID(RC[-1],FIND(""("",RC[-1])+1,2)&""FRA"",1))"
est équivalent à
Code:
    Selection.FormulaArray = _
        "=SUM(IF(LEFT(TEXT(R5C2:R10000C2,""00000""),2)&R5C4:R10000C4" & _
        "=MID(RC[-1],FIND(""("",RC[-1])+1,2)&""FRA"",1))"
Bonne journée 😎
 
Re : Taille de formule limitée en VBA?

Bonjour JNP,

J'ai essayé votre astuce.
Malheureusement, j'ai toujours du texte en rouge.

code initial:
Sub Macro5()
'
' Macro5 Macro
'

'
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]=R[-1]C[-1],"""",IF(AND(RC[-1]=R[7]C[-1],RC[-1]=R[6]C[-1],RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[7]C[-6])+(1/R[6]C[-6])+(1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[6]C[-1],RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[6]C[-6])+(1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(R[3]C[-1]=RC[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(RC[-1]=R[
1]C[-1],1/((1/R[1]C[-6])+(1/RC[-6])),RC[-6]))))))))"
End Sub

Code essayé après avoir lu votre astuce :
Sub Macro5()
'
' Macro5 Macro
'

'
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]=R[-1]C[-1],"""",IF(AND(RC[-1]=R[7]C[-1],RC[-1]=R[6]C[-1],RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[7]C[-6])+(1/R[6]C[-6])+(1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[6]C[-1],RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[6]C[-6])+(1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(R[3]C[-1]=RC[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6]))," & _
"= IF(AND(RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(RC[-1]=R[ & _
" = 1]C[-1],1/((1/R[1]C[-6])+(1/RC[-6])),RC[-6]))))))))"
Range("N8").Select
End Sub


Message = erreur de compilation, attendu fin d'instruction...

Où est le problème?
 
Re : Taille de formule limitée en VBA?

Re 🙂,
Y manquait une double cote 🙄...
Personnelemnt, je ferais plutôt ça
Code:
ActiveCell.FormulaR1C1 = _
    "=IF(RC[-1]=R[-1]C[-1],"""",IF(AND(RC[-1]=R[7]C[-1],RC[-1]=R[6]C[-1],RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]" & _
    "=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[7]C[-6])+(1/R[6]C[-6])+(1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]" & _
    "C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[6]C[-1],RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]" & _
    "=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[6]C[-6])+(1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])" & _
    "+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[5]C[-1],RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/" & _
    "((1/R[5]C[-6])+(1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(RC[-1]=R[4]C[-1],RC[-1]=R[3]C[-1],RC[-1]" & _
    "=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[4]C[-6])+(1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(AND(R[3]C[-1]=RC[-1],RC[-1]=" & _
    "R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[3]C[-6])+(1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6]))," & _
    "= IF(AND(RC[-1]=R[2]C[-1],RC[-1]=R[1]C[-1]),1/((1/R[2]C[-6])+(1/R[1]C[-6])+(1/RC[-6])),IF(RC[-1]=R[" & _
    " = 1]C[-1],1/((1/R[1]C[-6])+(1/RC[-6])),RC[-6]))))))))"
mais même si c'est plus en rouge, je suis sceptique sur le fait que ça fonctionne ensuite 😛...
Y a pas moyen de simplifier ta formule de base 😕 ?
Bon courage 😎
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
2
Affichages
157
Retour