XL 2019 INDEX EQUIV et concatener

playmo

XLDnaute Nouveau
Bonjour, ci-joint un tableau qui me pose soucis. Je souhaite compiler des information issues des ligne de ce tableau. Ayant essayé INDEX+EQUIV je sèche à cause des cellule vides.
Auriez-vous des idées ? J'espère que le tableau sera clair dans mes explications.
Bonne journée
 

Pièces jointes

  • test 1.xlsx
    12.2 KB · Affichages: 5
Solution
Bonjour à tous,

Une solution assez simple avec les noms définis An et X.

Formule en F2 :
Code:
=SIERREUR(SUPPRESPACE(DROITE(X;2))&"/"&An;"Pas de correction")
On suppose que les textes séparés par des tirets comportent 1 ou 2 chiffres.

A+

JHA

XLDnaute Barbatruc
Bonjour à tous,

un début de piste avec une table Power Query et index()
VB:
=SIERREUR(INDEX(Tableau1_1[Fusionné];EQUIV(Feuil1!$A2&MAX.SI.ENS(Tableau1_1[Attribut];Tableau1_1[Test];$A2);Tableau1_1[Test]&Tableau1_1[Attribut];0));"pas de correction")

JHA
 

Pièces jointes

  • test 1 (1).xlsx
    23.3 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Playmo, JHA,
Ou encore avec une ch'tite fonction perso :
VB:
Function Dernier(Plage)
Dim T, DerL%, i%, T2, Année
T = Plage
DerL = UBound(T)
For i = UBound(T, 2) To 2 Step -1
    If T(DerL, i) <> "" Then
        If T(DerL, i) Like "* - *" Then
            T2 = Split(T(DerL, i), " - ")
            Dernier = T2(UBound(T2))
            Année = T(1, i): Exit For
        Else
            Dernier = T(DerL, i)
            Année = T(1, i): Exit For
        End If
    End If
Next i
If Dernier = "" Then
    Dernier = "Pas de correction"
Else
    Dernier = Dernier & "/" & Année
End If
End Function
Syntaxe : =Dernier(Plage)
 

Pièces jointes

  • test 1.xlsm
    18.4 KB · Affichages: 8

job75

XLDnaute Barbatruc
Bonjour à tous,

Une solution assez simple avec les noms définis An et X.

Formule en F2 :
Code:
=SIERREUR(SUPPRESPACE(DROITE(X;2))&"/"&An;"Pas de correction")
On suppose que les textes séparés par des tirets comportent 1 ou 2 chiffres.

A+
 

Pièces jointes

  • test 1.xlsx
    11.8 KB · Affichages: 6

playmo

XLDnaute Nouveau
Bonjour Playmo, JHA,
Ou encore avec une ch'tite fonction perso :
VB:
Function Dernier(Plage)
Dim T, DerL%, i%, T2, Année
T = Plage
DerL = UBound(T)
For i = UBound(T, 2) To 2 Step -1
    If T(DerL, i) <> "" Then
        If T(DerL, i) Like "* - *" Then
            T2 = Split(T(DerL, i), " - ")
            Dernier = T2(UBound(T2))
            Année = T(1, i): Exit For
        Else
            Dernier = T(DerL, i)
            Année = T(1, i): Exit For
        End If
    End If
Next i
If Dernier = "" Then
    Dernier = "Pas de correction"
Else
    Dernier = Dernier & "/" & Année
End If
End Function
Syntaxe : =Dernier(Plage)
Bonjour, cette solution me parait être la plus pertinente, mais je n'arrive pas à l'intégrer dans mon fichier. Entre autre "dernier" qui semble être un nom faisant référence à une plage, mais dont je n'arrive pas à trouver trace ni la plage correspondante. Pourriez vous m'aiguiller ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
mais je n'arrive pas à l'intégrer dans mon fichier. Entre autre "dernier" qui semble être un nom faisant référence à une plage,
Il s'agit d'une fonction personnelle.
Une fois cette fonction copiée dans votre projet, et une fois renommé votre fichier en xlsm pour prendre en compte les macros, "Dernier" devient une fonction comme toute fonction XL.
Il suffit par exemple en F2 de rentrer la formule :
VB:
=Dernier($A$1:D2)
La fonction récupère la plage $A$1.D2 et l'analyse avant de renvoyer le résultat : 15/2024.
 

Discussions similaires

Réponses
6
Affichages
571

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87