XL 2019 CalculPosition

GUERET

XLDnaute Occasionnel
Bonsoir,
Dans la feuille "Pilotes" en H5, lorsque j'affiche la position voulue avec la flèche, pendant une fraction de seconde j'ai le bon résultat qui disparait pour afficher n'importe quoi par la suite. Où ai-je commis l'erreur svp ? C'est une formule que j'ai bidouillé de toutes pièces....

 

Pounet95

XLDnaute Occasionnel
Bonjour,
Je n'ai pas bien compris "position voulue avec la flèche" !
En regardant le code VBA de la feuille, il y a des lignes en trop qui sont peut-être l'origine du problème.
Corriger et voir

Claude alias Pounet95


VB:
Function CalculPosition(Nom)
Application.Volatile
Course = Array("", "Espagne", "Andalousie", "Tchèque", "Autriche", " Styrie", "Saint-Marin", "Emilie-Romagne", "Catalogne", "France", "Aragon", _
                    "Teruel", "Europe", "Valence", "Portugal")
NbPosOk = 0
For i = 1 To 11
    PosNom = Application.Match(Nom, Sheets(Course(i)).Range("A:A"), 0)
    If Sheets(Course(i)).Range("D" & PosNom) = [H3] Then
        NbPosOk = NbPosOk + 1
    End If
Next i
CalculPosition = NbPosOk
End Function


*****************************************************************
Que font là ces instructions ? Elles devraient être effacées ;

 Tri()   ! pas besoin de parenthèse pour lancer la procédure 

End Function
******************************************************************
 

GUERET

XLDnaute Occasionnel
Bonjour,
Tout d'abord, je ne suis pas un pro sur Excel:( :).
J'ai essayé, dans un premier temps, d'aller dans la VBA et de retirer les parenthèses Tri. Dès que je rentre la position dans la boite de dialogue en H5, le bon résultat s'affiche quelques secondes avant de me donner un faux résultat.
Ensuite, j'ai supprimé toute la VBA et résultat idem. Je ne vois toujours pas l'erreur.....
Je réfléchis encore:cool:
D'avance, merci pour le coup de main
 

job75

XLDnaute Barbatruc
Bonsoir GUERET, Pounet95,

J'ai un peu amélioré les fonctions, elles fonctionnent toutes deux très bien maintenant :
VB:
Function CalculPosition&(Nom$)
Application.Volatile
Dim Course, i%, PosNom As Variant
Course = Array("Espagne", "Andalousie", "Tchèque", "Autriche", "Styrie", "Saint-Marin", "Emilie-Romagne", _
    "Catalogne", "France", "Aragon", "Teruel", "Europe", "Valence", "Portugal")
For i = 0 To UBound(Course)
    With Sheets(Course(i))
        PosNom = Application.Match(Nom, .Range("A:A"), 0)
        If IsNumeric(PosNom) Then If .Range("D" & PosNom) = Sheets("Pilotes").Range("H3") Then CalculPosition = CalculPosition + 1
    End With
Next
End Function

Function CalculPool(Nom$)
Application.Volatile
Dim i%, PosNom As Variant
For i = 1 To Application.CountIf([Courses], "*")
    With Sheets(CStr([Courses].Cells(i, 1)))
        PosNom = Application.Match(Nom, .Range("A:A"), 0)
        If IsNumeric(PosNom) Then If .Range("E" & PosNom) Then CalculPool = CalculPool + 1
    End With
Next
End Function
Le fichier sur cjoint : https://cjoint.com/c/JJsrv3iZfXu

A+
 

Pounet95

XLDnaute Occasionnel
Bonsoir Job75
J'avais vu que la fonction CalculPosition était présente dans la feuille Pilotes et dans le module Formules.
Ainsi que la présence des verrues signalées avant.
Bon, tu as réparé, c'est super.

Pour ma culture personnelle; :
Il y a une procédure Tri dans chaque module de feuille. Et dans chacune d'entre elles il y avait une des clés définie sur une autre feuille.
Il en reste une dans ce, celle de l'onglet Pilotes ( voir code)
Ca fonctionne ça ?

Ce qui ne trouble pas plus apparemment, c'est la double présence de MARQUES Alex dans la liste des pilotes ( ... à moins qu'il y ait un caratère non visible ? )

Bonne soirée
Claude alias Pounet95


VB:
Sub tri()
     
        Application.ScreenUpdating = False
     
        With[B][I] Sheets("Pilotes")[/I][/B].Sort
            .SortFields.Clear
            .SortFields.Add Key:=[B][I]Sheets("Écuries")[/I][/B].Range("C5"), Order:=xlDescending
            .SetRange Sheets("Écuries").Range("B5:C30")
            .Apply
        End With
     
        Application.ScreenUpdating = True

    End Sub
 

GUERET

XLDnaute Occasionnel
Bonjour, quand j'ouvre mon fichier, il m'affiche "erreur d'exécution '9' sur la ligne que j'ai mis en gras italique. Chui pas fort en VBA. De quoi cela provient-il ? Une explication simplifié en plus m'aiderait beaucoup pour la suite.
Amicalement

Sub tri()

Application.ScreenUpdating = False

With Sheets("Pilotes").Sort
.SortFields.Clear
.SortFields.Add Key:=Sheets("Écuries").Range("C5"), Order:=xlDescending
.SetRange Sheets("Écuries").Range("B5:C25")
.Apply
End With

Application.ScreenUpdating = True

End Sub

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
tri
Application.EnableEvents = True
End Sub



Function CalculPosition&(Nom$)
Application.Volatile
Dim Course, i%, PosNom As Variant
Course = Array("Espagne", "Andalousie", "Tchèque", "Autriche", "Styrie", "Saint-Marin", "Emilie-Romagne", _
"Catalogne", "France", "Aragon", "Teruel", "Europe", "Valence", "Portugal")
For i = 0 To UBound(Course)
With Sheets(Course(i))
PosNom = Application.Match(Nom, .Range("A:A"), 0)
If IsNumeric(PosNom) Then If .Range("D" & PosNom) = Sheets("Pilotes").Range("H3") Then CalculPosition = CalculPosition + 1
End With
Next
End Function

Function CalculPool(Nom$)
Application.Volatile
Dim i%, PosNom As Variant
For i = 1 To Application.CountIf([Courses], "*")
With Sheets(CStr([Courses].Cells(i, 1)))
PosNom = Application.Match(Nom, .Range("A:A"), 0)
If IsNumeric(PosNom) Then If .Range("E" & PosNom) Then CalculPool = CalculPool + 1
End With
Next
End Function
 

GUERET

XLDnaute Occasionnel
Bonsoir, puis-je abuser un peu de votre patience ?
Dans ce tableau, je cherche à savoir les lieux où le pilote a obtenu sa ou ses places (si le H2 j'affiche 2, il me donne le nombre de fois où chaque pilote a finit 2ième). Je ne sais pas si ce que je dis est clair..... J'ai tenté cette formule mais il me dit que j'ai entré un nbre trop important d'arguments...
=SI(EQUIV(Pilotes!H5;Melbourne!D5;0;Melbourne;""))
 

Discussions similaires