Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

retranscrire une formule excel à multiconditions (4 "si") en vba

8 réponses
Avatar
jiffey
Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))

Comme l'enregistreur de macro n'arrivait pas à enregistrer cette formule
(j'imagine trop longue), j'ai essayé de la retranscrire moi-même en vba :

"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"


Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver au même
résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur au
maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je dois aller
faire une recherchev dans tel ou tel onglet : si valeur est dans Cn, je dois
aller dans l'onglet "DO1", si dans Dn => onglet "DO2".... si dans Gn =>
onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF

8 réponses

Avatar
MichDenis
Sub test()

Dim F As String
F = "=IF(C5="""",IF(D5="""",IF(E5="""",IF(F5=""""," & _
"VLOOKUP(G5,livré!A:B,2,FALSE),VLOOKUP(F5,'DO4'!A:B,2,FALSE))," & _
"VLOOKUP(E5,'DO3'!A:B,2,FALSE)),VLOOKUP(D5,'DO2'!A:B,2,FALSE))" & _
",VLOOKUP(C5,'DO1'!A:B,2,FALSE))"
'La cellule de ton choix pour retourner la formule
Range("A10").Formula = F

End Sub




"jiffey" a écrit dans le message de news:

Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))

Comme l'enregistreur de macro n'arrivait pas à enregistrer cette formule
(j'imagine trop longue), j'ai essayé de la retranscrire moi-même en vba :

"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"


Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver au même
résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur au
maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je dois aller
faire une recherchev dans tel ou tel onglet : si valeur est dans Cn, je dois
aller dans l'onglet "DO1", si dans Dn => onglet "DO2".... si dans Gn =>
onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF
Avatar
isabelle
bonjour Jf,

est ce que le but est de transposer la formule dans une cellule ou bien seulement récuperer le résultat de cette formule ?

isabelle

Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))

Comme l'enregistreur de macro n'arrivait pas à enregistrer cette formule
(j'imagine trop longue), j'ai essayé de la retranscrire moi-même en vba :

"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"


Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver au même
résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur au
maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je dois aller
faire une recherchev dans tel ou tel onglet : si valeur est dans Cn, je dois
aller dans l'onglet "DO1", si dans Dn => onglet "DO2".... si dans Gn =>
onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF


Avatar
jiffey
Bonjour Isabelle,

Clairement, le but est de récupérer le résultat de cette formule. Je n'ai
trouvé que cela comme solution, mais peut-être (sans doute) y en a-t-il une
autre plus simple et je suis bien évidemment preneur.


bonjour Jf,

est ce que le but est de transposer la formule dans une cellule ou bien seulement récuperer le résultat de cette formule ?

isabelle

Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))

Comme l'enregistreur de macro n'arrivait pas à enregistrer cette formule
(j'imagine trop longue), j'ai essayé de la retranscrire moi-même en vba :

"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"


Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver au même
résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur au
maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je dois aller
faire une recherchev dans tel ou tel onglet : si valeur est dans Cn, je dois
aller dans l'onglet "DO1", si dans Dn => onglet "DO2".... si dans Gn =>
onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF





Avatar
MichDenis
Si tu veux afficher le résultat dans la fenêtre VBA

Msgbox Evaluate(F)


"MichDenis" a écrit dans le message de news:

Sub test()

Dim F As String
F = "=IF(C5="""",IF(D5="""",IF(E5="""",IF(F5=""""," & _
"VLOOKUP(G5,livré!A:B,2,FALSE),VLOOKUP(F5,'DO4'!A:B,2,FALSE))," & _
"VLOOKUP(E5,'DO3'!A:B,2,FALSE)),VLOOKUP(D5,'DO2'!A:B,2,FALSE))" & _
",VLOOKUP(C5,'DO1'!A:B,2,FALSE))"
'La cellule de ton choix pour retourner la formule
Range("A10").Formula = F

End Sub




"jiffey" a écrit dans le message de news:

Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))

Comme l'enregistreur de macro n'arrivait pas à enregistrer cette formule
(j'imagine trop longue), j'ai essayé de la retranscrire moi-même en vba :

"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"


Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver au même
résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur au
maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je dois aller
faire une recherchev dans tel ou tel onglet : si valeur est dans Cn, je dois
aller dans l'onglet "DO1", si dans Dn => onglet "DO2".... si dans Gn =>
onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF
Avatar
jiffey
Bonjour Mich,

Merci beaucoup !! ca marche et c'est surtout beaucoup plus simple que les
(R-10], etc. Je croyais que ca ne marchais pas qd on mettait directement les
cellules concernées...

En revanche, quelle est l'utilisation de Dim F As String ?


Slts

JF


Si tu veux afficher le résultat dans la fenêtre VBA

Msgbox Evaluate(F)


"MichDenis" a écrit dans le message de news:

Sub test()

Dim F As String
F = "=IF(C5="""",IF(D5="""",IF(E5="""",IF(F5=""""," & _
"VLOOKUP(G5,livré!A:B,2,FALSE),VLOOKUP(F5,'DO4'!A:B,2,FALSE))," & _
"VLOOKUP(E5,'DO3'!A:B,2,FALSE)),VLOOKUP(D5,'DO2'!A:B,2,FALSE))" & _
",VLOOKUP(C5,'DO1'!A:B,2,FALSE))"
'La cellule de ton choix pour retourner la formule
Range("A10").Formula = F

End Sub




"jiffey" a écrit dans le message de news:

Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))

