• Initiateur de la discussion Initiateur de la discussion Jiheme
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jiheme

XLDnaute Accro
Bonjour le Forum

Je cherche à créer une fonction VBA qui irait chercher la valeur de la cellule A1 de la feuille précédente si >0 et si bien sur on est pas sur la première feuille du classeur.

J'ai écrit ce qui suit mais sans résultat !!! comme d'hab...


Code:
Function RepCell(x As Integer)
x = Worksheets.Index
If Worksheets(x - 1).Cells(1, 1) > 0 Then Worksheets(x).Cells(1, 2) = Worksheets(x - 1).Cells(1, 1)
End Function

D'une manière + générale, quelqu'un aurait-il un tuto sur les fonctions VBA.

Merci et bon dimanche
A+
 
Dernière édition:
Re : fonction VBA

Bonjour jeheme,

2 remarques sur votre code :

1) Une fonction est faite pour renvoyer une valeur, pas pour entrer une valeur dans une cellule. Ou alors utilisez une procédure Sub.

2) Surtout vous indiquez (dans la parenthèse) que cette fonction a un argument x (qui lui est donc transmis) et vous le recalculez immédiatement...

Je pense que vous recherchez en fait le code suivant :

Code:
Function RepCell()
Dim x%
RepCell = "" 'ou ce que vous voulez
x = ActiveSheet.Index
If x > 1 Then RepCell = Sheets(x - 1).Cells(1, 1)
End Function

Si vous utilisez cette fonction dans VBA, elle est donc destinée à être appelée par une autre macro, par exemple :

Code:
Sub VotreMacro()
'-----------
Cells(1, 2) = RepCell() 'entre la valeur de la fonction dans la feuille active
'-----------
End Sub

Vous pouvez aussi l'entrer dans n'importe quelle cellule d'une feuille de calcul en écrivant :

=RepCell()

A+
 
Re : fonction VBA

Bonjour Job, re à tous

Je ne comprends pas à quoi sert cette ligne :

RepCell = "" 'ou ce que vous voulez

d'ailleurs si je la mets en commentaire, cela fonctionne quand même.
Un autre petit soucis, si je rajoute une feuille identique à la fin de mon classeur, toutes les cellules contenant cette fonction se remettent à 0, il faut recliquer dedans pour refaire le calcul.

Mais j'ai quand même progressé, Merci
A+
 
Re : fonction VBA

Re,

Code:
RepCell = "" 'ou ce que vous voulez

est écrit pour la 1ère feuille. La fonction renvoie ainsi le texte vide "" au lieu de 0.

Je n'était pas sûr que vous entriez cette fonction dans une feuille de calcul. En 2ème ligne, introduire :

Code:
Application.Volatile

La fonction est toujours recalculée quand on appuie sur F9.

A+
 
Re : fonction VBA

Re,

Par rapport à ce que vous semblez vouloir faire, voici une procédure qui paraît mieux adaptée qu'une fonction :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
On Error Resume Next
Sheets(Sh.Index + 1).Range("B1") = Target
End Sub

La macro est à placer dans ThisWorkbook. Elle se déclanche quand on modifie la cellule A1 d'une feuille et renseigne la cellule B1 de la feuille suivante.

Sûrement mieux encore, une macro qui se déclanche quand on active une feuille :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
Range("B1") = Sheets(Sh.Index - 1).Range("A1")
End Sub

Toujours dans ThisWorkbook.

A+
 
Dernière édition:
Re : fonction VBA

Bonjour Job, le forum

J'ai testé la macro ci dessous ça marche, mais et je n'en avais pas parlé avant car je pensais y arriver seul, je voudrais que cela fonctionne uniquement à partir de la 4ème feuille, qu'elle soit ajoutée ou inserrée.


Sûrement mieux encore, une macro qui se déclanche quand on active une feuille :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
Range("B1") = Sheets(Sh.Index - 1).Range("A1")
End Sub

A+
J'ai modifié ton code comme ceci :
Code:
If Sheets(Sh.Index) > 3 Then Range("M41") = Sheets(Sh.Index - 1).Range("F49")

Mais sans résultat.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
284
Réponses
5
Affichages
926
Réponses
1
Affichages
326
Retour