Ecrire une macro en relatif

Résolu
conseilVBA Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
conseilVBA Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

3 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
conseilVBA Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
conseilVBA Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
Merci c'est ce dont j'avais besoin!
0