Comme l'enregistreur de macro n'arrivait pas à enregistrer cette formule
(j'imagine trop longue), j'ai essayé de la retranscrire moi-même en vba :

"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"


Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver au même
résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur au
maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je dois aller
faire une recherchev dans tel ou tel onglet : si valeur est dans Cn, je dois
aller dans l'onglet "DO1", si dans Dn => onglet "DO2".... si dans Gn =>
onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF






Avatar
isabelle
re bonjour Jf,

est ce que dans la plage C5:F5 les cellules sont vraiment "vide"
ou bien y a t'il des formules pouvant retourner la valeur texte "" ?

isabelle


Bonjour Isabelle,

Clairement, le but est de récupérer le résultat de cette formule. Je n'ai
trouvé que cela comme solution, mais peut-être (sans doute) y en a-t-il une
autre plus simple et je suis bien évidemment preneur.



bonjour Jf,

est ce que le but est de transposer la formule dans une cellule ou bien seulement récuperer le résultat de cette formule ?

isabelle


Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))

Comme l'enregistreur de macro n'arrivait pas à enregistrer cette formule
(j'imagine trop longue), j'ai essayé de la retranscrire moi-même en vba :

"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"


Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver au même
résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur au
maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je dois aller
faire une recherchev dans tel ou tel onglet : si valeur est dans Cn, je dois
aller dans l'onglet "DO1", si dans Dn => onglet "DO2".... si dans Gn =>
onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF







Avatar
MichDenis
| En revanche, quelle est l'utilisation de Dim F As String ?

C'est simplement une variable qui contient la chaîne de caractères
de ta formule.
Avatar
isabelle
un autre méthode si la plage C5:F5 sont vraiment "vide":

Sub Macro1()
For Each c In [C5:F5]
If c <> Empty Then
P = Application.VLookup(Cells(5, X), Sheets("DO1").Range("A:B"), 2, False)
Exit Sub
End If
Next
P = Application.VLookup(Cells(5, 7), Sheets("DO1").Range("A:B"), 2, False)
End Sub

isabelle

re bonjour Jf,

est ce que dans la plage C5:F5 les cellules sont vraiment "vide"
ou bien y a t'il des formules pouvant retourner la valeur texte "" ?

isabelle


Bonjour Isabelle,

Clairement, le but est de récupérer le résultat de cette formule. Je
n'ai trouvé que cela comme solution, mais peut-être (sans doute) y en
a-t-il une autre plus simple et je suis bien évidemment preneur.



bonjour Jf,

est ce que le but est de transposer la formule dans une cellule ou
bien seulement récuperer le résultat de cette formule ?

isabelle


Bonjour à tous,

J'aimerais enregistrer en VBA la formule équivalente à :

=SI(C5="";SI(D5="";SI(E5="";SI(F5="";RECHERCHEV(G5;livré!A:B;2;FAUX);RECHERCHEV(F5;'DO4'!A:B;2;FAUX));RECHERCHEV(E5;'DO3'!A:B;2;FAUX));RECHERCHEV(D5;'DO2'!A:B;2;FAUX));RECHERCHEV(C5;'DO1'!A:B;2;FAUX))


Comme l'enregistreur de macro n'arrivait pas à enregistrer cette
formule (j'imagine trop longue), j'ai essayé de la retranscrire
moi-même en vba :
"=IF(RC[-12]="""",IF(RC[-11]="""",IF(RC[-10]="""",IF(RC[-9]="""",VLOOKUP(RC[-8]="""",livré!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-9]="""",DO4!C[-14]:C[-13],2,FALSE),VLOOKUP(RC[-10]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-11]="""",livré!C[-14]:C[-13],2,FALSE)),VLOOKUP(RC[-12]="""",livré!C[-14]:C[-13],2,FALSE))"



Mais ca ne marche toujours pas... :((

Me serais-je trompé ? Ou alors cette formule est-elle impossible à
transcrire en VBA car trop longue ?

Dans ce cas, y aurait-il une alternative à ma formule pour arriver
au même résultat :

En résumé, voici ce que je souhaite : j'ai entre Cn et Gn une valeur
au maximum et en fonction de son emplacement (soit Cn, Dn... Gn), je
dois aller faire une recherchev dans tel ou tel onglet : si valeur
est dans Cn, je dois aller dans l'onglet "DO1", si dans Dn => onglet
"DO2".... si dans Gn => onglet "livrés".


MERCI BEAUCOUP D'AVANCE !!!!

Slts

JF