VBA - Conditions SI en récupérant une cellule de l'onglet précédent

Bonjour,

Je cherche à ajouter une condition SI à une formule RECHERCHEV : je souhaite que si une case de l'onglet précédent est vide, j'affiche "Pas de commentaire".

Voici mon code:

Sub test()

Dim sht As Worksheet, rng As Range, vide As Range
Set sht = Worksheets(ActiveSheet.Index - 1)
Set rng = sht.Range("E4:P500")
Set vide = sht.Cells(Irow, 13)

ActiveSheet.Range("L4").Formula = "=IF("vide.Address=(external:=True)="";"pas de commentaire";VLOOKUP(E4," & rng.Address(external:=True) & ",9,FALSE)"

End Sub

Je pense que le souci vient de ma variable nommée "vide".

Merci par avance !

Bonjour,

Je crois que j'aurais plutôt essayé ainsi : (non testé et non affirmatif ^^)

déclarer vide comme string, et mettre le .address au moment du set

Sub test()

Dim sht As Worksheet, rng As Range, vide As string
Set sht = Worksheets(ActiveSheet.Index - 1)
Set rng = sht.Range("E4:P500")
Set vide = sht.Cells(Irow, 13).address

ActiveSheet.Range("L4").Formula = "=IF(vide ="";"pas de commentaire";VLOOKUP(E4," & rng.Address(external:=True) & ",9,FALSE)"

End Sub

Merci pour votre réponse !

Malheureusement le code ne marche pas, j'ai une erreur de compilation sur la ligne

Set vide = sht.Cells(Irow, 13).Address

qui me marque "objet requis"...

Merci d'avance

Et en enlevant le "set : =" ?

Erreur d'objet ou argument...

Erreur d'argument ou d'appel de procédure*

Sans voir sur le fichier et bidouiller dessus, je ne maîtrise pas assez pour te répondre alors :(

Bonjour,

Merci d'avoir pris le temps de m'aider ! A la place de créer une condition SI qui vient me chercher des informations sur une cellule de l'onglet précédent, je suis passé par une boucle. Mon code est donc :

Sub test()

'RechercheV Anciennes cellules

Dim sht As Worksheet, rng As Range
Set sht = Worksheets(ActiveSheet.Index - 1)
Set rng = sht.Range("E4:P500")

ActiveSheet.Range("L4").Formula = "=VLOOKUP(E4," & rng.Address(external:=True) & ",9,FALSE)"

'enlever les 0

For i = 4 To 500
    If ActiveSheet.Cells(i, 12) = "0" Then
            ActiveSheet.Range("L" & i) = ""
    End If
Next i

End Sub

Si cela peut aider quelqu'un

Cordialement

Rechercher des sujets similaires à "vba conditions recuperant onglet precedent"