Dans chacune des feuilles, j'utilise dans plusieurs cellules une
fonction perso qui fonctionne ;-)))
Le probl=E8me est que d=E8s que je change de feuille, les cellules de
cette feuille contenant cette fonction affichent #N/A et celles de la
pr=E9c=E9dente restent correctes.
Si je force le recalcul, avec [F9] ou en modifiant quelque cellule que
ce soit, les choses s'inversent :
les r=E9sultats deviennent corrects et ce sont les cellules de la
feuille pr=E9c=E9dente qui affichent #N/A :-(((
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
Publie ici ta fonction personnelle.
"LeGoldo" a écrit dans le message de news:
Bonjour et BoNne AnNéE à tous !
J'ai un classeur excel 2000 avec 3 feuilles.
Dans chacune des feuilles, j'utilise dans plusieurs cellules une fonction perso qui fonctionne ;-)))
Le problème est que dès que je change de feuille, les cellules de cette feuille contenant cette fonction affichent #N/A et celles de la précédente restent correctes.
Si je force le recalcul, avec [F9] ou en modifiant quelque cellule que ce soit, les choses s'inversent : les résultats deviennent corrects et ce sont les cellules de la feuille précédente qui affichent #N/A :-(((
Qu'est-ce donc que ce binzzz ???
Merci de vos éclaircissements et ...
... à vous lire !
Cordialement,
LeGoldo
Publie ici ta fonction personnelle.
"LeGoldo" <le.goldo@wanadoo.fr> a écrit dans le message de news:
1167749233.669265.120680@48g2000cwx.googlegroups.com...
Bonjour et BoNne AnNéE à tous !
J'ai un classeur excel 2000 avec 3 feuilles.
Dans chacune des feuilles, j'utilise dans plusieurs cellules une
fonction perso qui fonctionne ;-)))
Le problème est que dès que je change de feuille, les cellules de
cette feuille contenant cette fonction affichent #N/A et celles de la
précédente restent correctes.
Si je force le recalcul, avec [F9] ou en modifiant quelque cellule que
ce soit, les choses s'inversent :
les résultats deviennent corrects et ce sont les cellules de la
feuille précédente qui affichent #N/A :-(((
Dans chacune des feuilles, j'utilise dans plusieurs cellules une fonction perso qui fonctionne ;-)))
Le problème est que dès que je change de feuille, les cellules de cette feuille contenant cette fonction affichent #N/A et celles de la précédente restent correctes.
Si je force le recalcul, avec [F9] ou en modifiant quelque cellule que ce soit, les choses s'inversent : les résultats deviennent corrects et ce sont les cellules de la feuille précédente qui affichent #N/A :-(((
Qu'est-ce donc que ce binzzz ???
Merci de vos éclaircissements et ...
... à vous lire !
Cordialement,
LeGoldo
LeGoldo
Bonsoir,
Publie ici ta fonction personnelle.
Aussitot fait : **** Option Explicit
Function RangAbsolu(nVal As Variant, oPlage As Range, Optional lAscending As Boolean = True) Dim c As Integer, v_() As Variant, oArea As Range
Application.Volatile (True) ReDim v_(1 To oPlage.Areas.Count) c = 1 For Each oArea In oPlage.Areas v_(c) = Abs(oArea.Item(1).Value) c = c + 1 Next
L'appel de fonction est : =RANGABSOLU(C20;$C20;$G20;$K20;$O20;...;$AM20;$AQ20;$AU20);1)
Nota : si je remplace Application.match(...) par Application.WorksheetFunction.match(...), les #N/A se transforment en #VALEUR !?!?
MichDenis
Si le problème de ta fonction se résume à l'utilisation de WorksheetFunction... cette situation est amplement commentée et bien connue....quand tu utilises la fonction Match tu dois employer cette syntaxe : Application.Match() l'usage de WorksheetFunction rendant le résultat aléatoire.
"LeGoldo" a écrit dans le message de news:
Bonsoir,
Publie ici ta fonction personnelle.
Aussitot fait : **** Option Explicit
Function RangAbsolu(nVal As Variant, oPlage As Range, Optional lAscending As Boolean = True) Dim c As Integer, v_() As Variant, oArea As Range
Application.Volatile (True) ReDim v_(1 To oPlage.Areas.Count) c = 1 For Each oArea In oPlage.Areas v_(c) = Abs(oArea.Item(1).Value) c = c + 1 Next
L'appel de fonction est : =RANGABSOLU(C20;$C20;$G20;$K20;$O20;...;$AM20;$AQ20;$AU20);1)
Nota : si je remplace Application.match(...) par Application.WorksheetFunction.match(...), les #N/A se transforment en #VALEUR !?!?
Si le problème de ta fonction se résume à l'utilisation de WorksheetFunction...
cette situation est amplement commentée et bien connue....quand tu utilises
la fonction Match tu dois employer cette syntaxe : Application.Match()
l'usage de WorksheetFunction rendant le résultat aléatoire.
"LeGoldo" <le.goldo@wanadoo.fr> a écrit dans le message de news:
1167763504.711646.66650@48g2000cwx.googlegroups.com...
Bonsoir,
Publie ici ta fonction personnelle.
Aussitot fait :
****
Option Explicit
Function RangAbsolu(nVal As Variant, oPlage As Range, Optional
lAscending As Boolean = True)
Dim c As Integer, v_() As Variant, oArea As Range
Application.Volatile (True)
ReDim v_(1 To oPlage.Areas.Count)
c = 1
For Each oArea In oPlage.Areas
v_(c) = Abs(oArea.Item(1).Value)
c = c + 1
Next
Si le problème de ta fonction se résume à l'utilisation de WorksheetFunction... cette situation est amplement commentée et bien connue....quand tu utilises la fonction Match tu dois employer cette syntaxe : Application.Match() l'usage de WorksheetFunction rendant le résultat aléatoire.
"LeGoldo" a écrit dans le message de news:
Bonsoir,
Publie ici ta fonction personnelle.
Aussitot fait : **** Option Explicit
Function RangAbsolu(nVal As Variant, oPlage As Range, Optional lAscending As Boolean = True) Dim c As Integer, v_() As Variant, oArea As Range
Application.Volatile (True) ReDim v_(1 To oPlage.Areas.Count) c = 1 For Each oArea In oPlage.Areas v_(c) = Abs(oArea.Item(1).Value) c = c + 1 Next
Comme je l'ai dit dans mon 'Nota', c'est accessoire ;-)))
Le problème persiste au changement de feuille :-(((
Une autre idée ?
Cordialement,
LeGoldo
MichDenis
As-tu essayé ceci :
Function RangAbsolu(nVal As Variant, oPlage As Range, Optional _ lAscending As Boolean = True) Dim c As Integer, v_() As Variant, oArea As Range
Application.Volatile (True) ReDim v_(1 To oPlage.Areas.Count) c = 1 With Worksheets(oPlage.Parent.Name) For Each oArea In .Areas v_(c) = Abs(oArea.Item(1).Value) c = c + 1 Next End With
Comme je l'ai dit dans mon 'Nota', c'est accessoire ;-)))
Le problème persiste au changement de feuille :-(((
Une autre idée ?
Cordialement,
LeGoldo
As-tu essayé ceci :
Function RangAbsolu(nVal As Variant, oPlage As Range, Optional _
lAscending As Boolean = True)
Dim c As Integer, v_() As Variant, oArea As Range
Application.Volatile (True)
ReDim v_(1 To oPlage.Areas.Count)
c = 1
With Worksheets(oPlage.Parent.Name)
For Each oArea In .Areas
v_(c) = Abs(oArea.Item(1).Value)
c = c + 1
Next
End With
Function RangAbsolu(nVal As Variant, oPlage As Range, Optional _ lAscending As Boolean = True) Dim c As Integer, v_() As Variant, oArea As Range
Application.Volatile (True) ReDim v_(1 To oPlage.Areas.Count) c = 1 With Worksheets(oPlage.Parent.Name) For Each oArea In .Areas v_(c) = Abs(oArea.Item(1).Value) c = c + 1 Next End With
Comme je l'ai dit dans mon 'Nota', c'est accessoire ;-)))
Le problème persiste au changement de feuille :-(((
Une autre idée ?
Cordialement,
LeGoldo
LeGoldo
Bonjour,
J'ai réécrit ma fonction : **** Function RangAbsolu2(nVal As Variant, oPlage As Range, Optional lAscending As Boolean = True, Optional nOffset As Integer = 1) As Variant Dim c As Integer, i As Integer, v_() As Variant, oRge As Range
Application.Volatile (True) ReDim v_(1 To oPlage.Cells.Count) c = 0 i = 1 For Each oRge In oPlage.Cells If i = 1 Or (i Mod nOffset) = 1 Then c = c + 1 v_(c) = Abs(oRge.Value) End If i = i + 1 Next ReDim Preserve v_(1 To c)
End Function **** ... qui utilise une plage standard (cellDébut:cellFin) et ça garde les résultats au changement de feuille ;-)))
Mais j'aimerais bien savoir pourquoi une plage discontinue (cell1;cell2;...;cellN) pose problème alors que la fonction originale ( Rang(val;(plage discontinue);1) ) cela ne se produit pas !
il faut noter que dans les 2 cas, si je clique sur "=", la zone 'plage' m'affiche #VALEUR. Est-ce à croire que les plages discontinues sont mal supportées/gérées :-(((
Cordialement,
LeGoldo
Bonjour,
J'ai réécrit ma fonction :
****
Function RangAbsolu2(nVal As Variant, oPlage As Range, Optional
lAscending As Boolean = True, Optional nOffset As Integer = 1) As
Variant
Dim c As Integer, i As Integer, v_() As Variant, oRge As Range
Application.Volatile (True)
ReDim v_(1 To oPlage.Cells.Count)
c = 0
i = 1
For Each oRge In oPlage.Cells
If i = 1 Or (i Mod nOffset) = 1 Then
c = c + 1
v_(c) = Abs(oRge.Value)
End If
i = i + 1
Next
ReDim Preserve v_(1 To c)
End Function
****
... qui utilise une plage standard (cellDébut:cellFin) et ça garde
les résultats au changement de feuille ;-)))
Mais j'aimerais bien savoir pourquoi une plage discontinue
(cell1;cell2;...;cellN) pose problème alors que la fonction originale
( Rang(val;(plage discontinue);1) ) cela ne se produit pas !
il faut noter que dans les 2 cas, si je clique sur "=", la zone 'plage'
m'affiche #VALEUR.
Est-ce à croire que les plages discontinues sont mal
supportées/gérées :-(((
J'ai réécrit ma fonction : **** Function RangAbsolu2(nVal As Variant, oPlage As Range, Optional lAscending As Boolean = True, Optional nOffset As Integer = 1) As Variant Dim c As Integer, i As Integer, v_() As Variant, oRge As Range
Application.Volatile (True) ReDim v_(1 To oPlage.Cells.Count) c = 0 i = 1 For Each oRge In oPlage.Cells If i = 1 Or (i Mod nOffset) = 1 Then c = c + 1 v_(c) = Abs(oRge.Value) End If i = i + 1 Next ReDim Preserve v_(1 To c)
End Function **** ... qui utilise une plage standard (cellDébut:cellFin) et ça garde les résultats au changement de feuille ;-)))
Mais j'aimerais bien savoir pourquoi une plage discontinue (cell1;cell2;...;cellN) pose problème alors que la fonction originale ( Rang(val;(plage discontinue);1) ) cela ne se produit pas !
il faut noter que dans les 2 cas, si je clique sur "=", la zone 'plage' m'affiche #VALEUR. Est-ce à croire que les plages discontinues sont mal supportées/gérées :-(((