OVH Cloud OVH Cloud

Fonction personnalisées

3 réponses
Avatar
Marc Tousignant
Bonjour à tous,

J'ai découvert qu'il était possible de faire des fonctions en VBA et de les
affectés à une/des cellules. J'ai très bien réussi sauf que, lorsque j'entre
de nouvelles données, la cellules ne se recalcule pas et j'aimerais savoir
pourquoi.

Plus concrètement, j'ai un classeur dans le quel j'ai 3 pages identique
pour entrer les données. Dans chacune des pages, j'ai une cellule qui
indique "Page x de y". Je veux que, lorsque des données sont entrées sur la
page 2 ou 3 que mon y change automatiquement. J'ai créé la fonction
ci-dessous et je l'ai affecter à mes cellules (Ex. 'Page
1'!AC7=GetNombrePage(1)). Lorsque je fais enter, il indique "Page 1 de 1"
ce qui est super. Le problème est que si j'entre des données sur les page 2
et 3, la fct n'est pas actualiser.

Savez-vous pourquoi et, surtout, comment faire pour régler la situation?

Merci

Marc T.

Fonction:
----------------------------------------------------------------------------
-
Public Function getNombrePage(Optional intNoPage As Integer) As String
Dim strRetour As String
Application.EnableEvents = False

If Imprimer_Page3 Then
strRetour = "Page " & intNoPage & " de 3"
Else
If Imprimer_Page2 Then
strRetour = "Page " & intNoPage & " de 2"
Else
strRetour = "Page " & intNoPage & " de 1"
End If
End If

getNombrePage = strRetour
Application.EnableEvents = True
End Function

3 réponses

Avatar
Philippe.R
Bonsoir,
Essaie comme ceci :

Public Function getNombrePage(Optional intNoPage As Integer) As String
Dim strRetour As String
application.volatile
Application.EnableEvents = False

If Imprimer_Page3 Then
strRetour = "Page " & intNoPage & " de 3"
Else
If Imprimer_Page2 Then
strRetour = "Page " & intNoPage & " de 2"
Else
strRetour = "Page " & intNoPage & " de 1"
End If
End If

getNombrePage = strRetour
Application.EnableEvents = True
End Function

--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Marc Tousignant" a écrit dans le message de news:

Bonjour à tous,

J'ai découvert qu'il était possible de faire des fonctions en VBA et de les
affectés à une/des cellules. J'ai très bien réussi sauf que, lorsque j'entre
de nouvelles données, la cellules ne se recalcule pas et j'aimerais savoir
pourquoi.

Plus concrètement, j'ai un classeur dans le quel j'ai 3 pages identique
pour entrer les données. Dans chacune des pages, j'ai une cellule qui
indique "Page x de y". Je veux que, lorsque des données sont entrées sur la
page 2 ou 3 que mon y change automatiquement. J'ai créé la fonction
ci-dessous et je l'ai affecter à mes cellules (Ex. 'Page
1'!AC7=GetNombrePage(1)). Lorsque je fais enter, il indique "Page 1 de 1"
ce qui est super. Le problème est que si j'entre des données sur les page 2
et 3, la fct n'est pas actualiser.

Savez-vous pourquoi et, surtout, comment faire pour régler la situation?

Merci

Marc T.

Fonction:
----------------------------------------------------------------------------
-
Public Function getNombrePage(Optional intNoPage As Integer) As String
Dim strRetour As String
Application.EnableEvents = False

If Imprimer_Page3 Then
strRetour = "Page " & intNoPage & " de 3"
Else
If Imprimer_Page2 Then
strRetour = "Page " & intNoPage & " de 2"
Else
strRetour = "Page " & intNoPage & " de 1"
End If
End If

getNombrePage = strRetour
Application.EnableEvents = True
End Function




Avatar
Marc Tousignant
Merci, le résultat est concluant sauf que j'ai beaucoup de code dans mes
évènements worksheet_Change() et je tombe dans une boucle infinie lorsque la
fonction est volatile. Je ne sais pas pourquoi ni comment régler la
situation.

Avez-vous des idées...


"Philippe.R" a écrit dans le message de
news:
Bonsoir,
Essaie comme ceci :

