XL 2016 Retranscrire une formule conditionnelle en Vba

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 !

ReneDav14000

XLDnaute Occasionnel
Bonjour à tous,
J'ai cette formule de calcul en colonne G de mon tableau et elle doit s'appliquer à toutes la colonne G quel que soit le nombre de ligne. Comment dois-je procéder ? Je pense devoir la traduire en Anglais ?
Merci pour votre aide
VB:
=SI(ET(A7<>"";B7<>"");B7-A7;SI(ET(A7<>"";B7="";ET(C7<>"";D7=""));"";SI(ET(A7<>"";B7="";C7="";D7<>"");Max_Matin-A7;SI(ET(A7<>"";B7="";ET(E7<>"";F7<>""));"";SI(ET(A7<>"";B7="";C7="";D7="";E7="";F7<>"");Max_Matin-A7;"")))))
 
Solution
Bonjour René,
Je pense devoir la traduire en Anglais ?
Pas obligatoirement, vous pouvez utiliser FormulaLocal qui utilisera la syntaxe de votre excel.
Si la formule doit commencer en G7 et finir sur la dernière ligne occupée de la colonne A, vous pouvez faire :
VB:
Sub CopieFormule()
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row ' Si la colonne A à le maximum de ligne
    Range("G7:G" & DL).FormulaLocal = "=SI(ET(A7<>"""";B7<>"""");B7-A7;SI(ET(A7<>"""";B7="""";ET(C7<>"""";D7=""""));"""";SI(ET(A7<>"""";B7="""";C7="""";D7<>"""");Max_Matin-A7;SI(ET(A7<>"""";B7="""";ET(E7<>"""";F7<>""""));"""";SI(ET(A7<>"""";B7="""";C7="""";D7="""";E7="""";F7<>"""");Max_Matin-A7;"""")))))"
End Sub
Attention aux...
Bonjour René,
Je pense devoir la traduire en Anglais ?
Pas obligatoirement, vous pouvez utiliser FormulaLocal qui utilisera la syntaxe de votre excel.
Si la formule doit commencer en G7 et finir sur la dernière ligne occupée de la colonne A, vous pouvez faire :
VB:
Sub CopieFormule()
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row ' Si la colonne A à le maximum de ligne
    Range("G7:G" & DL).FormulaLocal = "=SI(ET(A7<>"""";B7<>"""");B7-A7;SI(ET(A7<>"""";B7="""";ET(C7<>"""";D7=""""));"""";SI(ET(A7<>"""";B7="""";C7="""";D7<>"""");Max_Matin-A7;SI(ET(A7<>"""";B7="""";ET(E7<>"""";F7<>""""));"""";SI(ET(A7<>"""";B7="""";C7="""";D7="""";E7="""";F7<>"""");Max_Matin-A7;"""")))))"
End Sub
Attention aux guillemets, c'est toujours la galère, pour 2 guillemets, il en faut 4, les deux extérieurs pour dire que c'est une chaine, les deux intérieur pour dire que la chaine est "".
 
elle doit s'appliquer à toutes la colonne G quel que soit le nombre de ligne.
Il faut bien calculer le nombre de lignes sur lesquelles mettre la formule.
C'est pour ça que j'ai précisé : ' Si la colonne A à le maximum de ligne
Donc DL = Range("A65500").End(xlUp).Row permet de calculer quelle est la dernière ligne de A occupée, et on propage la formule de G7 à Gxx , xx étant la valeur de DL.
 
Il faut bien calculer le nombre de lignes sur lesquelles mettre la formule.
C'est pour ça que j'ai précisé : ' Si la colonne A à le maximum de ligne
Donc DL = Range("A65500").End(xlUp).Row permet de calculer quelle est la dernière ligne de A occupée, et on propage la formule de G7 à Gxx , xx étant la valeur de DL.
D'accord, je comprends mieux.
Merci
Juste une dernière question, cette formule est-ce qu'il faut la mettre dans un module ou directement dans la feuille de calcul, dans Worksheet change ou autre ?
 
- 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
8
Affichages
99
Retour