Ecrire une macro en relatif

Résolu
Bonjour,

je souhaiterais écrire une macro qui prenne pour base la cellule excel ou j'écrirai cette macro.

Function pression(P)

If Not IsEmpty(P) Then
pression = P * Range("c4")
End If

End Function

En fait il faudrait que je remplace range c4 par un pas de 2 lignes mais je n'arrive pas à l'écrire correctement.

merci pour votre aide.

3 réponses

  1. bonsoir,
    1. je ne sais pas si je comprends bien le pb, mais pour récupérer l'adresse relative d'un cellule par rapport à une autre, tu utilises Offset(ligne,colonne)
    ex Range("C4").Offset(2,1) est l'adresse de D6
    2. si ce n'est pas ça, il faudrait que tu précises comment tu comptes utiliser cette fonction au niveau de la feuille
    par exemple si B4 = pression(???) , qui est ???
    bonne suite
    1. Bonjour,
      Merci pour les infos!
      Oui c'est à peu près ce que je veux faire mis à part que j'aimerai ne pas intégrer de nom de cellule dans ma macro et que la cellule de référence soit celle ou j'écris la fonction dans excel...mais je ne sais pas si c'est possible!
      1. re

        1. dans ce code de la fonction pression
        Function pression(P)
        If Not IsEmpty(P) Then
          pression = P * Range("c4")
        End If
        End Function

        p peut etre la valeur d'une cellule, mais pas de la cellule où tu utilises cette fonction (référence circulaire)
        ex A4 = pression(A4) ne va pas fonctionner
        par contre A4 = pression(A3) va fonctionner

        2. si tu veux que le décalage se fasse par rapport à la cellule active (celle ou la formule est utilisée) voila comment il faut l'écrire
        Function pression(p)
          If p <> "" Then
            pression = p * ActiveCell.Offset(2, 1)
          Else
          
          End If
        End Function

        avec la même remarque qu'au 1
        ex. si tu as 7 en A3 et 5 en B6
        A4 = pression(A3) donnera 7*5 = 35 comme résultat

        RQ. je mettrai quelque chose dans le 'sinon'

        bonne suite
        1. Merci c'est ce dont j'avais besoin!