Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche renvoyant une matrice

4 réponses
Avatar
Patrick BASTARD
Bonsoir à tous.

Je patauge laaamentablement sur une formule matricielle, et votre aide
serait la bienvenue.
Un tableau de données
En ligne 9, un libellé
En colonne D, des codes triés alpha, mais non uniques sur 3 caractères
A l' intersection des lignes et des colonnes, soit un x, soit un 0

Je cherche à obtenir, en fonction d'un code saisi en A3 les valeurs de la
ligne 9 correspondant à chaque intersection d'un X et dudit code.
Comme j'ai l'impression de n'être pas très clair dans mes explications, je
joins un exemple simplifié de mon fichier.
http://cjoint.com/?bCvQGmlxAo

D'avance, merci pour toute idée.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.

4 réponses

Avatar
Trirème
Bonjour Patrick,
J'ai peu d'espoir que le résultat se fasse avec une seule formule. Si elle
arrive (la formule) elle sera certainement incompréhensible et difficilement
adaptable.
Il me semble que les codes évènementiels sont appropriés à ta situation. Je te
propose donc ces instructions à copier dans le code de l'onglet (clic droit sur
l'onglet, visualiser le code, copier...)
(Attention aux coupures de lignes intempestives)
Les références "en dur" correspondent à ton fichier exemple

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$3" Then
Application.EnableEvents = False
Target = UCase(Target) ' La saisie en minuscule est convertie en majuscule
Application.EnableEvents = True

c1Compt = 0 ' compteur dans la colonne
Occur = 0 ' Nb occurences trouvées
' Effacer les données déjà présentes quand il y en a
Range("A4:A13").ClearContents ' en effaçant une plage fixe
' ou encore, en effaçant juste les données précédemment écrites :
' If Range("A4") <> "" Then Range(Range("A4"),
Range("A4").End(xlDown)).ClearContents

For Each c1 In Range("D11:D22") ' Prévoir de nommer les plages
If c1 = [A3] Then
c2Compt = 0 ' compteur dans la ligne
For Each c2 In Range("H11:R22").Offset(c1Compt).Resize(1)
If UCase(c2) = "X" Then
Occur = Occur + 1
[A3].Offset(Occur) = Range("H9").Offset(, c2Compt)
End If
c2Compt = c2Compt + 1
Next
End If
c1Compt = c1Compt + 1
Next
If Occur > 1 Then ' On trie les résultats quand il y en a plusieurs
Range("A4").Resize(Occur).Sort Key1:=Range("A4"), Order1:=xlAscending,
HEADER:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If
End If
[A3].Select ' Prêt à une nouvelle saisie
End Sub

Cordialement,
Trirème

Bonsoir à tous.

Je patauge laaamentablement sur une formule matricielle, et votre aide
serait la bienvenue.
Un tableau de données
En ligne 9, un libellé
En colonne D, des codes triés alpha, mais non uniques sur 3 caractères
A l' intersection des lignes et des colonnes, soit un x, soit un 0

Je cherche à obtenir, en fonction d'un code saisi en A3 les valeurs de la
ligne 9 correspondant à chaque intersection d'un X et dudit code.
Comme j'ai l'impression de n'être pas très clair dans mes explications, je
joins un exemple simplifié de mon fichier.
http://cjoint.com/?bCvQGmlxAo

D'avance, merci pour toute idée.



Avatar
ChrisV
Bonjour Patrick,

Selon les données de ton exemple, et avec les plages D11:D22 nommée ici
"coD", et H11:N22 nommée ici "Zn"
(à saisir sans les { } et valider par Ctrl+Shift+Entrée, sur une plage de 7
cellules verticales, A4:A10)

{=SI(ESTERR(PETITE.VALEUR(SI((Zn="X")*(coD£);COLONNE(Zn));LIGNE
(INDIRECT("1:"&LIGNES(coD)))));"";INDIRECT(SUBSTITUE(ADRESSE(1;
PETITE.VALEUR(SI((Zn="X")*(coD£);COLONNE(Zn));LIGNE(INDIRECT
("1:"&LIGNES(coD))));4);"1";"")&9))}

Pour un tri alpha, tout à fait possible d'ailleurs, mais qui risque de
rendre un peu moins digeste encore la formule, je laisse la main aux
sommeprodistes un peu absents sur ce coup là... ;-)


ChrisV


"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je patauge laaamentablement sur une formule matricielle, et votre aide
serait la bienvenue.
Un tableau de données
En ligne 9, un libellé
En colonne D, des codes triés alpha, mais non uniques sur 3 caractères
A l' intersection des lignes et des colonnes, soit un x, soit un 0

