Aide traduction formule Excel en VBA

Bonjour à tous,

comment traduiriez-vous la formule excel suivante en language vba ?

=SI(ESTNA(RECHERCHEV(Feuil1!A2;Feuil2!A:R;3;0));"";RECHERCHEV(Feuil1!A2;Feuil2!A:R;3;0))

Merci d'avance de votre aide

bonjour,

On l'écris où, ce résultat ?

Amicalement

Claude

dubois a écrit :

bonjour,

On l'écris où, ce résultat ?

Amicalement

Claude

Bonjour Claude,

En faite cette formule se situe actuellement dans une cellule D1 d'un onglet 3 "Annexe".

Et cette valeur est utilisé dans un code vba sous la forme suivante:

a = Feuil3.[d1]

If a = "" Then...

Cette formule revient plusieurs fois dans différente cellule de l'onglet "Annexe" pour des références différentes...

Mon fichier est devenu trop lourd donc trop lent. Je voudrais donc l'aléger par une intégration directe dans la macro.

a="SI(ESTNA(RECHERCHEV(Feuil1!A2;Feuil2!A:R;3;0));"";RECHERCHEV(Feuil1!A2;Feuil2!A:R;3;0))"

If a = "" Then...

re,

vois si tu peux adapter, çà pourrait être dans une boucle

Sub RechercheV()
Dim Lg%
    Lg = Sheets("Feuil2").Range("a65536").End(xlUp).Row
    Range("b2") = Application.VLookup(Range("a2"), Sheets("Feuil2").Range("a1:r" & Lg), 3, 0)
    'suite macro ...

    If IsError(Range("b2")) Then Range("b2") = ""
End Sub
dubois a écrit :

re,

vois si tu peux adapter, çà pourrait être dans une boucle

Sub RechercheV()
Dim Lg%
    Lg = Sheets("Feuil2").Range("a65536").End(xlUp).Row
    Range("b2") = Application.VLookup(Range("a2"), Sheets("Feuil2").Range("a1:r" & Lg), 3, 0)
    'suite macro ...

    If IsError(Range("b2")) Then Range("b2") = ""
End Sub

J'ai fais un fichier simplifié qui illustre les bases de mon fichier, afin que vous puissiez m'aider.

En faite:

Je rentre le numéro de dossier en C3 dans la feuil1

  • Si je clique sur "relance" cela agrémente la colonne D de la feuil2 en ajoutant sur la ligne correspondante au numéro de dossier, la date du jour (qui apparait sur la feuil1 B1)
  • Idem si je clique sur "clos" cela agrémente la colonne E de la feuil2.

En plus de cela, grace aux formules contenues dans l'onglet "Annexe":

  • si le numéro de dossier n'est pas dans la feuil2 alors MsgBox "N°dossier introuvable" quand on clique sur "relance" ou "clos"
  • si une date est déja contenu sur la ligne du n°dossier colonne D (feuil2) alors MsgBox "Dossier déja relancé" quand on clique sur "relance"
  • si une date est déja contenu sur la ligne du n°dossier colonne E (feuil2) alors MsgBox "Dossier déja clos" quand on clique sur "clos"

En faite le but de mon post est de faire la meme chose mais de pouvoir supprimer mon onglet "Annexe"

Bonjour

Un essai à ....essayer

Banzai64 a écrit :

Bonjour

Un essai à ....essayer

Merci banzai64, c'est top

par contre désolé mais je ne sais pas créer de zone nommée.... peux-tu m'aider

re,

Pas pratique d'entrer le N°Dossier !

tu aurais pu partir de la feuil2 avec un double clic sur le N°

au besoin, faire un filtre élaboré

Sub relance()
Dim Lg%, x%
    With Sheets("Feuil2")
        On Error Resume Next
        x = Application.Match(Range("c3"), .Range("a:a"), 0)
        On Error GoTo 0
        If x = 0 Then MsgBox ("Numéro de Fiche introuvable !"): GoTo Fin

            If .Cells(x, "d") > 0 Then
                MsgBox ("Dossier déjà relancé !")
            Else
                .Cells(x, "d") = Date
            End If
    End With
Fin: Range("c3").ClearContents
End Sub
Sub clore()
Dim Lg%, x%
    With Sheets("Feuil2")
        On Error Resume Next
        x = Application.Match(Range("c3"), .Range("a:a"), 0)
        On Error GoTo 0
        If x = 0 Then MsgBox ("Numéro de Fiche introuvable !"): GoTo Fin

            If .Cells(x, "e") > 0 Then
                MsgBox ("Dossier déjà clos !")
            Else
                .Cells(x, "e") = Date
            End If
    End With
Fin: Range("c3").ClearContents
End Sub

Amicalement

Claude

édit: j'ai meme pas vu passé Banzai !

Bonjour

Bonjour Claude

Quelques éléments de réponse

Rechercher des sujets similaires à "aide traduction formule vba"