Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule RANG pour un classement

  • Initiateur de la discussion Initiateur de la discussion riri38
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
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
 
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)
 
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
 
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

Dernière édition:
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

Dernière édition:
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
2 K
S
Réponses
14
Affichages
3 K
saadenpanne
S
A
Réponses
3
Affichages
1 K
Réponses
3
Affichages
944
D
  • Question Question
Réponses
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…