Erreur #valeur! par endroit en appliquant une formule
19 réponses
Phenix21
Bonjour,
Dans mon code VBA, j'appelle une fonction numeropage() de Laurent
Longre.
Jusque ce matin tout marchait bien, il affichait les num=E9ros de pages.
Et puis depuis ce matin et une de mes manips (je ne l'ai fait
num=E9roter que les cellules qui m'int=E9resse, je gagnais du temps), la
formule s'applique bien sur les premi=E8res valeurs, puis m'affiche
#valeur!, puis refonctionne sur les derni=E8res valeurs.
Lorsque le d=E9roulement de ma macro est termin=E9, j'ai laiss=E9 les
formules dans les cases. En faisant un double clic sur les #valeur!,
certaines cellules se recalculent, d'autres continuent d'afficher
#valeur!.
Toutes les cellules ont le m=EAme format, je comprends pas... Est-ce un
probl=E8me de recalcul automatique ? Quelqu'un a-t-il une solution ?
Dans mon code VBA, j'appelle une fonction numeropage() de Laurent Longre.
Jusque ce matin tout marchait bien, il affichait les numéros de pages. Et puis depuis ce matin et une de mes manips (je ne l'ai fait numéroter que les cellules qui m'intéresse, je gagnais du temps), la formule s'applique bien sur les premières valeurs, puis m'affiche #valeur!, puis refonctionne sur les dernières valeurs. Lorsque le déroulement de ma macro est terminé, j'ai laissé les formules dans les cases. En faisant un double clic sur les #valeur!, certaines cellules se recalculent, d'autres continuent d'afficher #valeur!.
Toutes les cellules ont le même format, je comprends pas... Est-ce un problème de recalcul automatique ? Quelqu'un a-t-il une solution ?
Merci d'avance pour vos réponses
Bonjour Phenisque,
Peux-tu publier la formule?
--
AP
"Phenix21" <jeanluc.lacouture@gmail.com> a écrit dans le message de news:
1148032261.678316.244900@j73g2000cwa.googlegroups.com...
Bonjour,
Dans mon code VBA, j'appelle une fonction numeropage() de Laurent
Longre.
Jusque ce matin tout marchait bien, il affichait les numéros de pages.
Et puis depuis ce matin et une de mes manips (je ne l'ai fait
numéroter que les cellules qui m'intéresse, je gagnais du temps), la
formule s'applique bien sur les premières valeurs, puis m'affiche
#valeur!, puis refonctionne sur les dernières valeurs.
Lorsque le déroulement de ma macro est terminé, j'ai laissé les
formules dans les cases. En faisant un double clic sur les #valeur!,
certaines cellules se recalculent, d'autres continuent d'afficher
#valeur!.
Toutes les cellules ont le même format, je comprends pas... Est-ce un
problème de recalcul automatique ? Quelqu'un a-t-il une solution ?
Dans mon code VBA, j'appelle une fonction numeropage() de Laurent Longre.
Jusque ce matin tout marchait bien, il affichait les numéros de pages. Et puis depuis ce matin et une de mes manips (je ne l'ai fait numéroter que les cellules qui m'intéresse, je gagnais du temps), la formule s'applique bien sur les premières valeurs, puis m'affiche #valeur!, puis refonctionne sur les dernières valeurs. Lorsque le déroulement de ma macro est terminé, j'ai laissé les formules dans les cases. En faisant un double clic sur les #valeur!, certaines cellules se recalculent, d'autres continuent d'afficher #valeur!.
Toutes les cellules ont le même format, je comprends pas... Est-ce un problème de recalcul automatique ? Quelqu'un a-t-il une solution ?
Merci d'avance pour vos réponses
Phenix21
Ma macro lance la fonction de cette façon :
Sheets("BPU").Select plageBPU_fin.Select For i = 1 To nb_val_fin Cells(i, 1).Select If Selection.Style = "Titre1" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" ElseIf Selection.Style = "Titre2" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" End If Next
et la fonction est la suivante :
Function NumeroPage(Cellule As Range) As Integer 'L Longre, mpfe
Dim VPC As Integer, HPC As Integer Dim VPB As VPageBreak, HPB As HPageBreak Dim Wksht As Worksheet Dim Col As Integer, Ligne As Long
Set Wksht = Cellule.Worksheet Ligne = Cellule.Row Col = Cellule.Column If Wksht.PageSetup.Order = xlDownThenOver Then HPC = Wksht.HPageBreaks.Count + 1 VPC = 1 Else VPC = Wksht.VPageBreaks.Count + 1 HPC = 1 End If NumeroPage = 1 For Each VPB In Wksht.VPageBreaks If VPB.Location.Column > Col Then Exit For NumeroPage = NumeroPage + HPC Next VPB For Each HPB In Wksht.HPageBreaks If HPB.Location.Row > Ligne Then Exit For NumeroPage = NumeroPage + VPC Next HPB
End Function
Ce qui m'étonne, c'est que ca marche pour une partie et pas pour l'autre. Encore ca n'aurait fonctionné que pour le début, j'aurais pu comprendre, mais là ! Le résultat obtenu est le suivant (j'ai supprimé les lignes blanches pour que cà soit moins long...) :
Sheets("BPU").Select
plageBPU_fin.Select
For i = 1 To nb_val_fin
Cells(i, 1).Select
If Selection.Style = "Titre1" Then
Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])"
ElseIf Selection.Style = "Titre2" Then
Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])"
End If
Next
et la fonction est la suivante :
Function NumeroPage(Cellule As Range) As Integer
'L Longre, mpfe
Dim VPC As Integer, HPC As Integer
Dim VPB As VPageBreak, HPB As HPageBreak
Dim Wksht As Worksheet
Dim Col As Integer, Ligne As Long
Set Wksht = Cellule.Worksheet
Ligne = Cellule.Row
Col = Cellule.Column
If Wksht.PageSetup.Order = xlDownThenOver Then
HPC = Wksht.HPageBreaks.Count + 1
VPC = 1
Else
VPC = Wksht.VPageBreaks.Count + 1
HPC = 1
End If
NumeroPage = 1
For Each VPB In Wksht.VPageBreaks
If VPB.Location.Column > Col Then Exit For
NumeroPage = NumeroPage + HPC
Next VPB
For Each HPB In Wksht.HPageBreaks
If HPB.Location.Row > Ligne Then Exit For
NumeroPage = NumeroPage + VPC
Next HPB
End Function
Ce qui m'étonne, c'est que ca marche pour une partie et pas pour
l'autre. Encore ca n'aurait fonctionné que pour le début, j'aurais pu
comprendre, mais là ! Le résultat obtenu est le suivant (j'ai
supprimé les lignes blanches pour que cà soit moins long...) :
Sheets("BPU").Select plageBPU_fin.Select For i = 1 To nb_val_fin Cells(i, 1).Select If Selection.Style = "Titre1" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" ElseIf Selection.Style = "Titre2" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" End If Next
et la fonction est la suivante :
Function NumeroPage(Cellule As Range) As Integer 'L Longre, mpfe
Dim VPC As Integer, HPC As Integer Dim VPB As VPageBreak, HPB As HPageBreak Dim Wksht As Worksheet Dim Col As Integer, Ligne As Long
Set Wksht = Cellule.Worksheet Ligne = Cellule.Row Col = Cellule.Column If Wksht.PageSetup.Order = xlDownThenOver Then HPC = Wksht.HPageBreaks.Count + 1 VPC = 1 Else VPC = Wksht.VPageBreaks.Count + 1 HPC = 1 End If NumeroPage = 1 For Each VPB In Wksht.VPageBreaks If VPB.Location.Column > Col Then Exit For NumeroPage = NumeroPage + HPC Next VPB For Each HPB In Wksht.HPageBreaks If HPB.Location.Row > Ligne Then Exit For NumeroPage = NumeroPage + VPC Next HPB
End Function
Ce qui m'étonne, c'est que ca marche pour une partie et pas pour l'autre. Encore ca n'aurait fonctionné que pour le début, j'aurais pu comprendre, mais là ! Le résultat obtenu est le suivant (j'ai supprimé les lignes blanches pour que cà soit moins long...) :
Peux-tu mettre ton classeur sur http://cjoint.com ?
Bon appétit, -- AP
"Phenix21" a écrit dans le message de news:
Ma macro lance la fonction de cette façon :
Sheets("BPU").Select plageBPU_fin.Select For i = 1 To nb_val_fin Cells(i, 1).Select If Selection.Style = "Titre1" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" ElseIf Selection.Style = "Titre2" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" End If Next
et la fonction est la suivante :
Function NumeroPage(Cellule As Range) As Integer 'L Longre, mpfe
Dim VPC As Integer, HPC As Integer Dim VPB As VPageBreak, HPB As HPageBreak Dim Wksht As Worksheet Dim Col As Integer, Ligne As Long
Set Wksht = Cellule.Worksheet Ligne = Cellule.Row Col = Cellule.Column If Wksht.PageSetup.Order = xlDownThenOver Then HPC = Wksht.HPageBreaks.Count + 1 VPC = 1 Else VPC = Wksht.VPageBreaks.Count + 1 HPC = 1 End If NumeroPage = 1 For Each VPB In Wksht.VPageBreaks If VPB.Location.Column > Col Then Exit For NumeroPage = NumeroPage + HPC Next VPB For Each HPB In Wksht.HPageBreaks If HPB.Location.Row > Ligne Then Exit For NumeroPage = NumeroPage + VPC Next HPB
End Function
Ce qui m'étonne, c'est que ca marche pour une partie et pas pour l'autre. Encore ca n'aurait fonctionné que pour le début, j'aurais pu comprendre, mais là ! Le résultat obtenu est le suivant (j'ai supprimé les lignes blanches pour que cà soit moins long...) :
Peux-tu mettre ton classeur sur http://cjoint.com ?
Bon appétit,
--
AP
"Phenix21" <phoenix21@voila.fr> a écrit dans le message de news:
1148033735.051058.56520@y43g2000cwc.googlegroups.com...
Ma macro lance la fonction de cette façon :
Sheets("BPU").Select
plageBPU_fin.Select
For i = 1 To nb_val_fin
Cells(i, 1).Select
If Selection.Style = "Titre1" Then
Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])"
ElseIf Selection.Style = "Titre2" Then
Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])"
End If
Next
et la fonction est la suivante :
Function NumeroPage(Cellule As Range) As Integer
'L Longre, mpfe
Dim VPC As Integer, HPC As Integer
Dim VPB As VPageBreak, HPB As HPageBreak
Dim Wksht As Worksheet
Dim Col As Integer, Ligne As Long
Set Wksht = Cellule.Worksheet
Ligne = Cellule.Row
Col = Cellule.Column
If Wksht.PageSetup.Order = xlDownThenOver Then
HPC = Wksht.HPageBreaks.Count + 1
VPC = 1
Else
VPC = Wksht.VPageBreaks.Count + 1
HPC = 1
End If
NumeroPage = 1
For Each VPB In Wksht.VPageBreaks
If VPB.Location.Column > Col Then Exit For
NumeroPage = NumeroPage + HPC
Next VPB
For Each HPB In Wksht.HPageBreaks
If HPB.Location.Row > Ligne Then Exit For
NumeroPage = NumeroPage + VPC
Next HPB
End Function
Ce qui m'étonne, c'est que ca marche pour une partie et pas pour
l'autre. Encore ca n'aurait fonctionné que pour le début, j'aurais pu
comprendre, mais là ! Le résultat obtenu est le suivant (j'ai
supprimé les lignes blanches pour que cà soit moins long...) :
Peux-tu mettre ton classeur sur http://cjoint.com ?
Bon appétit, -- AP
"Phenix21" a écrit dans le message de news:
Ma macro lance la fonction de cette façon :
Sheets("BPU").Select plageBPU_fin.Select For i = 1 To nb_val_fin Cells(i, 1).Select If Selection.Style = "Titre1" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" ElseIf Selection.Style = "Titre2" Then Cells(i, 4).FormulaR1C1 = "=NumeroPage(RC[-3])" End If Next
et la fonction est la suivante :
Function NumeroPage(Cellule As Range) As Integer 'L Longre, mpfe
Dim VPC As Integer, HPC As Integer Dim VPB As VPageBreak, HPB As HPageBreak Dim Wksht As Worksheet Dim Col As Integer, Ligne As Long
Set Wksht = Cellule.Worksheet Ligne = Cellule.Row Col = Cellule.Column If Wksht.PageSetup.Order = xlDownThenOver Then HPC = Wksht.HPageBreaks.Count + 1 VPC = 1 Else VPC = Wksht.VPageBreaks.Count + 1 HPC = 1 End If NumeroPage = 1 For Each VPB In Wksht.VPageBreaks If VPB.Location.Column > Col Then Exit For NumeroPage = NumeroPage + HPC Next VPB For Each HPB In Wksht.HPageBreaks If HPB.Location.Row > Ligne Then Exit For NumeroPage = NumeroPage + VPC Next HPB
End Function
Ce qui m'étonne, c'est que ca marche pour une partie et pas pour l'autre. Encore ca n'aurait fonctionné que pour le début, j'aurais pu comprendre, mais là ! Le résultat obtenu est le suivant (j'ai supprimé les lignes blanches pour que cà soit moins long...) :
en lançant la même fonction à partir d'une autre macro ca marche également sans problème chez moi !
PS : je suis ouvert à toute proposition pour l'amélioration de mon fichier ! lol
Ardus Petus
Il se plante sur: For Each HPB In Wksht.HPageBreaks à la fin de la proc NumeroPage
J'ai essayé de contourner: pas moyen!
Je continue à chercher
Cordialement, -- AP
"Phenix21" a écrit dans le message de news:
http://cjoint.com/data/ftonZ0d450.htm
et voilà ! Merci pour ton aide ;)
en lançant la même fonction à partir d'une autre macro ca marche également sans problème chez moi !
PS : je suis ouvert à toute proposition pour l'amélioration de mon fichier ! lol
Il se plante sur:
For Each HPB In Wksht.HPageBreaks
à la fin de la proc NumeroPage
J'ai essayé de contourner: pas moyen!
Je continue à chercher
Cordialement,
--
AP
"Phenix21" <phoenix21@voila.fr> a écrit dans le message de news:
1148041037.015856.258020@j33g2000cwa.googlegroups.com...
http://cjoint.com/data/ftonZ0d450.htm
et voilà ! Merci pour ton aide ;)
en lançant la même fonction à partir d'une autre macro ca marche
également sans problème chez moi !
PS : je suis ouvert à toute proposition pour l'amélioration de mon
fichier ! lol
Il se plante sur: For Each HPB In Wksht.HPageBreaks à la fin de la proc NumeroPage
J'ai essayé de contourner: pas moyen!
Je continue à chercher
Cordialement, -- AP
"Phenix21" a écrit dans le message de news:
http://cjoint.com/data/ftonZ0d450.htm
et voilà ! Merci pour ton aide ;)
en lançant la même fonction à partir d'une autre macro ca marche également sans problème chez moi !
PS : je suis ouvert à toute proposition pour l'amélioration de mon fichier ! lol
Phenix21
Merci beaucoup de t'investir ;)
Au risque de me répéter, as-tu une idée sur pourquoi ca marche au début, à la fin, mais pas au milieu ? si il plante sur cette ligne, normalement il devrait le faire sur toutes non ?
Merci beaucoup de t'investir ;)
Au risque de me répéter, as-tu une idée sur pourquoi ca marche au
début, à la fin, mais pas au milieu ? si il plante sur cette ligne,
normalement il devrait le faire sur toutes non ?
Au risque de me répéter, as-tu une idée sur pourquoi ca marche au début, à la fin, mais pas au milieu ? si il plante sur cette ligne, normalement il devrait le faire sur toutes non ?
Phenix21
Pour info, je viens de créer une macro "sommaire" qui reprend une partie de la grande : cette macro sommaire numérote puis réalise le sommaire.
Je lance d'abord la grande => pb de numérotation toujours présent. Je lance la macro "sommaire" => la numérotation redevient OK ! Par contre pour que ça marche il faut que les numéros de page aient été effacés dans la feuille BPU...
Je te joins tout çà, mais j'avoue ne pas tout comprendre, voire même rien comprendre ! lol
http://cjoint.com/?ftp6L74C58
Pour info, je viens de créer une macro "sommaire" qui reprend une
partie de la grande : cette macro sommaire numérote puis réalise le
sommaire.
Je lance d'abord la grande => pb de numérotation toujours présent.
Je lance la macro "sommaire" => la numérotation redevient OK ! Par
contre pour que ça marche il faut que les numéros de page aient été
effacés dans la feuille BPU...
Je te joins tout çà, mais j'avoue ne pas tout comprendre, voire même
rien comprendre ! lol
Pour info, je viens de créer une macro "sommaire" qui reprend une partie de la grande : cette macro sommaire numérote puis réalise le sommaire.
Je lance d'abord la grande => pb de numérotation toujours présent. Je lance la macro "sommaire" => la numérotation redevient OK ! Par contre pour que ça marche il faut que les numéros de page aient été effacés dans la feuille BPU...
Je te joins tout çà, mais j'avoue ne pas tout comprendre, voire même rien comprendre ! lol
http://cjoint.com/?ftp6L74C58
Ardus Petus
Petite variante. Ca ne résoud pas le pb, mais c'est plus propre:
'Numérotation des pages Sheets("BPU").Select plageBPU_fin.Select For i = 1 To nb_val_fin Cells(i, 1).Select If Selection.Style = "Titre1" Then Cells(i, 4).Value = NumeroPage(Cells(i, 1)) ElseIf Selection.Style = "Titre2" Then Cells(i, 4).Value = NumeroPage(Cells(i, 1)) End If Next
Cordialement, -- AP
"Phenix21" a écrit dans le message de news:
Pour info, je viens de créer une macro "sommaire" qui reprend une partie de la grande : cette macro sommaire numérote puis réalise le sommaire.
Je lance d'abord la grande => pb de numérotation toujours présent. Je lance la macro "sommaire" => la numérotation redevient OK ! Par contre pour que ça marche il faut que les numéros de page aient été effacés dans la feuille BPU...
Je te joins tout çà, mais j'avoue ne pas tout comprendre, voire même rien comprendre ! lol
http://cjoint.com/?ftp6L74C58
Petite variante.
Ca ne résoud pas le pb, mais c'est plus propre:
'Numérotation des pages
Sheets("BPU").Select
plageBPU_fin.Select
For i = 1 To nb_val_fin
Cells(i, 1).Select
If Selection.Style = "Titre1" Then
Cells(i, 4).Value = NumeroPage(Cells(i, 1))
ElseIf Selection.Style = "Titre2" Then
Cells(i, 4).Value = NumeroPage(Cells(i, 1))
End If
Next
Cordialement,
--
AP
"Phenix21" <phoenix21@voila.fr> a écrit dans le message de news:
1148047181.869373.71690@i39g2000cwa.googlegroups.com...
Pour info, je viens de créer une macro "sommaire" qui reprend une
partie de la grande : cette macro sommaire numérote puis réalise le
sommaire.
Je lance d'abord la grande => pb de numérotation toujours présent.
Je lance la macro "sommaire" => la numérotation redevient OK ! Par
contre pour que ça marche il faut que les numéros de page aient été
effacés dans la feuille BPU...
Je te joins tout çà, mais j'avoue ne pas tout comprendre, voire même
rien comprendre ! lol
Petite variante. Ca ne résoud pas le pb, mais c'est plus propre:
'Numérotation des pages Sheets("BPU").Select plageBPU_fin.Select For i = 1 To nb_val_fin Cells(i, 1).Select If Selection.Style = "Titre1" Then Cells(i, 4).Value = NumeroPage(Cells(i, 1)) ElseIf Selection.Style = "Titre2" Then Cells(i, 4).Value = NumeroPage(Cells(i, 1)) End If Next
Cordialement, -- AP
"Phenix21" a écrit dans le message de news:
Pour info, je viens de créer une macro "sommaire" qui reprend une partie de la grande : cette macro sommaire numérote puis réalise le sommaire.
Je lance d'abord la grande => pb de numérotation toujours présent. Je lance la macro "sommaire" => la numérotation redevient OK ! Par contre pour que ça marche il faut que les numéros de page aient été effacés dans la feuille BPU...
Je te joins tout çà, mais j'avoue ne pas tout comprendre, voire même rien comprendre ! lol
http://cjoint.com/?ftp6L74C58
Phenix21
J'ai appliqué ta correction, et là VBA a carrément planté ! lol
J'ai appliqué ta correction, et là VBA a carrément planté ! lol