> Tous les forums > Forum Bureautique
 EXCEL EQUIV en remontant dans une colonneSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Debrief
  Posté le 01/03/2018 @ 09:32 
Aller en bas de la page 
Astucien

Bonjour,

Je n'arrive pas à trouver le moyen de faire un EQUIV à l'envers (ou inverser la colonne avec un DECALER pour faire un EQUIV à l'endroit)

Dans cet exemple comment trouver la ligne 5 qui contient "Paul" sachant qu'il peut y avoir plusieurs "Paul" avant et que je ne veux pas créer une colonne de calcul intermédiaire contenant par exemple le prénom et le numéro de ligne genre =A1 & LIGNE(A1)

Cordialement,
D.



Modifié par Debrief le 01/03/2018 10:05
Publicité
bruber
 Posté le 01/03/2018 à 13:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Debrief,

Je comprends la question mais quel est le but de la manœuvre ?

Et s'il y a trois Paul ... Donnes un peu plus d'explications.

Il est possible, sans macro, en association avec Equiv() et Decaler() en cascade, de trouver tous les "Paul" mais dans le sens haut-bas.

Debrief
 Posté le 01/03/2018 à 14:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour bruber,

C'est un affaire de compte bancaire et de date de valeur à créer. Je ne t'explique pas tout car ça serait trop long. Le fait est que, pour une opération donnée, je dois 'remonter' dans la colonne pour trouver la première ligne contenant "Relevé CB au*". Il me faut la 1ère occurrence au-dessus d'une ligne donnée.

C'est l'équivalent des "Paul" dans l'exemple ci-dessus qui sont en nombre indéterminé au dessus de la ligne 6. Je ne peux pas faire un EQUIV normal car je ne connais pas la valeur complète du "Relevé CB au*".

Sur une ligne donnée, je dois avoir une formule qui retourne le n° de ligne de la 1ère occurrence de "Paul" trouvée en remontant la colonne. Un EQUIV à l'envers en quelque sorte.

Debrief
 Posté le 01/03/2018 à 18:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Je ne crois pas que ce soit possible, rien trouvé sur Internet. J'ai écrit un embryon de macro pour mon besoin ponctuel, mais les fonctions persos dans les formules sont appelées trop souvent par Excel et ralentissent certaines opérations.

Public Function EQUIVINV(ByVal ValeurCherchée As Variant, ByRef Rng As Range) As Long

Dim i As Long
Dim Retour As Long
Dim tAdr() As String

Retour = 0
tAdr = Split(Replace(Rng.Address, ":", "$"), "$")

Select Case VarType(ValeurCherchée)
Case vbEmpty '0
Case vbNull '1
Case vbInteger '2
Case vbLong '3
Case vbSingle '4
Case vbDouble '5
Case vbCurrency '6
Case vbDate '7

Case vbString '8
For i = tAdr(5) To tAdr(2) Step -1
If Not IsError(Application.Match(ValeurCherchée, Range(tAdr(1) & i), 0)) Then Exit For
Next i
If i >= tAdr(2) Then Retour = i

Case vbObject '9
Case vbError '10
Case vbBoolean '11
Case vbVariant '12
Case vbDataObject '13
Case vbDecimal '14
Case vbByte '17
Case vbUserDefinedType '36
Case vbArray '8192
End Select

EQUIVINV = Retour
End Function



Modifié par Debrief le 01/03/2018 20:16
DjiDji59430
 Posté le 01/03/2018 à 19:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

{=petite.valeur(si(a1:a6="paul";ligne(a1:a6);"Ici le N° du paul que tu veux (1er, 2 eme, etc)")}

formule matricielle

Cdlmnt

Debrief
 Posté le 01/03/2018 à 19:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour Djidji du nord,

{=PETITE.VALEUR(SI(A1:A6="paul";LIGNE(A1:A6));1) donne 2
{=PETITE.VALEUR(SI(A1:A6="paul";LIGNE(A1:A6));2) donne 5

C'est pas inintéressant mais je ne sais pas à priori quel est le n° d'occurrence de "Paul" que je cherche car ce n° part du haut et je cherche la 1ère occurrence en partant du bas.

Cordialement,
D.

Debrief
 Posté le 01/03/2018 à 19:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ceci dit, en transformant légèrement ta formule on peut obtenir le résultat souhaité:

{=PETITE.VALEUR(SI(A1:A6="paul";-LIGNE(A1:A6));1)*-1} donne 5

Merci pour le tuyau. Bien trouvé !

Edit: ou encore tout simplement {=GRANDE.VALEUR(SI(A1:A6="paul";LIGNE(A1:A6));1)} donne 5

Les caractères wildcard ne fonctionnement pas dans la chaîne mais on peut si besoin jouer sur des fonctions de texte, par exemple {=GRANDE.VALEUR(SI(GAUCHE(A1:A6;3)="pau";LIGNE(A1:A6));1)}



Modifié par Debrief le 01/03/2018 20:07
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
rentrer date dans colonne Excel (Libre Office)
listing et somme valeurs unique dans colonne excel
importer une copie ecran en colonne dans excel
Problème pour insérer colonne dans Excel
Manipuler une colonne de nombres dans Excel
classement dans une colonne excel
déplacer une colonne dans excel 2003
Formules dans Excel
comptabiliser dans une colonne
choix multiple dans une cellule d'excel ?
Plus de sujets relatifs à EXCEL EQUIV en remontant dans une colonne
 > Tous les forums > Forum Bureautique