Je cherche à obtenir, en fonction d'un code saisi en A3 les valeurs de la
ligne 9 correspondant à chaque intersection d'un X et dudit code.
Comme j'ai l'impression de n'être pas très clair dans mes explications, je
joins un exemple simplifié de mon fichier.
http://cjoint.com/?bCvQGmlxAo

D'avance, merci pour toute idée.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.



Avatar
Patrick BASTARD
Bonjour, *ChrisV*


Merci infiniment pour la solution que tu m'apportes.
Ce problème est maintenant résolu.

Il n'en va toutefois pas de même pour le nouveau problème que tu me poses :
Va maintenant me falloir tout un week-end (et je suis optimiste) pour
décortiquer ta formule et tenter de la comprendre.

Blague à part, (quoi que...) encore merci.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.


Bonjour Patrick,

Selon les données de ton exemple, et avec les plages D11:D22 nommée
ici "coD", et H11:N22 nommée ici "Zn"
(à saisir sans les { } et valider par Ctrl+Shift+Entrée, sur une
plage de 7 cellules verticales, A4:A10)

{=SI(ESTERR(PETITE.VALEUR(SI((Zn="X")*(coD£);COLONNE(Zn));LIGNE
(INDIRECT("1:"&LIGNES(coD)))));"";INDIRECT(SUBSTITUE(ADRESSE(1;
PETITE.VALEUR(SI((Zn="X")*(coD£);COLONNE(Zn));LIGNE(INDIRECT
("1:"&LIGNES(coD))));4);"1";"")&9))}

Pour un tri alpha, tout à fait possible d'ailleurs, mais qui risque de
rendre un peu moins digeste encore la formule, je laisse la main aux
sommeprodistes un peu absents sur ce coup là... ;-)


ChrisV


"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je patauge laaamentablement sur une formule matricielle, et votre
aide serait la bienvenue.
Un tableau de données
En ligne 9, un libellé
En colonne D, des codes triés alpha, mais non uniques sur 3
caractères A l' intersection des lignes et des colonnes, soit un x, soit
un 0

Je cherche à obtenir, en fonction d'un code saisi en A3 les valeurs
de la ligne 9 correspondant à chaque intersection d'un X et dudit
code. Comme j'ai l'impression de n'être pas très clair dans mes
explications, je joins un exemple simplifié de mon fichier.
http://cjoint.com/?bCvQGmlxAo

D'avance, merci pour toute idée.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.




Avatar
ChrisV
;-)

ChrisV


"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *ChrisV*


Merci infiniment pour la solution que tu m'apportes.
Ce problème est maintenant résolu.

Il n'en va toutefois pas de même pour le nouveau problème que tu me poses
:
Va maintenant me falloir tout un week-end (et je suis optimiste) pour
décortiquer ta formule et tenter de la comprendre.

Blague à part, (quoi que...) encore merci.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.


Bonjour Patrick,

Selon les données de ton exemple, et avec les plages D11:D22 nommée
ici "coD", et H11:N22 nommée ici "Zn"
(à saisir sans les { } et valider par Ctrl+Shift+Entrée, sur une
plage de 7 cellules verticales, A4:A10)

{=SI(ESTERR(PETITE.VALEUR(SI((Zn="X")*(coD£);COLONNE(Zn));LIGNE
(INDIRECT("1:"&LIGNES(coD)))));"";INDIRECT(SUBSTITUE(ADRESSE(1;
PETITE.VALEUR(SI((Zn="X")*(coD£);COLONNE(Zn));LIGNE(INDIRECT
("1:"&LIGNES(coD))));4);"1";"")&9))}

Pour un tri alpha, tout à fait possible d'ailleurs, mais qui risque de
rendre un peu moins digeste encore la formule, je laisse la main aux
sommeprodistes un peu absents sur ce coup là... ;-)


ChrisV


"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je patauge laaamentablement sur une formule matricielle, et votre
aide serait la bienvenue.
Un tableau de données
En ligne 9, un libellé
En colonne D, des codes triés alpha, mais non uniques sur 3
caractères A l' intersection des lignes et des colonnes, soit un x, soit
un 0

Je cherche à obtenir, en fonction d'un code saisi en A3 les valeurs
de la ligne 9 correspondant à chaque intersection d'un X et dudit
code. Comme j'ai l'impression de n'être pas très clair dans mes
explications, je joins un exemple simplifié de mon fichier.
http://cjoint.com/?bCvQGmlxAo

D'avance, merci pour toute idée.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.