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

Le
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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4534101
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"
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
isabelle
Le #4534091
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


jiffey
Le #4534071
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





MichDenis
Le #4534041
Si tu veux afficher le résultat dans la fenêtre VBA

Msgbox Evaluate(F)


"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"
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
jiffey
Le #4534021
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"
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"
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






isabelle
Le #4534011
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







MichDenis
Le #4533891
| 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.
isabelle
Le #4533881
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










Publicité
Poster une réponse
Anonyme