Public Function getNombrePage(Optional intNoPage As Integer) As String
Dim strRetour As String
application.volatile
Application.EnableEvents = False

If Imprimer_Page3 Then
strRetour = "Page " & intNoPage & " de 3"
Else
If Imprimer_Page2 Then
strRetour = "Page " & intNoPage & " de 2"
Else
strRetour = "Page " & intNoPage & " de 1"
End If
End If

getNombrePage = strRetour
Application.EnableEvents = True
End Function

--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Marc Tousignant" a écrit dans le message de
news:


Bonjour à tous,

J'ai découvert qu'il était possible de faire des fonctions en VBA et de
les


affectés à une/des cellules. J'ai très bien réussi sauf que, lorsque
j'entre


de nouvelles données, la cellules ne se recalcule pas et j'aimerais
savoir


pourquoi.

Plus concrètement, j'ai un classeur dans le quel j'ai 3 pages identique
pour entrer les données. Dans chacune des pages, j'ai une cellule qui
indique "Page x de y". Je veux que, lorsque des données sont entrées
sur la


page 2 ou 3 que mon y change automatiquement. J'ai créé la fonction
ci-dessous et je l'ai affecter à mes cellules (Ex. 'Page
1'!AC7=GetNombrePage(1)). Lorsque je fais enter, il indique "Page 1 de
1"


ce qui est super. Le problème est que si j'entre des données sur les
page 2


et 3, la fct n'est pas actualiser.

Savez-vous pourquoi et, surtout, comment faire pour régler la situation?

Merci

Marc T.

Fonction:


--------------------------------------------------------------------------
--

-
Public Function getNombrePage(Optional intNoPage As Integer) As String
Dim strRetour As String
Application.EnableEvents = False

If Imprimer_Page3 Then
strRetour = "Page " & intNoPage & " de 3"
Else
If Imprimer_Page2 Then
strRetour = "Page " & intNoPage & " de 2"
Else
strRetour = "Page " & intNoPage & " de 1"
End If
End If

getNombrePage = strRetour
Application.EnableEvents = True
End Function







Avatar
Alain CROS
Bonjour.

Si les feuilles de saisie sont les feuilles d'index 1 à 3 et la zone de saisie sur chaque feuille, la plage B2:D4.

Dans un module standard:

Public Function GetNbPage$()
Dim I&
Application.Volatile
For I = 3& To 1& Step -1&
If Application.Evaluate("CountA(" & Worksheets(I).Name & "!B2:D4)") <> 0& Then
If ActiveSheet.Index <= I Then
GetNbPage = "Page " & ActiveSheet.Index & " de " & I
End If
Exit Function
End If
Next
End Function

Dans le module Thisworkbook

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.Calculate
End Sub

Alain CROS

"Marc Tousignant" a écrit dans le message de news:
Bonjour à tous,

J'ai découvert qu'il était possible de faire des fonctions en VBA et de les
affectés à une/des cellules. J'ai très bien réussi sauf que, lorsque j'entre
de nouvelles données, la cellules ne se recalcule pas et j'aimerais savoir
pourquoi.

Plus concrètement, j'ai un classeur dans le quel j'ai 3 pages identique
pour entrer les données. Dans chacune des pages, j'ai une cellule qui
indique "Page x de y". Je veux que, lorsque des données sont entrées sur la
page 2 ou 3 que mon y change automatiquement. J'ai créé la fonction
ci-dessous et je l'ai affecter à mes cellules (Ex. 'Page
1'!AC7=GetNombrePage(1)). Lorsque je fais enter, il indique "Page 1 de 1"
ce qui est super. Le problème est que si j'entre des données sur les page 2
et 3, la fct n'est pas actualiser.

Savez-vous pourquoi et, surtout, comment faire pour régler la situation?

Merci

Marc T.

Fonction:
----------------------------------------------------------------------------
-
Public Function getNombrePage(Optional intNoPage As Integer) As String
Dim strRetour As String
Application.EnableEvents = False

If Imprimer_Page3 Then
strRetour = "Page " & intNoPage & " de 3"
Else
If Imprimer_Page2 Then
strRetour = "Page " & intNoPage & " de 2"
Else
strRetour = "Page " & intNoPage & " de 1"
End If
End If

getNombrePage = strRetour
Application.EnableEvents = True
End Function