Formule RANG pour un classement

riri38

XLDnaute Nouveau
Bonjour le forum,

Lorsqu'on veut exécuter un classement par la fonction RANG, est-il possible de sélectionner les références de différentes plages appartenant à des feuilles distinctes ? Je sais que sur une même feuille, ça fonctionne mais sur plusieurs feuilles, cela indique "erreur de valeur" .

J'ai fait un petit programme pour la compréhension avec les explications

Merci pour le retour

Cdlt

Riri38
 

Pièces jointes

  • Riri38.xls
    25 KB · Affichages: 40
  • Riri38.xls
    25 KB · Affichages: 38
  • Riri38.xls
    25 KB · Affichages: 41

Dranreb

XLDnaute Barbatruc
Re : Formule RANG pour un classement

Bonsoir.

Manque NATHAN et NOEL dans votre feuille RECHERCHE PAR NOM.
À votre place je mettrais en B7:
Code:
=DECALER('TABLEAU 1'!$B$3;;LIGNE()-7)
En C7:
Code:
=LIGNE()-6
Et pourquoi ne pas rappeler les points en plus en E7:
Code:
=DECALER('TABLEAU 1'!$B$4;;LIGNE()-7)
comme ça vous aurez votre plage d'un seul tenant d'où vous pourrez tirer un Rang. Parce qu'à partir de la ligne 27, naturellement, il faut remplacer TABLEAU 1 par TABLEAU 2 et -7 par -27.
Code:
=RANG(B$4;'RECHERCHE PAR NOM'!$E$7:$E$46)
Je n'avais pas tout lu, notamment le coup des 80 et quelques colonnes. Je ne comprends pas pourquoi tout n'est pas dès le départ dans l'autre sens dans une seule feuille !
 
Dernière édition:

riri38

XLDnaute Nouveau
Re : Formule RANG pour un classement

Merci.
J'ai mis à jour mon petit programme
Pour le décryptage de la formule, est-il possible de détailler LIGNE()-7 ou LIGNE()-6 et la fonction DECALER pour ma compréhension ?

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Formule RANG pour un classement

LIGNE() donne ne numéro de la ligne portant la formule.
et DECALER(CelluleDeDépart;;LIGNE()-X) utilise ce numéro de ligne comme décalage de colonnes uniquement, n'étant pas précisé le décalage en lignes de la forme générale: DECALER(CelluleDeDépart;NombreDeLignes;NombreDeColonnes)
 

riri38

XLDnaute Nouveau
Re : Formule RANG pour un classement

OK et merci pour ces explications intéressantes.
En fait, mes tableaux utilisent toues les colonnes d'excel avec 3 colonnes par participant pour les calcul de points selon des critères. Il m'est difficile de modifier les tableaux dans l'autre sens.

Sur le TABLEAU 1, j'ai effectué un copier-coller avec liaison de la plage des points du TABLEAU 2 et du coup je peux renseigner la formule RANG avec les 2 références de plages situées sur la même feuille.
Idem pour le TABLEAU 2 mais inversé.
Merci, les formules DECALER et LI GNEque j'ignorais vont me servir.
cdlt

riri38
 

job75

XLDnaute Barbatruc
Re : Formule RANG pour un classement

Bonsoir riri38, Bernard,

Pour répondre au problème posé au post #1 je me suis fait plaisir avec cette fonction VBA :

Code:
Function RangSurDeuxPlages(x, r1, Optional r2, Optional ordre = 0)
Dim n&, a#(), b#()
For Each r1 In r1
  If IsNumeric(CStr(r1)) Then
    n = n + 1
    ReDim Preserve a(1 To n)
    a(n) = r1
  End If
Next
If Not IsError(r2) Then
  For Each r2 In r2
    If IsNumeric(CStr(r2)) Then
      n = n + 1
      ReDim Preserve a(1 To n)
      a(n) = r2
    End If
Next
End If
ReDim b(1 To n)
If ordre Then
  For n = 1 To n
    b(n) = Application.Small(a, n)
  Next
Else
  For n = 1 To n
    b(n) = Application.Large(a, n)
  Next
End If
x = Application.Match(x, b, 0)
RangSurDeuxPlages = IIf(IsNumeric(x), x, "")
End Function
Fichier joint.

Nota : j'ai essayé d'utiliser Application.Rank mais elle ne semble pas fonctionner sur un tableau VBA.

Edit : j'ai rendu facultatif le 3ème argument (2ème Range).

A+
 

Pièces jointes

  • Riri38(1).xls
    42.5 KB · Affichages: 27
Dernière édition:

job75

XLDnaute Barbatruc
Re : Formule RANG pour un classement

Re,

Comme les plages ont la même adresse sur les 2 feuilles cette formule en B5 fonctionne :

Code:
=RANG(B4;'TABLEAU 1:TABLEAU 2'!$B4:$U4)
Fichier joint.

A+
 

Pièces jointes

  • Riri38 par formule(1).xls
    26.5 KB · Affichages: 34

job75

XLDnaute Barbatruc
Re : Formule RANG pour un classement

Bonjour riri38, le fil, le forum,

Pour le problème de la feuille RECHERCHE PAR NOM, cette fonction utilisée en H14 :

Code:
Function SourceDeuxPlages(x, r1, Optional r2)
For Each r1 In r1
  If x = r1 Then SourceDeuxPlages _
    = "'" & r1.Parent.Name & "'!" & r1.Address(0, 0): Exit Function
Next
If Not IsError(r2) Then
  For Each r2 In r2
    If x = r2 Then SourceDeuxPlages _
      = "'" & r2.Parent.Name & "'!" & r2.Address(0, 0): Exit Function
  Next
End If
End Function
Et dans le code de la feuille :

Code:
Sub Acces()
If [H14].Text <> "" Then Application.Goto Evaluate([H14].Text)
End Sub
Fichier (2).

Edit : noter que la recherche du prénom se fait en respectant la casse.

A+
 

Pièces jointes

  • Riri38(2).xls
    48 KB · Affichages: 24
Dernière édition:

job75

XLDnaute Barbatruc
Re : Formule RANG pour un classement

Re,

Une solution avec un UserForm doté d'une ComboBox, d'un Label et du code :

Code:
Private Sub Label1_Click() 'OK
On Error Resume Next
Application.Goto ActiveSheet.[3:3,5:5].Find(ComboBox1, , xlValues, xlWhole)
If ActiveCell = ComboBox1 Then Exit Sub
Application.Goto Sheets("TABLEAU 1").[3:3,5:5].Find(ComboBox1)
If ActiveCell = ComboBox1 Then Exit Sub
Application.Goto Sheets("TABLEAU 2").[3:3,5:5].Find(ComboBox1)
End Sub

Private Sub UserForm_Initialize()
On Error Resume Next
With Sheets("LISTE") 'nom à adapter
ComboBox1.List = .[B7].Resize(Application.Match("zzz", .[B:B]) - 6).Value
End With
End Sub
L'UserForm s'ouvre en haut à gauche de l'écran en cliquant sur le bouton Recherche.

Fichier (3).

Edit : on peut entrer un nombre entier dans la ComboBox pour rechercher un classement.

A+
 

Pièces jointes

  • Riri38(3).xls
    68 KB · Affichages: 33
Dernière édition:

Discussions similaires

Réponses
18
Affichages
886
M
Réponses
14
Affichages
689
M

Statistiques des forums

Discussions
312 610
Messages
2 090 204
Membres
104 451
dernier inscrit
scp9990