Ecrire une macro en relatif

Résolu
conseilVBA Messages postés 25 Statut Membre -  
conseilVBA Messages postés 25 Statut Membre -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  2. conseilVBA Messages postés 25 Statut Membre
     
    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!
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
    1. conseilVBA Messages postés 25 Statut Membre
       
      Merci c'est ce dont j'avais besoin!
      0