Autres listes

nicolaspoulain77

XLDnaute Nouveau
Bonjour

je suis tout nouveau ici, et pas bien plus expérimenté sur exel, et j'ai un petit problème à vous soumettre ;

j'ai deux types de listes dans un tableau :
le premier type de lignes contient des lignes de 6 valeurs, comprises entre 1 et 20,
(il y a en réalité une douzaine de lignes de 20 cases avec des valeurs différentes, un " . "quand il n'y a pas de valeur, mais toujours 6 valeurs, toujours entre 1 et 20, et pas forcément dans un ordre croissant ni décroissant, on peut avoir 6,19,8,1,20,13, par exemple ),
ces 6 valeurs sont donc espacées par des cases vides, pas toujours autant de cases entre elles, cela varie sur chacune des 12 lignes, d'autant que résultat change chaque semaine

la seconde contient une liste de 20 valeurs, entre 1 et 20, mais pas forcément dans l'ordre, ni croissant ni décroissant, et en ligne elles aussi

toutes ces valeurs sont les résultats de calculs venant de données d'autres tableaux, d'où le désordre possible sur chaque ligne

et voilà ma question :

je voudrais savoir sur chacune des lignes si les 6 nombres sont classés dans le même ordre que dans la liste de 20 nombres, même s'il y a d'autres nombres entre ces chiffres dans cette liste ; ce qui compte pour mon raisonnement, c'est oui ou vrai l'ordre est le même, non ou faux l'ordre diffère, où que soient placés les 6 nombres de la première liste dans la seconde liste ; d'ailleurs, ce serait plutôt "ordre" et "1" qui seraient les 2 choix de résultats

voilà, j'ai trouvé des pistes dans diverses faqs, mais toujours pour des colonnes, mon premier problème réside dans le fait que j'ai besoin de lignes, pour un confort de lecture de plusieurs tableaux cote à cote sur le même onglet...

alors j'ai décidé de faire appel à l'intelligence non-artificielle, la seule qui prévaut à mon avis, pour m'apprendre peut-être à mêler plusieurs formules en une seule ?

je croise les doigts, et j'espère que quelqu'un a une solution pour moi, même si mes maigres compétences m'empêcheront de rendre la pareille à mon tour...

à bientôt

excellent week end

Nicolas
 

nicolaspoulain77

XLDnaute Nouveau
Bonjour sylvanu

c'est gentil de me répondre

là je suis sur un autre pc, avec libre office.. désolé...

j'ai bricolé vite fait un exemple sur 4 lignes seulement, l'idée est que dans les cases à fond jaune "ordre" ou "1" apparaissent ; normalement, dans la première ligne, les nombres apparaissent bien dans le même ordre que dans la liste complète, donc "ordre" devrait apparaître en réponse..et "1" en résultat pour les 3 autres lignes.. enfin c'est ce à quoi j'aimerai arriver...

merci d'y jeter un oeil, mais rien ne presse, point d'urgence, je suis dessus depuis quelques jours déjà, je peux attendre encore, je fais de la recherche avec mon oeil et j'écris "ordre" ou "1" moi même en attendant avec mes doigts...:):)
ce qui permet à la suite des calculs de continuer...mais c'est un peu fastidieux....:):)

à bientôt...

nicolas
 

nicolaspoulain77

XLDnaute Nouveau
bonjour ; ah effectivement, le fichier est manquant..
damned, dirait Lucky Luke....
apparemment, mon fichier ne passe pas, puisque c'est un libre office provisoirement..
j'ai emprunté le pc d'un collègue, voici le même fichier en excel, et j envoie un pdf en plus.... désolé... à vbientôt...Nicolas
 

Pièces jointes

  • exemple.xlsx
    6.8 KB · Affichages: 4
  • exemple.pdf
    67.6 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour nicolaspoulain77, sylvanu,

Voyez le fichier .xlsm joint et cette fonction VBA :
VB:
Function Comparer(plage As Range, ref As Range) As Boolean
Dim i%, a(), n%
Comparer = True
For i = 1 To plage.Count
    If IsNumeric(plage(i)) Then
        ReDim Preserve a(n)
        a(n) = Application.Match(plage(i), ref, 0) 'EQUIV
        If n Then If a(n) <= a(n - 1) Then Comparer = False: Exit For
        n = n + 1
    End If
Next
End Function
Le code est placé impérativement dans un module standard.

Formule en W4 à tirer vers le bas =SI(Comparer(C4:V4;C$10:V$10);"ordre";1)

A+
 

Pièces jointes

  • exemple.xlsm
    16.9 KB · Affichages: 3

job75

XLDnaute Barbatruc
Sans VBA voici une formule matricielle qui utilise la fonction JOINDRE.TEXTE :
Code:
=SI(JOINDRE.TEXTE(" ";VRAI;SI(ESTNUM(C4:V4);C4:V4;""))=JOINDRE.TEXTE(" ";VRAI;SI(NB.SI(C4:V4;C$10:V$10);C$10:V$10;""));"ordre";1)
Cette fonction n'est disponible que sur Excel 2019 et versions suivantes.
 

Pièces jointes

  • exemple.xlsx
    10.6 KB · Affichages: 3

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 180
dernier inscrit
Vcr